Настройка резервного копирования осуществляется с помощью утилиты Percona XtraBackup. Инструкция по установке утилиты доступна на официальном сайте Percona, там же подробная инструкция по использованию программы xtrabackup.
Создание резервной копии
Для создания полного файлового бэкапа следует выполнить команду:
xtrabackup --backup --user=$USER --password=$PASSWORD --history --compress --slave-info --compress-threads=4 --target-dir=$BACKUP_DIR/FULL
где:
- $USER - логин от учетной записи MariaDB
- $PASSWORD - пароль от учетной записи MariaDB
- 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