Percona XtraBackupを使用して、MySQLデータベースのステージングシステムへの1時間ごとのバックアップを作成したいと思います。
$ BACKUPBASEを準備してから、この準備されたバックアップベースを次の増分バックアップのベースとして使用することは可能ですか(incremental-lsnオプションを使用)。
私の計画は次のとおりです。
その後、1時間ごと:
を使用して増分バックアップを$ BACKUPBASEに統合します
innobackupex --apply-log $BACKUPBASE --incremental-dir=$INCREMENTALDIR
innobackupex --apply-log $BACKUPBASE
$ INCREMENTALDIRを削除します
具体的には:
いいえ。上記の--apply-logはxtrabackup_checkpointsのLSNを更新しないため、次の増分バックアップごとに、最後の完全バックアップ以降に変更されたページがコピーされます。それはあなたが達成したいことではありません
[〜#〜] upd [〜#〜]
シナリオを実装するには、次のものが必要です。
完全バックアップを取る
innobackupex --no-timestamp /path/full
最後のLSNを保存します
# cat /path/full/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1887987291
last_lsn = 1887987291
compact = 0
to_lsn=`grep to_lsn /path/full/xtrabackup_checkpoints | awk '{ print $3 }'`
エクストラバックアップREDOログを適用する
innobackupex --apply-log --redo-only /path/full/
増分バックアップを取る
innobackupex --no-timestamp --incremental /path/inc/ --incremental-lsn=$to_lsn
最後のLSNを保存
# cat /path/inc/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1887987291
to_lsn = 1887987291
last_lsn = 1887987291
compact = 0
to_lsn=`grep to_lsn /path/inc/xtrabackup_checkpoints | awk '{ print $3 }'`
増分変更とREDOログを適用する
innobackupex --apply-log --redo-only --incremental-dir=/path/inc /path/full/
増分バックアップでディレクトリを削除する
rm -r /path/inc
必要な数だけ4〜7を繰り返します。/path/fullには、データベースの最新バージョンが含まれます。
データベースを復元したいとき
ログの適用を終了します(= REDOログを作成します):
innobackupex --apply-log /path/full
バックアップコピーをdatadirにコピーします
mv /path/full/* /var/lib/mysql
権限を修正します(/path/full/backup-my.cnfのオプションが/etc/my.cnf(Debianの場合は/etc/mysql/my.cnf)のオプションと同じであることを確認します)
chown -R mysql /var/lib/mysql
MySQLを起動します
/etc/init.d/mysql start