XtraBackupによる全体 + 増分の物理バックアップとリストア
MySQLバックアップとPITRコマンド
# Full backup
xtrabackup --backup --host=127.0.0.1 --user=bkp --password='Bkp#2024' --target-dir=/backup/full --parallel=4
# Incremental (based on the previous backup)
xtrabackup --backup --host=127.0.0.1 --user=bkp --password='Bkp#2024' --target-dir=/backup/inc1 --incremental-basedir=/backup/full
# Prepare: full and intermediate incrementals with --apply-log-only, final step without it
xtrabackup --prepare --apply-log-only --target-dir=/backup/full
xtrabackup --prepare --apply-log-only --target-dir=/backup/full --incremental-dir=/backup/inc1
xtrabackup --prepare --target-dir=/backup/full
# Restore: mysqld stopped and datadir empty
systemctl stop mysqld
xtrabackup --copy-back --target-dir=/backup/full --datadir=/var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld
cat /backup/full/xtrabackup_binlog_info概要
サーバーの稼働中にInnoDBファイルとREDOログをコピーしてホット物理バックアップを取得する。増分バックアップには前回のバックアップ以降に変更されたページのみが含まれる。prepareの手順でREDOを適用し、バックアップを一貫した状態にする。
使用する場面
高速なリストア(論理より何倍も高速)が必要な大規模データベース、レプリカの初期化、日次全体 + 毎時増分の戦略に。
注意
XtraBackupのバージョンはサーバーのリリースシリーズと一致する必要がある(8.0サーバー → XtraBackup 8.0、8.4 → 8.4)。サーバーがXtraBackupのビルドより新しいREDO/データディクショナリ形式を使用している場合、バックアップは拒否される。prepareしていないバックアップは一貫性がない。中間の手順で--apply-log-onlyを忘れると、以降の増分が使用できなくなる。リストアにはdatadirが空である必要がある。--move-backはディスクを節約するがバックアップを消費する。バックアップユーザー: BACKUP_ADMIN、PROCESS、RELOAD、LOCK TABLES、REPLICATION CLIENT、およびperformance_schema.log_status、keyring_component_status、replication_group_membersに対するSELECT。