Как проверить, идентичны ли две большие таблицы? - PullRequest
3 голосов
/ 07 февраля 2011

У меня есть 2 сервера, один из которых работает как главный, а другой - как подчиненный. Я хочу проверить погоду, обе таблицы имеют одинаковые данные. Как я могу проверить и подтвердить это? Таблица содержит более 23 миллионов строк.

Также в качестве первого шага я попытался запустить CHECKSUM TABLE tbl;

Но я получаю эту ошибку через 60 секунд: ERROR 2013 (HY000): Lost connection to MySQL server during query

Пожалуйста, совет.

Ответы [ 3 ]

2 голосов
/ 07 февраля 2011

Вы также можете использовать mk-table-checksum, который является частью утилит Maatkit.

http://www.maatkit.org/doc/mk-table-checksum.html

1 голос
/ 07 февраля 2011

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

Если вы используете одну из последних версий mysql, вам также следует взглянуть на разбиение таблиц: http://dev.mysql.com/doc/refman/5.1/en/partitioning.html, что значительно ускорило бы доступ, такой как контрольные суммы.

0 голосов
/ 07 февраля 2011

Я не знаю, возможно ли на 100% то, чего вы хотите достичь, но, по крайней мере, один из способов проверить состояние репликации - это реализовать какой-то простой механизм биения, как описано в книгеПроизводительность MySQL .

Метод работает с метками времени, которые вставляются в таблицу и проверяются каждые 20 секунд.Вместе с отчетом о состоянии, который возвращает SHOW SLAVE STATUS \G, вы получаете точную статистику о текущем состоянии.

Вы видите, сколько операторов находится за ведущим, или ошибки репликации и тому подобное.Если нет ошибок или ожидающих заявлений, вы должны быть достаточно хороши, чтобы предположить, что в момент времени t ваши таблицы синхронизированы.

...