Настройка репликации master-master на MySQL
Шаг 1 на сервере 1
В файл my.cnf добавляем/изменяем следующие строки:
| 1 2 3 4 | server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = radme_rep bind-address = 10.10.0.1 | 
Перезапускаем mysql, создаем базу (в моем случае это radme_rep)
В консоли выполняем:
| 1 2 3 4 5 6 7 | SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 117 | radme_rep | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) | 
Создаем пользователя и даем ему права на операции с БД (под ним будет заходить Сервер 2)
| 1 2 | create user 'replicator'@'%' identified by 'password'; grant replication slave on *.* to 'replicator'@'%'; | 
Шаг 2 на сервере 2
В файл my.cnf добавляем/изменяем следующие строки:
| 1 2 3 4 | server-id = 2 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = radme_rep bind-address = 10.10.0.2 | 
Перезапускаем mysql, создаем базу (в моем случае это radme_rep)
В консоли выполняем:
| 1 2 3 4 5 6 7 | SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 107 | radme_rep | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) | 
Создаем пользователя и даем ему права на операции с БД (под ним будет заходить Сервер 1)
| 1 2 | create user 'replicator'@'%' identified by 'password'; grant replication slave on *.* to 'replicator'@'%'; | 
Шаг 3 на сервере 1
В консоли выполняем
| 1 2 3 | slave stop;  CHANGE MASTER TO MASTER_HOST = '10.10.0.2', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000004', MASTER_LOG_POS = 107;  slave start; | 
Шаг 4 на сервере 2
В консоли выполняем
| 1 2 3 | slave stop;  CHANGE MASTER TO MASTER_HOST = '10.10.0.1', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000003', MASTER_LOG_POS = 117;  slave start; | 
Шаг 5
На обоих серверах можно в my.cnf добавить строчку
| 1 | slave-skip-errors = 1062 | 
Для пропуска ошибок вида Error ‘Duplicate entry…’ в случае одновременной записи в таблицу на обоих серверах (при небольшой нагрузке маловероятно). Иначе — необходимо настроить разный автоинскремент на серверах.
| 1 2 | auto-increment-increment = 2 auto-increment-offset = 2 | 
Как удалить репликацию данных?
В консоли на обоих серверах выполняем:
| 1 2 3 | RESET MASTER; stop slave; CHANGE MASTER TO ""; | 
Далее останавливаем сервер и из папки mysql удаляем все файлы вида
| 1 2 | relay-* *.info | 
Посмотреть статус репликации можно так:
mysql> SHOW SLAVE STATUS \G;
Поле Seconds_Behind_Master должно стремится к нулю.