Полный + инкрементальный физический бэкап и восстановление через 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 log во время работы сервера; инкрементальный бэкап содержит только страницы, изменённые с предыдущего бэкапа. Шаг prepare применяет redo и делает бэкап согласованным.
Когда использовать
Для больших баз, которым нужно быстрое восстановление (в разы быстрее логического), для создания реплик и для стратегий ежедневный full + ежечасный incremental.
Внимание
Версия XtraBackup должна соответствовать серии релизов сервера (сервер 8.0 → XtraBackup 8.0, 8.4 → 8.4); если сервер использует более новый формат redo / словаря данных, чем сборка XtraBackup, бэкап будет отклонён. Неподготовленный (без prepare) бэкап несогласован. Если забыть --apply-log-only на промежуточных шагах, последующие инкрементальные бэкапы станут непригодными. Для восстановления datadir должен быть пустым; --move-back экономит диск, но расходует бэкап. Пользователь для бэкапа: BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT и SELECT на performance_schema.log_status, keyring_component_status, replication_group_members.