Настройка репликации Master-Master на MySQL 5.7 (Репликация MySql)

В предыдущей статье был описан процесс настройки репликации на более низкий версиях MySQL. С версии 5.7, процесс немножко изменился.

1) Открываем на каждом сервере фай my.cnf (посмотреть где он, можно при помощи команды :

И изменяем/добавляем следующие строчки:

На каждом сервере найдем файл auto.cnf (на FreeBSD он /var/db/mysql/auto.cnf), и и убедимся, что server-uuid разный. Если вдруг одинаковые — поменяем (36 символов!, лучше если менять то конечные числа и с опаской!)

Перезапустим MySql

2) На каждом сервере создадим пользователя, от которого будет происходить репликация

3) На каждом сервере выполним, команду, чтоб увидеть текущий статус репликации

На каждом сервере создаем задание мастер репликацию друг на друга, и запускаем собственно репликацию:

Сервер 1

Сервер 2

Смотрим как идет репликация:

Если нужно приостановить репликацию:

Если нужно удалить репликацию:

Настройка репликации master-master на MySQL

Шаг 1 на сервере 1

В файл my.cnf добавляем/изменяем следующие строки:

Перезапускаем mysql, создаем базу (в моем случае это radme_rep)
В консоли выполняем:

Создаем пользователя и даем ему права на операции с БД (под ним будет заходить Сервер 2)

Шаг 2 на сервере 2

В файл my.cnf добавляем/изменяем следующие строки:

Перезапускаем mysql, создаем базу (в моем случае это radme_rep)
В консоли выполняем:

Создаем пользователя и даем ему права на операции с БД (под ним будет заходить Сервер 1)

Шаг 3 на сервере 1

В консоли выполняем

Шаг 4 на сервере 2

В консоли выполняем

Шаг 5

На обоих серверах можно в my.cnf добавить строчку

Для пропуска ошибок вида Error ‘Duplicate entry…’ в случае одновременной записи в таблицу на обоих серверах (при небольшой нагрузке маловероятно). Иначе — необходимо настроить разный автоинскремент на серверах.

Как удалить репликацию данных?

В консоли на обоих серверах выполняем:

 

Далее останавливаем сервер и из папки mysql удаляем все файлы вида

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

mysql> SHOW SLAVE STATUS \G;

Поле Seconds_Behind_Master должно стремится к нулю.