Задача: перенести 380 Гб базу на новый сервер с минимальным простоем.
Переносили базу 380 Гб и с 5.5 на 5.7.
Требуется ПО: Xtrabackup, iptables, rsyn, screen.
План переноса:
1) Вносим настройки в конфиг my.cnf для работы репликации.
2) Делаем бекап, переносим на новый сервер, запускаем реплику.
3) Переключаем трафик на новый сервер.
В мастере создаем юзера для реплики
GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘password’;
FLUSH PRIVILEGES;
Включаем в конфиге реплику мастер
server-id = 1
log-bin = /var/lib/mysql/mysql-bin
expire-logs-days = 3
sync-binlog = 4096
replicate-do-db = site
Включаем в конфиге реплику на слейве
server-id = 2
log-bin = /var/lib/mysql/mysql-bin
expire-logs-days = 3
sync-binlog = 4096
replicate-do-db = site
Создаем бекап
innobackupex —user=root —password=pwd /var/backups
Накатываем логи
innobackupex —user=root —password=pwd —apply-log /var/backups/20201010323423
Останавливаем сервис на слейве
systemctl stop mysql
Переносим каталог базы в old
mv /var/lib/mysql /var/lib/mysql-old
Переносим бекап на на слейв
rsync -avrP /var/backups/20201010323423/ [email protected]:/var/lib/mysql/
Дальше все происходит на слейве
меняем права
chown -R mysql:mysql /var/lib/mysql
Смотри номер бинлога и позицию в xtrabackup_binlog_info
cat /var/lib/mysql/xtrabackup_binlog_info
настраиваем мастер
CHANGE MASTER TO MASTER_HOST=’1.1.1.1′, MASTER_USER=’user_slave’, MASTER_PASSWORD=’passwd’,
MASTER_LOG_FILE = ‘mysql-bin.000010’, MASTER_LOG_POS = 69400677;
start slave;
Проверяем статус репликации, реплика должна докатится и оставание должно быть 0.
SHOW SLAVE STATUS\G
С репликацией все ок, може перенаправлять весь трафик на новый сервак.
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
Дальше делаем на мастере отключение мастера и перенарпавление трафика на слейв.
Включаем форвардинг
sysctl -w net.ipv4.ip_forward=1
systemctl stop mysql
iptables -t nat -A PREROUTING -p tcp -m tcp -d 1.1.1.1 —dport 3306 -j DNAT —to-destination 192.168.77.2:3306
iptables -t nat -A POSTROUTING -p tcp -m tcp -s 2.2.2.2 —sport 3306 -j SNAT —to-source 1.1.1.1:3306
Все, переключаем клиентов по мере возможностей на новый сервер.
Если возникли проблемы с репликацией, пропустить ошибки на слейве если есть.
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;
No comments