MySQL 8.0 リファレンスマニュアル


7.3.2 リカバリへのバックアップの使用

今度は、水曜日の午前 8 時に、バックアップからのリカバリが必要な致命的な予期しない終了があるとします。 リカバリするには、まず存在する最後の完全バックアップ (日曜日の午後 1 時のもの) をリストアします。 完全バックアップファイルは一連の SQL ステートメントにすぎないため、そのリストアはきわめて簡単です。

shell> mysql < backup_sunday_1_PM.sql

この時点で、データは日曜日の午後 1 時現在の状態にリストアされます。 それ以降に行われた変更をリストアするには、増分バックアップを使用する必要があります。つまり、gbichot2-bin.000007gbichot2-bin.000008 バイナリログファイルです。 必要に応じて、バックアップされた場所からファイルをフェッチして、次のようにそれらの内容を処理します。

shell> mysqlbinlog gbichot2-bin.000007 gbichot2-bin.000008 | mysql

これで、データを火曜日の午後 1 時現在の状態にリカバリしましたが、まだその日からクラッシュの日までの変更が不足しています。 それらを失わないために、MySQL サーバーにその MySQL バイナリログを、そのデータファイルを格納している場所と異なる安全な場所 (RAID ディスク、SAN など) に保存させ、これらのログが破損したディスク上にないようにする必要がありました。 (つまり、データディレクトリが存在する場所と別の物理デバイス上の場所を指定する --log-bin オプションでサーバーを起動できます。 このようにすると、ディレクトリを格納するデバイスが失われてもログは安全です。) これを実行していた場合、gbichot2-bin.000009 ファイル (および任意の後続のファイル) が手元にあるため、mysqlbinlogmysql を使用して、それらを適用し、クラッシュの瞬間まで損失なく、最新のデータの変更をリストアできます。

shell> mysqlbinlog gbichot2-bin.000009 ... | mysql

mysqlbinlog を使用して、バイナリログファイルを処理する詳細については、セクション7.5「Point-in-Time (増分) リカバリ」を参照してください。


関連キーワード:  バックアップ, リカバリ, テーブル, データ, gbichot, mysqldump, 場所, サーバー, ダンプ, バイナリ