増分バックアップは,前回のバックアップ以降に変更のあったデタだけをバックアップします。この手法は,バックアップ戦略の設計での柔軟性を高め,バックアップに必要なストレ,ジを軽減します。
増分バックアップは通常,完全バックアップより小さく,時間がかからないため,頻繁なバックアップジョブに適しています。増分バックアップを頻繁に取得しておけば、常にデータベースを、数時間または数日前と同じ状態にリストアでき、完全バックアップを頻繁に取得する場合と同じだけのデータベースサーバーでのロードまたはストレージオーバーヘッドは不要になります。
増分バックアップは常に既存のバックアップファイルのセットに追加するため,増分バックアップを行う前に,少なくとも1つの完全バックアップを作成してください。
増分バックアップは,mysqlbackupコマンドのオプションで有効になります。単純な増分バックアップの場合,——增量
オプションを指定します。代わりの方法では,——incremental-with-redo-log-only
オプションを使用しますが,ユザ側で追加の計画が必要になります。
また,前の完全または増分バックアップの特定の時点を指定します。便宜上、——incremental-base
オプションを使用して,前のバックアップディレクトリに格納されたメタデタから必要なログシケンス番号(lsn)を自動的に取得できます。または,——start-lsn
オプションを使用し,前の完全または増分バックアップから終了LSNを使用して明確なLSN値を指定できます。
バックアップデータをリストアする準備を行うには,各増分バックアップを元の完全バックアップと組み合わせます。通常,指定された期間の経過後に新しい完全バックアップを実行し,そのあとで古い増分バックアップデータを破棄できます。
増分バックアップの「ログの適用」手順を実行するときに,オプションシケンス——增量运用原木
と,2のMySQL構成ファ(最初に,更新している完全バックアップを指す.cnf
ファopenstackルと,次に増分バックアップデopenstackタファopenstackルを指す.cnf
ファ和ル)を指定します。前回の完全バックアップ以降に複数の増分バックアップを取得していた場合は,このような「ログの適用」ステップを順に複数実行して,完全バックアップを完全に最新の状態にすることができます。
増分バックアップの領域に関する考慮事項
増分バックアップ機能は主に,InnoDBテーブルや,読み取り専用またはまれにしか更新されない非InnoDBテーブルを対象としています。非InnoDBファイルでは,前回のバックアップ以降にファイルに変更があった場合,ファイル全体が増分バックアップに含まれます。
——压缩
オプションでは増分バックアップを実行できません。
増分バックアップは,テ,ブルの行ではなく,InnoDBデタファ内のページのレベルで変更を検出します。変更のあった各ペジがバックアップされます。したがって,領域と時間の節約は,変更されたInnoDBの行またはカラムの割合に正確には比例しません。
増分バックアップの例
この例では,mysqlbackupコマンドを使用して,すべてのデータベースとテーブルを含むMySQL服务器の増分バックアップを作成します。——incremental-base
オプションを使用したものと,——start-lsn
オプションを使用したものの2の代替例を示します。
——incremental-base
オプションを使用した場合,あるバックアップと次のバックアップの間でLSN値を追跡する必要はありません。代わりに,前回のバックアップ(完全または増分)のディレクトリを指定し,mysqlbackupが,以前のバックアップのメタデタに基づいてこのバックアップの開始点を算出します。既知のディレクトリ名のセットが必要なため,——with-timestamp
オプションを使用するのではなく,ハードコード化された名前を使用するか,自身のバックアップスクリプトで名前のシーケンスを生成することができます。
$ mysqlbackup——defaults-file=/home/pekka/.my.cnf——incremental \——increment -base=dir:/incr-backup/wednesday \——increment -backup-dir=/incr-backup/thursday \ backup…很多行输出…mysqlbackup: Backup created in directory '/incr-backup/thursday' mysqlbackup: start_lsn: 2654255717 mysqlbackup: incremental_base_lsn: 2666733462 mysqlbackup: end_lsn: 2666736714 101208 17:14:58 mysqlbackup: mysqlbackup completed OK!
——start-lsn
オプションでは,前回のバックアップのLSNを記録する必要がありますが,前回のバックアップの場所があまり重要でないため,——with-timestamp
を使用して,名前の付けられたサブディレクトリを自動的に作成することができます。
$ mysqlbackup——defaults-file=/home/pekka/.my.cnf——incremental \——start-lsn=2654255716 \——with-timestamp \——increment -backup-dir=/incr-backup \ backup…很多行输出…mysqlbackup: Backup created in directory '/incr-backup/2010-12-08_17-14-48' mysqlbackup: start_lsn: 2654255717 mysqlbackup: incremental_base_lsn: 2666733462 mysqlbackup: end_lsn: 2666736714 101208 17:14:58 mysqlbackup: mysqlbackup completed OK!
——增量
オプションを使用するどの箇所でも,代わりに——incremental-with-redo-log-only
オプションを使用できます。——incremental-with-redo-log-only
は,——增量
オプションより正確なLSNに依存する程度が大きいため,この種の増分バックアップには,——start-lsn
オプションではなく——incremental-base
オプションを使用してください。
このような代わりの増分バックアップが機能するには,前回の増分バックアップ以降のすべての変更が重做ログに存在し,上書きされないようにする必要があるため,変更された情報が十分に少量で,重做ログファ邮箱ルが十分に大きいことが必要です。これらの要件を検証する方法にいては,——incremental-with-redo-log-only
オプションの説明を参照してください。
$ mysqlbackup——defaults-file=/home/pekka/.my.cnf——incremental \——increment -base=dir:/incr-backup/wednesday \——increment -backup-dir=/incr-backup/thursday \ backup…很多行输出…mysqlbackup: Backup created in directory '/incr-backup/thursday' mysqlbackup: start_lsn: 2654255717 mysqlbackup: incremental_base_lsn: 2666733462 mysqlbackup: end_lsn: 2666736714 101208 17:14:58 mysqlbackup: mysqlbackup completed OK!
通常の増分バックアップからのファルの一覧にいては,セクションc.3 "増分バックアップのディレクトリ構造例"を参照してください。
もう一度,バックアップを実行していた間に行われた変更を,完全バックアップに適用します。
$ mysqlbackup——backup-dir=/full-backup/2010-12-08_17-14-11 apply-log ..很多行输出…101208 17:15:10 mysqlbackup: Full backup prepared for recovery successfully!101208 17:15:10 mysqlbackup: mysqlbackup completed OK!
続いて,増分バックアップから変更を適用します。
$ mysqlbackup——increment -backup-dir=/incr-backup/2010-12-08_17-14-48——backup-dir=/full-backup/2010-12-08_17-14-11 apply-increment -backup…很多行输出…101208 17:15:12 mysqlbackup: mysqlbackup completed OK!
これで,完全バックアップディレクトリ内のデータファイルは全面的に,前回の増分バックアップ時点の最新の状態になっています。
この例には増分バックアップが示されています。前回実行した完全バックアップで,もっとも高いLSNが2638548215だったことがレポトされました。
mysqlbackup:能够解析到lsn 2638548215的日志
ここではコマンドでもう一度その番号を指定します。増分バックアップには,指定したLSNの後に行われたすべての変更が含まれます。
$ mysqlbackup——defaults-file=/home/pekka/.my.cnf——incremental \——start-lsn=2638548215 \——increment -backup-dir=/incr-backup/2010-12-08_17-14-48 \——backup-dir=/full-backup/2010-12-08_17-14-11 \ backup…很多行输出…mysqlbackup:扫描日志到lsn 2654252454。mysqlbackup:能够解析到lsn 2654252454的日志。mysqlbackup:备份包含从lsn 2638548216到lsn 2654252454 101208 17:12:24的变化mysqlbackup:增量备份完成!
次のステップ:
mysqlbackup:能够解析到lsn的日志
などの,バックアップの終わりに表示されるメッセジ内のLSN値を書き留めてください。この増分バックアップのあとに行われた変更の増分バックアップを実行するときに,この値を指定します。LSN_number
いでもバックアップをリストアできるよう,バックアップファルに増分バックアップを適用します。最初にバックアップデータを別のサーバーに移動して,データベースサーバー自体でのこの操作のCPUおよびI / Oオーバーヘッドを回避できます。
定期的に,デ,タベ,スアクティビティ,の日付または量で判断し,さらに増分バックアップを取得します。
オプションで,完全、非圧縮,または圧縮バックアップを取得することによって、サ以及クルを定期的に開始しなおしてください。通常,このマイルストーンは,もっとも古いバックアップデータをアーカイブおよびクリアできるときに行われます。