Я хочу создавать ежечасную резервную копию нашей базы данных MySQL в промежуточной системе с помощью Percona XtraBackup.
Можно ли подготовить $ BACKUPBASE, а затем использовать эту подготовленную базу резервных копий в качестве основы для следующего инкрементного резервного копирования (с использованием параметра incremental-lsn)?
В моих планах:
затем каждый час:
интегрировать инкрементную резервную копию в $ BACKUPBASE, используя
innobackupex --apply-log $BACKUPBASE --incremental-dir=$INCREMENTALDIR
innobackupex --apply-log $BACKUPBASE
удалить $ INCREMENTALDIR
Чтобы быть более конкретным:
Нет, потому что вышеупомянутый --apply-log не обновляет LSN в xtrabackup_checkpoints, поэтому при каждом следующем инкрементном резервном копировании будут копироваться страницы, измененные с момента последнего полного резервного копирования. Это не то, чего вы хотите достичь
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 }'`
Применить журнал xtrabackup 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 (/etc/mysql/my.cnf для Debian))
chown -R mysql /var/lib/mysql
Запустить MySQL
/etc/init.d/mysql start