У нас есть сервер 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