Вопросы по репликации MySql - PullRequest
2 голосов
/ 09 марта 2011

Я смотрю на переключение с отдельного отдельного сервера MySql на установку Master-> Slave Replication (с использованием 2 серверов). В настоящее время существует ряд тяжелых заданий на запись (вставка / обновление / удаление) (для загрузки свежих данных из внешних источников), которые выполняются в течение нескольких часов каждый день. Эти задания замедляют «чтение» (выборку) производительности в соответствующих таблицах. Надеясь, что репликация немного поможет с этой проблемой (среди других проблем, таких как резервные копии).

Вопросы:

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

2) При чтении документов звучит так, как будто по умолчанию используется SBR (репликация на основе операторов). Не уверены, если изменить это на RBR (на основе строк)? Или "смешанный". Что было бы рекомендовано? Я склонен остаться с дефолтом, но на самом деле не уверен.

3) Когда некоторые задания завершены, мы в настоящее время запускаем ANALYZE & OPTIMIZE, чтобы восстановить файловое пространство для соответствующих таблиц, в которых выполнялись тяжелые удаления / обновления. Я понимаю, что эти команды будут реплицированы на ведомое устройство, если мы не запустим их с «NO_WRITE_TO_BINLOG». Не уверен, как влияют ведомые таблицы при выполнении большого количества обновлений / удалений. Нужно ли даже копировать эти команды на раба? Основная проблема заключается в том, что OPTIMIZE, в частности, блокирует таблицу, а на действующей производственной площадке (и большой таблице) это очень большая проблема.

Заранее спасибо за любые указания / понимание!

1 Ответ

2 голосов
/ 09 марта 2011

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

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

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

Полезное чтение http://dev.mysql.com/doc/refman/5.0/en/replication-faq.html

...