0

MYSQL バイナリ ログ ファイルとバイナリ インデックス ファイル ( https://dev.mysql.com/doc/refman/5.6/en/point-in-time-recovery.html ) があります。

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

log-bin.index次のようなファイルもあります。

/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

これは、少数のファイルを復元する場合にはそれほど問題ではありませんが、多数のファイル (たとえば、1000 個のログ ファイル) から復元する場合には大きな不便です。

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

4

1 に答える 1

0

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

バイナリ ログを再生して、バックアップを作成した時点の最新のログに戻すだけです。

バックアップ ツールには、バイナリ ログ ファイルとバックアップ実行時の最新の位置を記録するオプションがあります。例えば:

mysqldump --master-data=1 ...

バイナリ ログのみを使用してデータベースを回復するのは非効率的です。特に、データベースの変更履歴に更新と削除、テーブルの変更、テーブルの削除などが含まれている場合は、効率的ではありません。

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

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


1000 個のファイルに対して mysqlbinlog を便利に実行する方法など、文字通り質問に答えるには、findandを使用できxargsます。

find . -name 'log-bin.[0-9]*' | sort | xargs mysqlbinlog | mysql -u root -p
于 2016-10-18T21:37:40.370 に答える