Я знаю, что мой подчиненный, по крайней мере, немного не синхронизирован с мастером ... и читая, я обнаружил, что во многих местах говорится, что mk-table-checksum
+ mk-table-sync
из мааткит инструмент, который я должен использовать, чтобы исправить это.
Проблема в том, что я не могу найти ни одного хорошего примера:
это моя схема:
Host1 -> master
|_ table1
Host2 -> slave
|_ table1
мои вопросы:
Ответ Джона Топпера правильный. Я бы добавил, что на реплике вы также должны добавить параметр --replicate в mk-table-sync, чтобы он использовал в своих интересах работу, которую уже проделала mk-table-контрольная сумма.
Прошло много времени с тех пор, как мне приходилось это делать, но, если я правильно помню, вы используете mk-table-контрольную сумму против мастера и используете параметр --replicate. Это записывает данные контрольной суммы как для главной, так и для подчиненной таблиц. Затем вы запускаете mk-table-sync --sync-to-master с ведомого устройства, которое будет согласовывать ваши строки ведомого устройства путем обновления строк в ведущем устройстве таким образом, чтобы они реплицировались на ведомое устройство.
Как я уже сказал, моя память об этом может быть шаткой, поэтому прочтите документацию по инструментам, чтобы убедиться, что вы понимаете, что они делают, и протестируйте это в своей тестовой среде.
Если ваш набор данных невелик, вам может быть лучше выключить его на достаточно долгое время, чтобы сделать копию каталога данных mysql на главном сервере и воссоздать подчиненное устройство, поскольку это самый безопасный способ убедиться, что вы определенно получите согласованную реплику. Если вы можете использовать моментальные снимки LVM, это будет еще лучше, но это будет невозможно, если вы не настроите свои файловые системы с учетом этого.