.sqlすべてのトリガーとプロシージャを含むMySQLデータベースダンプ(ファイル)を作成するにはどうすればよいですか?
回答:
mysqldumpデフォルトではすべてのトリガーをバックアップしますが、ストアドプロシージャ/関数はバックアップしません。この動作を制御する2つのmysqldumpパラメーターがあります。
--routines –デフォルトではFALSE--triggers –デフォルトでTRUEしたがって、mysqldumpコマンドで、次の--routinesように追加します。
mysqldump <other mysqldump options> --routines > outputfile.sql
mysqldump引数についてはMySQLのドキュメントを参照してください。
-routines代わりに言うの--routinesですか?
--routinesただし、ユーザーがmysql.procテーブルへの十分なアクセス権を持っている場合にのみ機能します。GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
MYSQLのエキスパートユーザーにとっては明らかかもしれませんが、デフォルト値が関数をエクスポートしないことを理解しようとしている間、私は時間を無駄にしました。そこで、ここで、-routinesparamをtrueに設定して機能させる必要があることに言及しようと思いました。
mysqldump --routines=true -u <user> my_database > my_database.sql
次のスクリプトを作成しましたが、問題なく動作しました。
#! /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