2016-10-18 7 views
0

バイナリインデックスファイル(https://dev.mysql.com/doc/refman/5.6/en/point-in-time-recovery.html)と同様にMYSQLバイナリログファイルもあります。多くのmysql binログファイルからデータベースを回復します

ファイルは次のようになります。log-bin.000001,log-bin.000002log-bin.000003

/path/to/mysql-bin-dump-logs/log-bin.000001 
/path/to/mysql-bin-dump-logs/log-bin.000002 
/path/to/mysql-bin-dump-logs/log-bin.000003 

ドキュメントによると、これらのログファイルを使用して、私のデータベースを復旧する方法はそうのようなものです::

mysqlbinlog log-bin.000001 log-bin.000002 log-bin.000003 | mysql -u root -p 

これは

また、私はそうのように見えるlog-bin.indexファイルを持っています少数のファイルを回復するときにそれほど悪くないが、多くのファイル(例えば1000個のログファイル)から回復する際には大きな不便さがある。

すべてのファイルを明示的に指定せずにデータベースを復元するにはどうすればよいですか?

答えて

1

定期的にバックアップを作成します。

バイナリログは、バックアップを作成した時点のものに戻してください。

バックアップツールには、バイナリログファイルとバックアップの実行時の現在の位置を記録するオプションがあります。たとえば、次のようになど、データベースの変更の履歴は、いくつかの更新と削除が含ま場合は特に、データベースが非効率的である回復テーブルを変更し、テーブルをドロップするだけで、バイナリログを使用して

mysqldump --master-data=1 ... 

バイナリログリプレイので、すべての後で逆転したり削除されたものであっても、変更されます。

データベースバックアップを使用すると、バックアップの前に行われた数百日間の変更をすべてスキップして、データの現在の状態のみが記録されます。

バックアップを復元する方がはるかに高速で、何千ものバイナリログファイルを永久に保存する必要はありません。


は文字通り、どのように1000個のファイルに対してmysqlbinlogは実行するために便利な、あなたは findxargsを使用することができ、あなたの質問に答えるために:これは、増分バックアップである

find . -name 'log-bin.[0-9]*' | sort | xargs mysqlbinlog | mysql -u root -p 
+0

。だから私はこれがこのケースでは関係ないと思う。 –

+0

いくつかのバックアップツールも増分バックアップをサポートしている。例:https://www.percona.com/doc/percona-xtrabackup/2.2/xtrabackup_bin/incremental_backups.html –

関連する問題