1 minute read

В этой части мы расскажем о том, как можно развернуть резервную копию базы данных самостоятельно на отдельном сервере с помощью инструмента Percona XtraBackup.

В MariaDB 10.1 и более поздних версиях mariabackup является рекомендуемым методом резервного копирования для использования вместо Percona XtraBackup.

Пример скрипта для бекапа с помощью innobackupex:

#!/bin/bash
BACKUPDIR=/var/backup/
MYCNF=/etc/my.cnf
INNOBACKUPEX=/usr/bin/innobackupex
USEROPTIONS="--user=root --password=PWD"
LOGFILE=/var/backup/xtrabackup.log
BKPFILE=/var/backup/mysql.full.tar.gz
if [ ! -d "$BACKUPDIR" ]; then
  mkdir -p $BACKUPDIR
fi
if [ -f "$BKPFILE" ]; then
  rm -rf $BKPFILE
fi
if [ ! -s "$LOGFILE" ]; then
     touch $LOGFILE
fi
$INNOBACKUPEX --defaults-file=$MYCNF --host=127.0.0.1 $USEROPTIONS --stream=tar ./ 2> $LOGFILE | pigz -p 5 > $BACKUPDIR/mysql.full.tar.gz

На выходе получаем бекап в /var/backup/mysql.full.tar.gz.

Для восстановления бекапа:

1 Переносим бекап на новый сервер

        rsync -av /var/mariabackup/fri/mysql.full.tar.gz  root@new-server:/tmp/ 

2 Распаковываем архив

        tar --use-compress-program=pigz -xif /tmp/mysql.full.tar.gz  -C /tmp/mysql

3 Чтобы подготовить резервную копию с помощью innobackupex, вы должны использовать –apply-log и путь к каталогу резервных копий в качестве аргумента:

        innobackupex --apply-log --use-memory=4G /tmp/mysql

4 Перемещаем файлы с резервной копии в корень mysql, –move-back удаляет файлы резервной копии

        innobackupex --move-back /tmp/mysql

5 Восстанавливаем права

        chmod 755 /var/lib/mysql
        chown -R mysql:mysql /var/lib/mysql
        chown -R mysql:mysql /var/log/mysql
        chown -R mysql:mysql /tmp/mysql
        find /var/lib/mysql -type d -exec chmod 750 {} \;

6 Запускаем сервер

Бекап крупной БД не всегда можно сделать локально, для таких целей существует функция потоковой передачи на резервный сервер.

   innobackupex --defaults-file=/etc/my.cnf.d/server.cnf  --host=127.0.0.1 --user=root --password=PWD --stream=tar ./  2> /var/log/xtrabackup.log | ssh root@new-server \ "cat - > /tmp/mysql.full.tar"

После чего нужно использовать команды 2-6 и запустить сервер.

Tags:

Categories:

Updated: