バックアップの実行中にデータを挿入、更新、または削除できるため、バックアップジョブの完了直後は、バックアップファイルは一貫した状態でない可能性があります。これらの初期バックアップファイルは、raw バックアップと呼ばれています。
特定の InnoDB ログシーケンス番号に対応するデータベースの状態を反映するように、バックアップファイルを更新する必要があります。(クラッシュリカバリと同じ種類の操作です。)このステップが完了すると、これらの最終的なファイルは、準備されたバックアップと呼ばれます。
バックアップ中、mysqlbackup は、累積された InnoDB ログを ibbackup_logfile
と呼ばれるファイルにコピーします。このログファイルは、バックアップしたデータファイルを「ロールフォワード」するために使用され、その結果、データファイル内のすべてのページが InnoDB ログの同じログシーケンス番号に対応します。このフェーズは、データファイルに対応する新しい ib_logfiles
も作成します。
raw バックアップを準備されたバックアップに変換するための mysqlbackup オプションは、apply-log
です。バックアップを行なった同じデータベースサーバー上でこのステップを実行するか、または最初に raw バックアップファイルを別のシステムに転送して、データベースサーバー上の CPU またはストレージオーバーヘッドを制限できます。
apply-log
操作によってバックアップ内の元のファイルのいずれも変更されないため、操作が何らかの理由 (ディスク領域の不足など) で失敗しても何も失われません。問題を修復したあと、安全に apply-log
を再試行できます。--force
オプションを指定することによって、失敗した apply-log
操作によって作成されたデータおよびログファイルを上書きできます。
単純なバックアップ (圧縮または増分バックアップを使用しないバックアップ) の場合、オプション backup-and-apply-log
を使用して、初期バックアップと apply-log
ステップを組み合わせることができます。
単一の copy-back-and-apply-log
コマンドで apply-log
と copy-back
(準備されたバックアップをリストア) を実行することもできます。
例 4.2 圧縮バックアップへのログの適用
セクション3.3.3「圧縮バックアップの作成」に示したようにバックアップを圧縮した場合、バックアップにログを適用するときに、mysqlbackup に対して --uncompress
オプションを指定します。
mysqlbackup --backup-dir=/export/backups/compressed --uncompress apply-log
例 4.3 完全バックアップへの増分バックアップの適用
セクション3.3.2「増分バックアップの作成」の説明に従って増分バックアップを取得したあとで、バイナリログから変更を適用する場合と同じ方法で、これらのバックアップファイルに反映された変更を完全バックアップに適用して、完全バックアップを最新の状態にする必要があります。
完全バックアップからのデータファイルを最新の状態にするには、完全バックアップが実行している間に行われたあらゆる変更がデータファイルに含まれるように、最初にログステップを適用します。続いて、増分バックアップからの変更内容を、完全バックアップで生成されたデータファイルに適用します。
mysqlbackup --backup-dir=/export/backups/full apply-log
mysqlbackup --backup-dir=/export/backups/full \
--incremental-backup-dir=/export/backups/incremental \
apply-incremental-backup
これで、full-backup
ディレクトリ内のデータファイルは完全に、増分バックアップの時点の最新の状態になっています。