Назад | Перейти на главную страницу

Репликация базы данных MySQL (Мастер - Мастер)

У нас есть сервер MySQL в одном месте, который реплицируется в другое в конфигурации Master-> Slave. На этом сервере порядка 5-7 различных баз данных. Мы хотим это сделать ...

У нас есть второй сайт, на который мы хотим переместить все наши веб-серверы для обеспечения высокой доступности, которые управляются MySQL. К сожалению, мы не можем переместить их все сразу и хотим настроить репликацию по нашему каналу WAN с одного сервера MySQL на другой. Поскольку мы будем постепенно переводить веб-серверы на этот второй сайт, мне нужно постепенно переносить базы данных из существующей среды на второй сайт для производственного использования. Мой вопрос в том, могу ли я реплицировать базу данных по сети, переместить веб-серверы, указать новый сервер на новый MySQL и продвигать эту отдельную базу данных, которая ему нужна, и вернуть ее на исходный сервер?

Могу ли я просто настроить репликацию Master-Master, которую веб-серверы записывают только в один или другой, без проблемы с автоматическим приращением, как описано в других местах здесь как проблема?

Надеюсь, это имеет смысл. Веб-приложения будут писать только на один или другой сервер, но не на оба. Это возможно?

Рад уточнить по мере необходимости.

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

Сервер 1:

auto-increment-increment = 2
auto-increment-offset = 1

Сервер 2:

auto-increment-increment = 2
auto-increment-offset = 2

Просто отмените это на оставшемся сервере, как только закончите.

CMIIW просто дополнительный комментарий

если вы используете HAProxy для MySQL Master-Master, вы можете использовать приведенный ниже пример настройки (я использую haproxy 1.4), все соединения по умолчанию будут перенаправлены на mysql1, иначе, если mysql1 не работает, тогда mysql2 будет обслуживаться (Active - Standby), и он вернется к mysql1, если mysql1 запущен.

  listen www_website_com_3306 www.website.com:3306
      mode tcp
      balance roundrobin
      option tcplog
      option mysql-check user haproxy
      server mysql1 mysql1:3306 check inter 2s rise 2 fall 2 maxconn 50
      server mysql2 mysql2:3306 check **backup** inter 2s rise 2 fall 2 maxconn 50

Вы можете указать подчиненному серверу применять операторы репликации только для определенных баз данных следующим образом:

--replicate-do-db = myfoodb

--replicate-do-db = myotherfoodb

http://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html#option_mysqld_replicate-do-db - тогда вы можете просто переключить свое приложение, когда будете готовы.

Что касается настройки мастер-мастер, здесь есть некоторые оговорки, но это вполне выполнимо. В зависимости от задержки / пропускной способности между сайтами вы можете использовать кластеризованную магическую пыль XtraDB / galeria Percona для обеспечения синхронной репликации, которая позволит обойти любую из обычных проблем с мастером-мастером. http://www.percona.com/software/percona-xtradb-cluster - хотя, как я уже сказал, есть некоторые оговорки; например: ваш код не может выдать GET_LOCK