mysqldumpを使って定期的にデータをバックアップするのが常にベストです:
mysqldump -uroot -proot -lF --log-error=/root/myDump.err -B dev> /root/BAK.dev.sql
バックアップをリストアします:
mysql -uroot -proot -v < /root/BAK.dev.sql
さらに、導入されたbinlogをトラブルシューティングやより詳細なリカバリのために使用することができます。
flush logs;
現在使用されているログを確認することができます。
show master status;
数字の-1は問題のあるログです。
説明した方法でログを表示するには
mysql> show binlog events in 'mysql-bin.000023';
どのポスポイントに問題があるかを確認したら、リカバリ構文を使用してデータをリカバリできます:
mysqlbinlog mysql-bin.0000xx | mysql -u username -p password データベース名
よく使われるオプション
--start-position=xxx 開始位置
--stop-position=xxx 終了位置
--start-datetime="xxxx-11-29 13:18:54" start-position
--stop-datetime="xxxx-11-29 13:21:53" 終了位置
--database=hap_dev hap_devデータベースのみをリストアするように指定します。概要:binlogログの実際の内容はパイプライナー経由で読み込まれ、mysqlコマンドに渡されます。これらのコマンド、ファイルは絶対パスで書き込もうとします;
挿入ステートメントが実行され、その後手動でデータベースから削除され、バックアップに含まれていないことがわかります。
データが再挿入されていることがわかります。
まとめると、binlogは記録されたSQL文に従ってデータを回復し、ちょっとした修復を行うためにしか使えません。