Binlog MySQL Replication - это «мешок вреда». Есть ли хорошие альтернативы? - PullRequest
6 голосов
/ 07 ноября 2008

Я честно попробовал это влево и вправо и все еще обнаружил, что мой зеркальный сервер, настроенный как репликационный раб все еще отстает. Пользовательская база моего приложения продолжает расти, и теперь я дошел до того, что я не могу продолжать «закрывать» базы данных для «повторной синхронизации» (даже по выходным).

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

Приветствия

/ * т.пл. 1019 *

Ответы [ 3 ]

10 голосов
/ 07 ноября 2008

Ваш мастер выполняется параллельно, а ваш подчиненный - последовательно. Если ваш мастер может обработать 1,5 часа вставок / обновлений / выполнений за 1 реальный час, ваш раб будет отставать.

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

Многие крупные сайты разделяют свои базы данных: рассмотрите возможность разделения своего главного + подчиненного на несколько кластеров главный + подчиненный. Затем разделите свою клиентскую базу по этим кластерам. Когда раб начинает отставать, пора добавить еще один кластер.

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

Обновление (2017) : MySQL теперь поддерживает параллельные подчиненные рабочие потоки . Есть еще много переменных, которые приведут к отставанию подчиненного, но подчиненным больше не нужно писать в последовательном порядке. Выбор сохранения порядка фиксации параллельных подчиненных потоков является важным параметром, чтобы определить, является ли точное состояние подчиненного в любой момент времени критическим.

1 голос
/ 07 июня 2010

Вы пробовали: 1) SET innodb_flush_log_at_trx_commit = 0 2) SET sync_binlog = 0

И то, и другое поможет ускорить работу вашего ведомого устройства с небольшим уровнем дополнительного риска в случае сбоя сервера.

0 голосов
/ 21 февраля 2010

Добавление памяти к ведомому, вероятно, поможет. Мы прошли от 32 до 128 мегабайт, и отставание более или менее ушло. Но это не дешево и не будет достаточно во всех ситуациях.

Покупка третьего сервера, вероятно, не сильно поможет, хотя, скорее всего, вы просто получите еще одного отстающего раба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...