Percona xtrabackup или переносим базу на другой сервер
С помощью утилит от 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
и репликация будет на постоянной основе)