2012-02-11 2 views
7

Используя простые настройки репликации с одним MASTER и одним SLAVE, как можно обеспечить полную синхронизацию SLAVE и MASTER?Как обеспечить репликацию MySQL SLAVE полностью синхронизируется с репликацией MASTER?

Теперь да, они оба начали с одного и того же изображения, и репликация работает и сообщает, что все в порядке, НО: * Случилось так, что были ошибки, останавливающие репликацию, а затем репликация должна была быть остановлена, а затем возобновлена , * Возможно, случайно произошли изменения в SLAVE, и это уже не так, как MASTER. * Другие сценарии, которые могут нарушить синхронизацию.

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

Благодаря

+0

http://dba.stackexchange.com/questions/17501/monitoring-replication-on-mysql –

ответ

8

Вы пробовали Percona Toolkit (ранее известный как Maatkit)? Вы можете использовать один из своих инструментов: pt-table-checksum для вашего случая. Вы также можете проверить другие инструменты на своем веб-сайте.

пт-таблица контрольной сумма выполняет онлайну проверку целостности репликации с помощью исполняющих контрольной суммы запросов на мастер, который производит различные результатов по репликам, которые несовместимы с мастером. Необязательный DSN указывает главный хост. Статус выхода инструмента отличен от нуля, если обнаружены какие-либо различия или возникают какие-либо предупреждения или ошибки .

Следующая команда будет подключаться к мастеру репликации на локальном хосте, контрольной сумма каждую таблицу, и сообщить о результатах на каждый обнаруженной реплики:

+0

Пока не пробовал, но кажется многообещающим. Спасибо :) – Collector

+0

У них также есть инструмент под названием 'pt-table-sync', который позволяет вам синхронизировать таблицы, если вы обнаружите что-то не так. Он использует 'pt-table-checksum', чтобы найти потенциальные проблемы и выдает инструкции хозяину, чтобы заставить подчиненный реплицировать, поэтому используйте свои собственные риски! – ESG

3

Если у вас есть версии сервера MySQL 5.6.14 или выше, вас может использовать Проверка синхронизации репликации MySQL. Он включен в пакет сервера MySql. Предназначен для работы исключительно для серверов, поддерживающих глобальные идентификаторы транзакций (GTID) и gtid_mode = ON.

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

See MySQL Documentation for more information

+0

Отредактирован ответ, пожалуйста, cpbumz. Этот инструмент действительно полезен, – Franco

+0

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

3

Вы право быть подозрительным, казалось бы, здорового настройки репликации ведущий/ведомый! Мы отлично справлялись, когда вдруг у нас появились предупреждения от check_mk относительно базы данных, которая существовала на нашем хозяине, чего не было на нашем подчиненном ... но выходные данные о главном и подчиненном состоянии были хорошими! Как это нервирует? Способ доказать целостность процесса заключается в использовании контрольных сумм для проверки данных.

Я видел много разговоров в Интернете, рекомендую pt-table-checksum.Тем не менее, его limitations оказался для нас слишком обременительным. Самое главное, это требует и даже устанавливает репликацию на основе инструкций (см. Ссылку pt-table-checksum). Как говорится в mysql 5.6 online documentation, (для репликации на основе строк ...) «все изменения могут быть реплицированы. Это самая безопасная форма репликации». Существуют и другие недостатки репликации на основе заявлений, которые заставляют наших разработчиков нервничать, потому что некоторые функции не могут быть воспроизведены должным образом; см. документ для списка.

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

Мы собираемся попробовать mysqlrplsync, который конкретно упоминает, что он "works independently of the binary log format (row, statement, or mixed)". В нем также упоминается, что gtid-mode должен быть включен, и он требует MySQL 5.6.14 и выше ... что означает, я полагаю, что MySQL, поставляемый с RHEL7/CentOS 7, по крайней мере, отсутствует. Вам нужно будет получить версию Community Community Edition, которая оставлена ​​в качестве упражнения для читателя but you can go here for the packages или here for the repos, including RHEL derivatives and Debian.