XtraBackup ile full + incremental fiziksel yedek ve restore
MySQLYedekleme & PITRKomut
# Full backup
xtrabackup --backup --host=127.0.0.1 --user=bkp --password='Bkp#2024' --target-dir=/backup/full --parallel=4
# Incremental (bir oncekini taban alir)
xtrabackup --backup --host=127.0.0.1 --user=bkp --password='Bkp#2024' --target-dir=/backup/inc1 --incremental-basedir=/backup/full
# Prepare: full ve ara incremental'lar --apply-log-only ile, son adim onsuz
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 durmus ve datadir bos olmali
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_infoNe yapar?
Sunucu çalışırken InnoDB dosyalarını ve redo log'u kopyalayarak hot fiziksel yedek alır; incremental yedek yalnız son yedekten sonra değişen sayfaları içerir. Prepare adımı redo'yu uygulayıp yedeği tutarlı hale getirir.
Ne zaman kullanılır?
Büyük veritabanlarında hızlı restore gerektiğinde (mantıksal yedekten kat kat hızlı), replika kurmak için ve günlük full + saatlik incremental stratejisinde.
Dikkat
XtraBackup sürümü sunucu sürüm serisiyle eşleşmeli (8.0 sunucu → XtraBackup 8.0, 8.4 → 8.4); sunucu, kullanılan XtraBackup'tan yeni bir redo / data dictionary formatına geçmişse yedek reddedilir. Prepare edilmemiş yedek tutarsızdır. Ara adımlarda --apply-log-only unutulursa sonraki incremental uygulanamaz. Restore'da datadir boş olmalı; --move-back disk kazandırır ama yedeği tüketir. Yedek kullanıcısı: BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ve performance_schema.log_status, keyring_component_status, replication_group_members üzerinde SELECT.