MySql - создать репликацию с минимальным временем простоя - PullRequest
5 голосов
/ 13 декабря 2011

У меня есть ~ 80 ГБ MySql DB.

Я хочу создать репликацию на этой БД, имея текущую БД в качестве главной и настраивая для нее подчиненную.

Мой главный вопросКак я могу переместить данные (все 80 ГБ) их от главного к новому ведомому устройству с минимальным временем простоя, насколько это возможно, желательно без.), а затем скопируйте файлы из библиотеки mysqldata, а затем перезапустите сервер, но простое копирование файлов займет ~ 2 часа.

есть мысли?

Ответы [ 3 ]

6 голосов
/ 13 декабря 2011

8 июля 2011 года я обратился к аналогичному вопросу.Я написал сценарии, которые убрали бы двоичные журналы и начали выполнять rsync.

16 июня 2011 года я написал статью, в которой сравнивал выполнение rsync с использованием XtraBackup.

23 мая 2011 г. я обсуждал, какие соображения следует учитывать при выполнении такого резервного копирования.

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

Пожалуйста, внимательно прочитайте их.

Попробуйте! !!!

CAVEAT

Единственное время простоя в моем алгоритме rsync - это когда после выполнения нескольких rsync, как указано, вы выключаете mysql, выполняете еще одну rsync и затем запускаете mysql .

Я хотел быЧтобы выяснить причину выключения:

При выключении mysql:

  • Все открытые таблицы MyISAM закрыты. Существует заголовок, который отмечает, сколько открытых файловых дескрипторов открыто.на мойISAM стол.Это должно быть в нуле (0), чтобы таблица была в порядке.В противном случае закрытые таблицы MyISAM с ненулевым значением в этом поле заголовка помечают таблицу как поврежденную и нуждающуюся в восстановлении таблицы.Выключение mysql очищает все это.

  • Все таблицы InnoDB, которые имеют либо страницы данных, либо индексные страницы в пуле буферов, помеченные как грязные, должны быть записаны на диск.Выполнение выключения вызывает полную очистку пула буферов.Естественно, чем больше пул и чем больше грязных страниц, тем дольше будет время очистки буферного пула.Чтобы сократить этот этап завершения работы mysqld, запустите SET GLOBAL innodb_max_dirty_pages_pct = 0; перед выполнением любой из rsyncs.Все транзакции завершены (совершены или отменены).

0 голосов
/ 19 августа 2012

Я обнаружил, что следующий инструмент очень полезен и эффективен. В настоящее время автор работает на Facebook и раньше работал на дему в Японии. Это довольно легко настроить, и вы достигнете 4 9-х ГА. ; -)

Инструмент MHA для высокой доступности репликации MySQL

Я должен сказать, что кластер MySQL лучше, лол; -)

0 голосов
/ 13 декабря 2011

Я думаю, что у вас есть некоторые недоразумения.

  1. перед его запуском, вы должны включить двоичный журнал на мастере
  2. перезапустить mysql на мастере
  3. войти в систему на мастере
  4. блокировка ВСЕХ таблиц от записи
  5. запись двоичной позиции мастера
  6. копирование двоичных данных из мастера (ПРЯМОЕ копирование * .MYI, * .MYD ... и т. Д., Вы можетекопировать в другое место в базе данных master)
  7. после завершения копирования снять блокировку записи
  8. scp-данные на ведомый (зависит от расстояния в сети)
  9. установить соответствующую основную информацию вslave (позиция двоичного журнала, и не забудьте отключить двоичный журнал)
  10. start slave

После этого он должен иметь огромную задержку на slave,
и slave будет пытаться пойматьс мастером автоматически,
как только он догонит, ваш ведомый готов!

Итак, время простоя - только когда вы блокируете таблицу и копируете двоичные данные в другое место в вашей базе данных master.

документы: - http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html

...