Как экспортировать/удалять базу данных mysql со всеми триггерами и процедурами.
Как экспортировать базу данных MySQL с помощью триггеров и процедур?
Ответ 1
mysqldump
будет резервировать по умолчанию все триггеры, но НЕ хранимые процедуры/функции. Есть 2 параметра mysqldump, которые управляют этим поведением:
--routines
- ЛОЖЬ по умолчанию--triggers
- TRUE по умолчанию
поэтому в команду mysqldump
добавьте --routines
как:
mysqldump <other mysqldump options> --routines > outputfile.sql
читайте больше в этой статье
Ответ 2
Может быть, это очевидно для опытных пользователей MYSQL, но я потратил немного времени, пытаясь выяснить, что значение по умолчанию не экспортирует функции. Поэтому я решил упомянуть здесь, что --routines параметр должен быть установлен в true, чтобы он работал.
mysqldump --routines=true -u <user> my_database > my_database.sql
Ответ 3
Я создал следующий скрипт, и он отлично сработал.
#! /bin/sh
cd $(dirname $0)
DB=$1
DBUSER=$2
DBPASSWD=$3
FILE=$DB-$(date +%F).sql
mysqldump --routines "--user=${DBUSER}" --password=$DBPASSWD $DB > $PWD/$FILE
gzip $FILE
echo Created $PWD/$FILE*
и вы вызываете скрипт, используя аргументы командной строки.
backupdb.sh my_db dev_user dev_password