Дано: MySQL 8.0.22 Community Edition из официального репозитория, ОС Oracle Linux 7.9 (OL). MySQL кластер с Master-Slave репликацией, построен на базе встроенного функционала.
Назначение репликации:
- разделение операций чтения и записи между Master и Slave сервером приложениями, которые умеют так работать
- резервное копирование производится на Slave сервере не затрагивая производительность Master
- на Slave производятся ресурсоёмкие операции чтения – аналитика, отчеты, справочники для центрального API
Требуется: в период высокой нагрузки развернуть дополнительные Slave без остановки Master, остановка Slave возможна на краткий разумный времени.
Основной Slave сервер – Slave01. Новый Slave сервер – Slave02
1. Установка новой ОС Slave02, или разворачивание из шаблона. Версия ОС может быть иной, версия MySQL тойже, что на Slave01
2. Выключить сервис MySQL Slave02
3. Перенести конфигурацию MySQL с Slave01 на Slave02 (в OL /etc/my.cnf и /etc/my.cnf.d/* ), внести в конфигурацию skip-slave-start что бы SLAVE не запускался автоматически в процессе работы
4. В конфигурации MySQL на Slave02 изменить server_id на уникальный в пределах кластера
5. Подготовить Slave01 к донорству и остановке:
- проверить состояние реплики SHOW SLAVE STATUS;
- остановить репликацию STOP SLAVE;
- остановить сервис MySQL
6. Скопировать datadir, logdir с Slave01 на Slave02 (убедиться что все пути и каталоги соответствуют ранее скопированной конфигурации).
7. Восстановить работу сначала Slave01, затем Slave02:
- на Slave02 удалить auto.cnf из datadir – это создаст новый uuid инстанса
- запустить сервис MySQL
- запустить репликацию START SLAVE;
- проверить состояние реплики SHOW SLAVE STATUS;
8. Если Slave02 корректно начал работу:
- убрать skip-slave-start из конфигурации Slave02
- перезапустить и убедиться, что все работает корректно при автоматическом запуске SHOW SLAVE STATUS;