リカバリの開始/終了時刻を指定するには、DATETIME
形式で、mysqlbinlog に
--start-date
と --stop-date
を指定します。たとえば、2005 年 4 月 20
日の午前 10:00 時に、何らかの SQL
ステートメントの実行で大きなテーブルが削除された、とします。このテーブルとデータをリストアするには、前夜のバックアップをリストアして、次のコマンドを実行します。
shell>mysqlbinlog --stop-date="2005-04-20 9:59:59" \
/var/log/mysql/bin.123456 | mysql -u root -p
このコマンドは、--stop-date
オプションで指定した日時までのデータすべてをリカバリします。時間分の
SQL
ステートメントの大部分を探し当てることができない場合は、その部分のアクティビティをリカバリします。これを元に、mysqlbinlog
を開始日時で再度実行します。次はその例です。
shell>mysqlbinlog --start-date="2005-04-20 10:01:00" \
/var/log/mysql/bin.123456 | mysql -u root -p
このコマンドでは、午前 10:01 時以降にログした SQL ステートメントを再実行します。前夜のダンプ ファイルのリストアと、この 2 つの mysqlbinlog コマンドの組み合わせで、午前 10:00 時の一秒前までのすべてと、午前 10:01 以降のすべてのリストアします。このコマンドを使用するときは、指定する時間をログ ファイルで十分に確認してください。ログ ファイルを実行せずに、内容だけを表示するには、次のコマンドを使用します。
shell> mysqlbinlog /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
そして、そのファイルをテキスト エディタなどで開けて、確認します。