Percona xtrabackup или переносим базу на другой сервер

Автор | 11.09.2015

С помощью утилит от percona можно поднять копию большой базы на другом сервере намного быстрее, чем штатными методами mysql dump/restore
Сначала установим Percona XtraBackup и те зависимости, которые нужны.
Установку будем проводить на Centos 6

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.2.12/binary/redhat/6/x86_64/Percona-XtraBackup-2.2.12-r8726828-el6-x86_64-bundle.tar
tar xvf Percona-XtraBackup-2.2.12-r8726828-el6-x86_64-bundle.tar
yum install -y perl-DBD-MySQL
yum install -y perl-Time-HiRes
yum install -y rsync
rpm -ivh percona-xtrabackup-2.2.12-1.el6.x86_64.rpm

Теперь сделаем бекап и закинем его на второй сервер

[master] innobackupex --user=root --defaults-file=/etc/my.cnf --password=$rootPasswd  /tmp/db
[master] innobackupex --user=root --defaults-file=/etc/my.cnf --password=$rootPasswd  --apply-log 2015-09-11_09-22-55/

[master] rsync -avpP -e ssh 2015-09-11_09-22-55 $SlaveIP:/tmp/db/

Добавим на мастер сервер пользователя которому разрешена репликация

[master][mysql shell] GRANT REPLICATION SLAVE ON *.*  TO 'repl'@'$SlaveIP'  IDENTIFIED BY '$ReplPassword';

Переходим на Slave
Нужно остановить БД, забекапить текущую конфигурацию, подкинуть новую

[slave] service mysqld stop ; mv /var/lib/mysql /var/lib/mysql.old
[slave] mv /tmp/db/2015-09-11_09-22-55 /var/lib/mysql
[slave] chown -R mysql.mysql /var/lib/mysql

Теперь находим master pos из нашего бекапа и стартуем Slave

[slave] cat /var/lib/mysql/xtrabackup_binlog_info
master-bin.000019	637532075

[slave] /etc/init.d/mysqld start

Заходим в mysql и добавляем запись о том где находится наш Master после чего запускаем процесс репликации


[slave][mysql shell] CHANGE MASTER TO
                MASTER_HOST='$MasterIP',
                MASTER_USER='repl',
                MASTER_PASSWORD='$ReplPassword',
                MASTER_LOG_FILE='master-bin.000019',
                MASTER_LOG_POS=637532075;
[slave][mysql shell] START SLAVE;
Query OK, 0 rows affected (0,01 sec)

[slave][mysql shell]SHOW SLAVE STATUS \G
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

Вот и все… за некоторое время база на slave догонит master:
Seconds_Behind_Master: 0
и репликация будет на постоянной основе)

Залишити відповідь