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

Перенос MySQL с одного сервера на другой через репликацию мастер-мастер

ОС - это Linux. Я предполагаю, что процесс выглядит примерно так:

На самом деле мой вопрос касается этого последнего шага. Каков самый изящный способ выполнить этот шаг, кроме простого выполнения "service mysql stop"

Также хотел, чтобы люди просмотрели это, чтобы убедиться, что эти шаги разумны. Спасибо!!

Если вы все равно планируете прервать репликацию в качестве последнего шага, есть ли смысл в настройке Master-Master? Вероятно, было бы достаточно настроить Master-> Slave с текущими-> новыми серверами. После того, как вы переключите IP-адрес в своем приложении (что, как я предполагаю, заставит все записи немедленно начинать с использования нового сервера), все записи должны идти на новый сервер, а затем вы можете выполнить stop slave; В конце концов, MySQL Master <=> Master на самом деле просто Master / Slave -> Slave / Master (если это имеет смысл).

Единственное преимущество настройки Master-Master заключается в том, что после того, как вы отключите IP-адрес, все новые записи в новую БД будут реплицированы обратно в исходный.

Единственное, в чем вы хотели бы убедиться, - это то, что ваша репликация способна не отставать. Находятся ли эти два сервера БД в одной сети или они реплицируются по каналу WAN? Это занятые серверы? Тиражируется ЛОТ в любой момент? Одна из проблем, с которой вы можете столкнуться, заключается в том, что ваш ведомый реплики не догоняет Мастера, когда вы переключаетесь. Если новый сервер начинает получать записи, пока он все еще пытается догнать то, что находится в журналах ретрансляции, вы рискуете столкнуться с ключевыми конфликтами (но это также зависит от того, как ваше приложение записывает в базу данных). Если вы можете позволить себе 30 секунд простоя, я бы посоветовал разместить страницу «Отключено для обслуживания», убедиться, что репликация на 100% перекрыта, а затем переключить IP-адрес БД. Затем снова запустите приложение. Делайте это в то время дня / ночи, когда у вас наименьшее количество пользователей.

Вероятно, не помешало бы предварительно проверить это на некоторых машинах разработчика или виртуальных машинах.