Полная репликация базы данных MySQL? Идеи? Что делают люди?

В настоящее время у меня есть два Linux-сервера под управлением MySQL, один из которых находится на стойке рядом со мной под каналом загрузки 10 Мбит / с (главный сервер), а другой в паре миль от него на канале загрузки со скоростью 3 Мбит / с (зеркало).

Я хочу иметь возможность непрерывно реплицировать данные на обоих серверах, но столкнулся с несколькими препятствиями. Одна из них заключается в том, что в конфигурациях MySQL master / slave время от времени выпадают некоторые операторы (!), Что означает; некоторые люди, входящие в систему по URL-адресу зеркала, не видят данных, которые, как я знаю, находятся на главном сервере, и наоборот. Допустим, это происходит с осмысленным блоком данных один раз в месяц, так что я могу смириться с этим и предположить, что это проблема «потерянного пакета» (т.е. бог знает, но мы компенсируем).

Другая наиболее важная (и раздражающая) повторяющаяся проблема заключается в том, что, когда по какой-то причине мы выполняем крупную загрузку или обновление (или перезагрузку) на одном конце и должны разорвать ссылку, тогда ЗАГРУЗИТЬ ДАННЫЕ ИЗ МАСТЕРА не работает, и у меня вручную выгрузить с одного конца и загрузить с другого, что в настоящее время является довольно сложной задачей, перемещая около 0,5 ТБ данных.

Есть ли софт для этого? Я знаю, что MySQL («корпорация») предлагает это как ОЧЕНЬ дорогую услугу (полная репликация базы данных). Что там делают люди? По своей структуре мы запускаем автоматическое переключение при отказе, когда, если один сервер не работает, основной URL-адрес просто разрешается на другой сервер.

Ответов (3)

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

Задокументировано в журналах изменений 5.0.56, 5.1.24 и 6.0.5 следующим образом:

   Network timeouts between the master and the slave could result
   in corruption of the relay log.

http://bugs.mysql.com/bug.php?id=26489

GoldenGate - очень хорошее решение, но, вероятно, такое же дорогое, как репликатор MySQL.

Он в основном ведет журнал и применяет изменения в зависимости от того, что было совершено. Они поддерживают двунаправленную репликацию (сложная задача) и репликацию между гетерогенными системами.

Поскольку они работают, обрабатывая файл журнала, они могут выполнять крупномасштабную распределенную репликацию, не влияя на производительность на исходной машине (ах).

Мы в Percona предлагаем бесплатные инструменты для обнаружения расхождений между мастером и сервером и для восстановления их синхронизации путем повторного применения минимальных изменений.