t-alexashka
@t-alexashka
Сразу пишу legacy код

Как реплику сделать мастером?

Привет друзья.
Переношу продакшн на другой хост. Выбрал такую последовательность действий:
1. настраиваю реплику старого серва на новый
2. меняю в конфигах сайта (пхп) доступы со старого сервера mysql к новому (на данный момент - реплики)
3. делаю реплику мастером
4. отключаю mysql на старом серве

Вопрос про 3ий пункт. Как мне из реплики сделать мастера? stop slave? или что-то сложнее
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
@bkosun
SERVER_1 - master
SERVER_2 - slave

1. Остановить запись на master (SERVER_1):

FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;

2. Дождаться полной синхронизации master -> slave (SERVER_2)

3. Остановить и сбросить состояние slave (SERVER_2)

STOP SLAVE;
RESET SLAVE;

4. Остановить и сбросить состояние master (SERVER_1)
RESET MASTER;

Не забываем обновить my.cnf на всех серверах и перезапустить MySQL.

5. Profit!

https://dev.mysql.com/doc/refman/5.7/en/replicatio...
https://dev.mysql.com/doc/refman/5.7/en/reset-slav...
https://dev.mysql.com/doc/refman/5.7/en/reset-mast...

P.S. Почему Вы не используете mysqldump?

Достаточно остановить запись и скопировать базу данных (SERVER_1):

FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;

mysqldump -uuser_name db_name | mysql --host=SERVER_2_IP_ADDR -uuser_name -ppassword -C db_name
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы