mysqldumpリストア手順

mysqldumpファイルを/restore/tmp/mysqldumpファイル.sqlとしたとき、次のコマンドでリストアするというのが一般的に知られた方法です。

# mysql -u root < /restore/tmp/mysqldumpファイル.sql

果たして、実用上配慮すべきことも含めて、どうするのがベターなのかということを考えてみました。 実用上はmysqlをバイナリログを出力する設定で稼動させると思いますので、ある問題が発生します。 mysqldumpファイルのリストア処理で実行されるSQL文は相当の数になり、データベースに対する更新が大量に発生します。その実行結果として、バイナリログにメッセージが大量に吐き出され、バイナリログファイルが肥大化します。多くのケースでは歓迎されないことです。

という点に配慮すると、次のようにmysqlコマンドプロンプトに入り、そのセッションだけバイナリログを出力しない設定を行った上で、mysqldumpファイルをリストアするという方法がベター。

# mysql -u root -p -s ←オプション s を付ける Enter password: ←パスワードを入力 mysql> set sql_bin_log=OFF; ←このセッションでは、バイナリログ出力を行わない設定に変更 mysql> source /restore/tmp/mysqldumpファイル.sql mysql> quit

ちなみに、mysqlコマンドの sオプションは、mysqlプロンプトでの実行結果を表示しないようにするためのものです。これを指定しないと、”Query OK, 0 rows affected (0.00 sec)”などのメッセージが大量に画面に表示されることになります。