Продвижение по алгоритму 1
Продвижение по алгоритму 2
Linux хостинг

Резервное копирование mysql и mariadb средствами percona XtraBackup

     В статье «Как работает бэкап на хостинге» мы уже обрисовали возможную ситуацию потери информации. Сегодня мы расскажем о том, как можно создавать резервные копии базы данных самостоятельно. Нет, это не mysqldump, это  инструмент Percona Xtra, а именно Percona XtraBackup. Если потеря файлов сайта ещё не так страшна, то потеря информации в базе данных существенна и даже критична.

     Да, есть привычная и любимая многими администраторами утилита mysqldump, но огромное количество опций может запутать неподготовленного пользователя. Для таких случаев и был разработан инструмент percona xtrabackup.


Создание копий в MYSQL/MARIADB

Выполним команды для установки percona xtrabackup на centos/fedora/redhat:

[root@bitrix ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

P.S. Выбрать  версию RPM пакета* percona xtrabackup для загрузки  можно в  официальном репозитории :  http://www.percona.com/downloads/percona-release/redhat/

С информацией о том, что такое RPM пакет можно ознакомиться на сайте WIKIPEDIA:  https://ru.wikipedia.org/wiki/RPM

[root@bitrix ~]# yum install percona-xtrabackup -y

После этого мы увидим:

Установлено:
percona-xtrabackup.x86_64 0:2.3.5-1.el6

Зависимости установлены:
libev.x86_64 0:4.03-3.el6                                                                                                                

Готово!


Теперь необходимо задать данные для авторизации пользователя в percona xtrabackup, в директории /root/, файл .my.cnf:

[client]
pass='passwordMYSQLserver'

Теперь нужно создать директорию, в которую будут создаваться копии:

[root@bitrix ~]# cd /home/
[root@bitrix home]# mkdir mysql

Запустим тестовое создание резервной копии:

[root@bitrix ~]# innobackupex /home/mysql

Потребуется ожидание, длительность которого зависит от объёма базы.

В результате мы получим:

161116 10:59:56 Executing UNLOCK TABLES
161116 10:59:56 All tables unlocked
161116 10:59:56 Backup created in directory '/home/mysql//2016-11-16_10-59-53'
161116 10:59:56 [00] Writing backup-my.cnf
161116 10:59:56 [00]        ...done
161116 10:59:56 [00] Writing xtrabackup_info
161116 10:59:56 [00]        ...done
xtrabackup: Transaction log of lsn (1683258) to (1683258) was copied.
161116 10:59:56 completed OK!

В директории появится копия всей базы данных:

[root@bitrix ~]# ls -la /home/mysql//2016-11-16_10-59-53
итого 18476
drwx------ 7 root root     4096 Ноя 16 10:59 .
drwxr-xr-x 4 root root     4096 Ноя 16 10:59 ..
drwx------ 2 root root     4096 Ноя 16 10:59 admin_db17597m
drwx------ 2 root root     4096 Ноя 16 10:59 admin_default
-rw-r----- 1 root root      386 Ноя 16 10:59 backup-my.cnf
-rw-r----- 1 root root 18874368 Ноя 16 10:59 ibdata1
drwx------ 2 root root     4096 Ноя 16 10:59 mysql
drwx------ 2 root root     4096 Ноя 16 10:59 performance_schema
drwx------ 2 root root     4096 Ноя 16 10:59 roundcube
-rw-r----- 1 root root      113 Ноя 16 10:59 xtrabackup_checkpoints
-rw-r----- 1 root root      394 Ноя 16 10:59 xtrabackup_info
-rw-r----- 1 root root     2560 Ноя
16 10:59 xtrabackup_logfile

 

Проверим работу системы восстановления из этой копии.

Сначала нужно остановить базу данных service mariadb stop или /etc/init.d/mysqld stop (У нас в примере cetnos6.8 поэтому дальше будет использоваться /etc/init.d/mysqld  )

Мигрируем существующую базу в директорию tmp:

mv /var/lib/mysql/* /tmp/

Выполняем команду:

[root@bitrix ~]#  innobackupex --copy-back /home/mysql/2016-11-16_10-59-53/

После выполнения в терминале будет вывод:

completed OK!

Проверим статус:

[root@bitrix ~]# /etc/init.d/mysqld status
mysqld (pid 2815) выполняется...

Если база не запустилась сама, запустим её вручную:

[root@bitrix ~]# /etc/init.d/mysqld start

 

После всех манипуляций база данных восстановлена.