Назад | Перейти на главную страницу

Некоторые таблицы все еще не синхронизированы после запуска mk-table-sync

У меня 1 мастер и 2 подчиненных. Я использую MySQL 5.1.42 на всех серверах. Я пытаюсь использовать контрольную сумму mk-table, чтобы убедиться, что их данные синхронизированы, но получаю неожиданные результаты на одном из ведомых устройств.

Сначала я генерирую контрольные суммы на мастере следующим образом:

mk-table-checksum h=localhost --databases MYDB --tables {$table_list} --replicate=MYDB.mk_checksum --chunk-size=10M

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

Затем, чтобы убедиться, что контрольные суммы совпадают, я запускаю это на мастере:

mk-table-checksum --databases MYDB --replicate=IRC.mk_checksum --replicate-check 1 h=localhost,u=maatkit,p=xxxx

Если есть отличия, ремонтирую рабы так:

mk-table-sync --execute --verbose --replicate IRC.mk_checksum h=localhost,u=maatkit,p=xxxx

После всего этого я восстановил оба ведомых устройства с помощью mk-table-sync. Однако каждый раз, когда я запускаю эту последовательность (после того, как все уже было восстановлено), одно ведомое устройство идеально синхронизировано, но одно ведомое устройство всегда имеет несколько несинхронизированных таблиц. Я на 99,999% уверен, что данные на подчиненных устройствах совпадают, поскольку я все восстановил, а таблицы даже не обновлялись на главном сервере между запусками скрипта контрольной суммы. Что может привести к тому, что несколько таблиц всегда будут отображаться не синхронно только на одном из ведомых устройств? Я застрял. Вот результат:

Differences on h=x.x.x.x,p=...,u=maatkit  

DB TBL CHUNK CNT_DIFF CRC_DIFF BOUNDARIES
IRC продукт 10 0 1 product_id > = 147377 И product_id <162085
IRC post_order_survey 0 0 1 1 = 1
IRC mk_heartbeat 0 0 1 1 = 1
IRC mailing_list 0 0 1 1 = 1
IRC honey_pot_log 0 0 1 1 = 1
IRC продукт 12 0 1 product_id > = 176793 И product_id <191501
IRC продукт 18 0 1 product_id > = 265041
IRC заказов 26 0 1 order_id > = 694472
IRC orders_product 6 0 1 op_id > = 935375

--replicate = MYDB.mk_checksum

--replicate = IRC.mk_checksum

Почему разница?

Вы случайно не отправили этот вопрос в список рассылки Maatkit? Похоже на недавнюю переписку там. Если бы это был не вы, возможно, вы смогли бы перехватить эту ветку. (Я предпочитаю отвечать там, здесь я не отслеживаю / не слежу / не контролирую).