MySQL репликация Master-Master на VirtualBox

Автор: | 14.07.2020

Репликация мастер-мастер применяется при распределения нагрузки на базу данных между различными серверами, используя для этого, например, геолокацию.

По сути мастер-мастер репликация это таже репликация мастер-слейв только в обе стороны.

В примере мы будем использовать два мастер сервера. Первый будет на Windows машине, а второй на Ubuntu 18.04 запущенной на VirtualBox. В обоих случаях будет использоваться MySQL версии 5.7. В случае если оба мастера будут находиться под Windows или Ubuntu настройка не будет отличаться.

Начнем, ip-адреса наших серверов:

  • Мастер-сервер1 192.168.0.101
  • Мастер-сервер2 192.168.0.102

Настройка мастер-сервера1

Шаг 1.

На первом мастер-сервере внесем изменения в файл конфигурации mysql. Поскольку это Windows машина, то файл конфигурации при дефолтной установке будет лежать по следующему пути:

  • c:\ProgramData\MySQL\MySQL Server 5.7\my.ini

для Ubuntu:

  • /etc/mysql/my.cnf

Перезапускаем mysql сервер, в Windows:

  • win+R набираем services.msc

в Ubuntu

  • sudo systemctl restart mysql

Шаг 2.

Создаем пользователя для репликации, открываем консоль mysql:

Шаг 3.

Посмотрим статус репликации:

значения из колонок File и Position мы будем использовать при запуске второго мастера (test — название реплицируемой БД, используйте вместо него свое)

Настройка мастер-сервера2

Шаг 4.

Изменим файл конфигурации my.cnf на втором мастер-сервере:

Перезагружаем второй мастер-сервер:

Шаг 5.

Создадим на втором мастер-сервере такого же пользователя с правами на репликацию как и на первом, в консоли mysql:

Нужно также создать такую же базу данных:

Шаг 6.

Запустим на втором мастер-сервере репликацию с первого:

Посмотрим статус на втором мастер-сервере:

значения из колонок File и Position мы будем использовать при запуске первого мастера (test — название реплицируемой БД, используйте вместо него свое)

Шаг 7.

Включим репликацию на первом мастер-сервере со второго:

Вот и все. Чтобы проверить работу репликации мастер-мастер создайте на одном из серверов таблицу и убедитесь в том что она появилась на втором.