Назад | Перейти на главную страницу

Репликация mysql, медленная повторная синхронизация ведомого устройства после ошибки

У меня есть раб, который примерно месяц назад получил ошибку и сильно отстал от мастера. Я исправил ошибку и теперь играю в догонялки с мастером, но все идет очень медленно. Это происходит в 1,3 раза в реальном времени. Я использовал менее 10% ресурсов базы данных, когда эти записи происходили впервые, поэтому скорость сервера не должна быть проблемой.

Есть ли какие-то настройки, которые я могу переключить, чтобы помочь ведомому догнать ведущего?

MySQL использует только один поток на ведомом устройстве для применения реплицированных операторов, исходящих от ведущего устройства.

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

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

Я рекомендую вам заглянуть на этот сайт для получения более подробной информации о задержке репликации. http://www.mysqlperformanceblog.com/2007/10/12/managing-slave-lag-with-mysql-replication/

Также есть инструмент в Мааткит набор инструментов, который вы можете рассмотреть:

mk-slave-prefetch

Этот инструмент реализует знаменитый алгоритм «оракула» Пола Такфилда для чтения перед подчиненным потоком SQL в журналах реле, перезаписывая запросы как SELECT и выполняя их для прогрева кэшей подчиненного устройства. Это может помочь подчиненному потоку SQL, связанному с вводом-выводом, работать быстрее при некоторых условиях, поскольку ему не нужно ждать завершения такого количества операций ввода-вывода.

Просто мой 2с.

Удачи.

Фрэн.