Репликация MySQL Binlog является “Мешком Вреда”. Есть ли какие-либо хорошие альтернативы?

  1. Состояние некоторых задач изменилось, его необходимо обновить в schedule ().
  2. Некоторые задачи 'работают и еще много работы, график () для баланса.
6
задан Community 23 May 2017 в 12:18
поделиться

3 ответа

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

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

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

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

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

10
ответ дан 9 December 2019 в 22:41
поделиться

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

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

0
ответ дан 9 December 2019 в 22:41
поделиться

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

Оба помогут ускорить ваш Slave с небольшим уровнем дополнительного риска, если у вас произойдет сбой сервера.

1
ответ дан 9 December 2019 в 22:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: