Как синхронизировать таблицы MySQL с помощью инструментов maatkit

Я знаю, что мой раб по крайней мере немного не синхронизирован с хозяином... и, читая, я обнаружил, что во многих местах говорят mk-table-checksum + mk-table-sync из maatkit - инструмент, который я должен использовать, чтобы исправить это.

Проблема в том, что я не могу найти хороший пример об этом:

это моя схема:

Host1 -> master
      |_ table1


Host2 -> slave
      |_ table1

мои вопросы:

  • Где я должен запустить команду: хозяин или раб?
  • (И конечно) как... любой пример синтаксиса?

2 ответа

Прошло много времени с тех пор, как я должен был это сделать, но если я правильно помню, вы используете mk-table-checkum против мастера и используете опцию --replicate. Это записывает данные контрольной суммы для основных и ведомых таблиц. Затем вы запускаете mk-table-sync --sync-to-master от подчиненного устройства, что обеспечивает согласованность строк подчиненного устройства путем обновления строк в ведущем устройстве, чтобы они реплицировались в подчиненное устройство.

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

Если ваш набор данных не слишком велик, вам лучше всего закрыть его на достаточно долгое время, чтобы взять копию каталога данных mysql на главном компьютере и воссоздать ведомое устройство, поскольку это самый безопасный способ обеспечить непротиворечивую реплику. Если вы можете использовать снимки LVM, тогда даже лучше - но это будет невозможно, если вы не настроили свои файловые системы с учетом этого.

Ответ Джона Топпера правильный. Я бы добавил, что в реплике вы также должны добавить опцию --replicate в mk-table-sync, чтобы она использовала преимущества работы, которую mk-table-checkum уже выполнила.

Другие вопросы по тегам