Горячее резервное копирование MySQL с Percona XtraBackup: Full и Incremental бэкапы
- Необходимость создания согласованного бэкапа терабайтных баз данных без перевода в Read-Only.
- Утилита
mysqldumpвызывает всплески Load Average и длительные блокировки метаданных. - Ошибки нехватки дискового пространства или рассинхронизации LSN при инкрементальном копировании.
1. Установка Percona XtraBackup
# Debian / Ubuntu
apt-get install -y percona-xtrabackup-80
# RHEL / Rocky Linux
dnf install -y percona-xtrabackup-802. Создание полного бэкапа (Full Backup)
xtrabackup --backup --user=backup_user --password='StrongPassword' \
--target-dir=/data/backups/base_backup --parallel=4 --compress --compress-threads=43. Создание инкрементального бэкапа (Incremental)
xtrabackup --backup --user=backup_user --password='StrongPassword' \
--target-dir=/data/backups/inc_1 \
--incremental-basedir=/data/backups/base_backup --parallel=44. Подготовка бэкапа к восстановлению (Prepare phase)
# Распаковка (если использовался --compress)
xtrabackup --decompress --target-dir=/data/backups/base_backup
# Подготовка базового бэкапа с незавершенным состоянием транзакций
xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base_backup
# Накатывание инкремента
xtrabackup --prepare --target-dir=/data/backups/base_backup \
--incremental-dir=/data/backups/inc_15. Восстановление данных в директорию MySQL
systemctl stop mysqld
rm -rf /var/lib/mysql/*
xtrabackup --copy-back --target-dir=/data/backups/base_backup
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld Частые вопросы (FAQ)
Зачем нужен флаг --apply-log-only на промежуточных этапах подготовки?
Он указывает не откатывать незавершенные транзакции (rollback), так как они могут быть зафиксированы или дополнены в следующем инкрементальном бэкапе. Без этого флага цепочка инкрементов сломается.
Блокирует ли XtraBackup операции записи во время работы?
Таблицы InnoDB копируются полностью без блокировок. Кратковременная глобальная блокировка на запись (FLUSH TABLES WITH READ LOCK) может активироваться только в самом конце для фиксации таблиц MyISAM и метаданных binlog.