2011-12-13 4 views
5

У меня есть 80 МБ MySql DB.MySql - создать репликацию с минимальным временем простоя

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

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

Первоначальная мысль заключалась в том, чтобы остановить БД (после взятия позиции журнала), а затем скопировать файлы из mysqldata lib, а затем снова запустить сервер, но просто скопировать файлы займет ~ 2 часа.

любые мысли?

+0

Вот руководство я написал о том, как выполнить идеальный раб лишь несколько секунд таблиц блокировки время простоя ... особенно если у вас много данных MyISAM ... http://www.marcpope.com/article.php?story=2013060316014742 –

ответ

6

On July 8, 2011 I addressed a similar question. I wrote scripts that would zap binary logs and starting performing an rsync.

On June 16, 2011, I wrote a post contrasting doing an rsync versus using XtraBackup.

On May 23, 2011, I discussed what considerations to make when doing this kind of backup.

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

Прочтите внимательно.

Дайте ему попробовать !!!

CAVEAT

Единственные простои в моем алгоритме Rsync, когда после того, как вы выполнили несколько rsyncs, как указаны, останова MySQL, выполнить еще один Rsync, а затем запустить MySQL.

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

при выключении MySQL:

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

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

0

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

  1. , прежде чем начать, вы должны включить двоичный журнал на мастер
  2. перезапуск MySQL на мастер
  3. Войти освоить
  4. блокировать все таблицы из записи
  5. записи мастер двоичная позиция
  6. копировать двоичные данные из master (DIRECTLY copy * .MYI, * .MYD ... и т. д., вы можете скопировать в другое место в основной базе данных)
  7. после завершения копирования, удалить wri те блокировки
  8. Scp данные ведомого устройство (зависит от сетевого расстояния)
  9. установки соответствующей мастер информации в рабу (бинарное положение журнала, и не забудьте отключить двоичный журнал)
  10. пускового раба

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

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

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

0

Я нашел следующее средство, чтобы получить БОЛЬШУЮ помощь и эффективность. В настоящее время автор работает на facebook и работает для дема в Японии. Это довольно просто настроить, и вы достигнете 4 9-ти HA. ;-)

MHA tool for MySQL replication high availability

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

Смежные вопросы