Настройка резервного копирования осуществляется с помощью утилиты Percona XtraBackup. Инструкция по установке утилиты доступна на официальном сайте Percona, там же подробная инструкция по использованию программы xtrabackup.
Создание резервной копии
Для создания полного файлового бекапа следует выполнить команду:
xtrabackup --backup --user=$USER --password=$PASSWORD --history --compress --slave-info --compress-threads=4 --target-dir=$BACKUP_DIR/FULL
где:
- $USER логин от учетной записи mysql
- $PASSWORD пароль от учетной записи mysql
- compress параметр, который означает что бекап следует сжать
- compress-threads количество параллельных потоков
- target-dir путь, куда будет сохранен бекап бд
После создания полного бекапа, можно выполнять инкрементальный бекап, для этого выполнить команду:
xtrabackup --user=$USER --password=$PASSWORD --backup --history --compress --slave-info --target-dir=$BACKUP_DIR/inc$NUMBER --incremental-basedir=$BACKUP_DIR/FULL
где:
- target-dir указываем путь до инкрементального бекапа
- incremental-basedir указываем путь до полного бекапа
Восстановление из резервной копии
Перед тем как восстановить бекап из резервной копии нужно разархивировать утилитой qpress, которая доступна в репозитории percona и устанавливается командой:
apt install qpress
Далее выполняем разархивирование полного бекапа и инкрементального бекапа:
xtrabackup --decompress --remove-original --parallel=4 --target-dir=$BACKUP_DIR/FULL xtrabackup --decompress --remove-original --parallel=4 --target-dir=$BACKUP_DIR/inc$NUMBER
где:
- decompress указываем что нужно разархивировать
- remove-original удалить архивированные файлы
Дальше нужно выполнить подготовку резервной копии для восстановления:
xtrabackup --prepare --apply-log-only --target-dir=$BACKUP_DIR/FULL
- apply-log-only обязательная опция, если восстанавливаем также из инкрементального бекапа. Без этой опции инкременты станут бесполезны
Далее указываем 1 инкремент
xtrabackup --prepare --apply-log-only --target-dir=$BACKUP_DIR/FULL --incremental-dir=$BACKUP_DIR/inc1
И на последнем инкрементальном бекапе опцию apply-log-only указывать не нужно
xtrabackup --prepare --apply-log-only --target-dir=$BACKUP_DIR/FULL --incremental-dir=$BACKUP_DIR/inc2
Опцию apply-log-only следует использовать при объединении всех инкрементальных бекапом с полным, кроме последнего.
Бекап готов к восстановлению, осталось выполнить перемещение файлов
~/mysql# service mysql stop ~/mysql# mv /var/lib/mysql /var/lib/mysql.old ~/mysql# cp -r /$BACKUP_DIR/FULL /var/lib/mysql ~/mysql# chown -R mysql:mysql /var/lib/mysql ~/mysql# service mysql start