Как перенести базу данных MySQL на другой сервер без простоев

3

У нас довольно большие (1-4 ГБ) базы данных MySQL, которые постоянно используются для критически важных приложений. Мы хотели бы перенести некоторые из них с физического сервера 1 (S1) на физический сервер 2 (S2).

Традиционным способом было бы остановить MySQL в S1, сделать SQL Dump, импортировать его на S2, а затем начать использовать S2 в качестве производственного сервера. Это работает, но это приведет к значительному времени простоя для наших клиентов, не в последнюю очередь потому, что нам необходимо передать несколько гигабайт данных дампа через Интернет.

Как-то можно сделать этот шаг с небольшим или без простоя?

Одна стратегия, о которой я думал, - это нечто подобное:

  1. Запуск binlog в S1 для определенной БД
  2. Сделайте SQL-дамп, а S1 все еще активен в производстве. У дампа будут какие-то временные метки, соответствующие бинлогам
  3. Перенесите SQL-дамп на S2 и импортируйте его на новый сервер MySQL.
  4. Пусть сервер MySQL на S2 реплицирует разницу (из binlogs) между моментом начала дампа и теперь.
  5. Установите MySQL-сервер на S2 как подчиненный для S1 и постоянно реплицируйте любые изменения на S1
  6. Сделайте DNS-изменение таким образом, чтобы любые новые запросы к S1 были направлены на S2.

Будет ли это работать? И если бы это было так, как я мог это сделать? Что следует учитывать?

  • 0
    Вы можете изменить свой код для чтения из S1 и S2 и записи только в S2?
  • 0
    Не очень легко Наше приложение должно читать и писать из одной базы данных. Кроме того, поскольку мы используем несколько клиентских приложений, которые напрямую подключаются к SQL, практически невозможно обновить их все сразу. Таким образом, некоторые из них будут писать на S1, а другие на S2, что будет беспорядком.
Показать ещё 1 комментарий
Теги:
database-migration
mysqldump

1 ответ

0

У меня нет опыта в том, что вы только что просили, но сейчас я изучаю предмет, так как я пытаюсь выяснить, как я смогу это сделать в будущем, когда придет время, и если теперь я могу сделать это, чтобы это было возможно позже.

При поиске решения я нашел следующий пост, который более или менее описывает то, что вы только что попросили. кроме последней части изменения DNS и начала работы с ведомым БД. Я сам не пробовал, но на посту он также описывает процедуру, как это сделать.

Мне кажется, что это можно сделать, и я надеюсь, что вы добьетесь успеха. Возможно, вы спросите и парня, который написал сообщение на последнем этапе.

Это тоже стоит проверить, я думаю, что он закрывает весь цикл

Удачи

Ещё вопросы

Сообщество Overcoder
Наверх
Меню