Репликация master-master в MySQL
Материал из ISPWiki
Минимальная установка
Для такого вида репликации требуется MySQL версии 5.0 или выше.
Сделайте две свежих установки MySQL. Выставьте одинаковый пароль рута (в будущем, он будет в любом случае одинаковым, т.к. данный конфиг реплицирует и базу mysql со всеми паролями). На обеих машинах создайте специального пользователя:
grant replication slave on *.* to replication@'%' identified by 'slave';
Разрешите руту удалённые соединения (в случае oproxy, MySQL в вашей конфигурации скорее всего будет слушать только TCP-сокет):
grant all on *.* to root@'%' identified by 'PASSWORD' with grant option;
В случае Debian, аналогично для пользователя debian-sys-maint (см. /etc/mysql/debian.cnf):
grant all on *.* to debian-sys-maint@'%' identified by 'PASSWORD';
На первой машине в /etc/my.cnf пишем:
server-id=1 relay-log=master1-relay-bin master-host = IP_ВТОРОЙ_МАШИНЫ master-user = replication master-password = slave master-port = 3306 slave-skip-errors = all log-bin=mysql-bin auto_increment_increment = 2 auto_increment_offset = 1
На второй машине:
server-id=2 relay-log=master2-relay-bin master-host = IP_ПЕРВОЙ_МАШИНЫ master-user = replication master-password = slave master-port = 3306 slave-skip-errors = all log-bin=mysql-bin auto_increment_increment = 2 auto_increment_offset = 2
Убедитесь, что в файле нет дублей этих строчек (в первую очередь, касается server-id и log-bin). Перезапустите оба MySQL. Если всё в порядке, на обеих машинах в логах должны появиться такие строчки:
090107 8:08:39 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000013' at position 537, relay log './master2-relay-bin.000051' position: 98 090107 8:08:39 [Note] Slave I/O thread: connected to master 'replication@10.0.0.2:3306', replication started in log 'mysql-bin.000013' at position 537
Создайте базу на одной машине. Она должна появиться на второй. Аналогично, проверьте репликацию в другую сторону.
