Что на самом деле реплицируется на подчиненное MySQL? - PullRequest
1 голос
/ 14 марта 2011

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

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

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

Есть ли у ведомого устройства способ получить только ВСТАВЛЕННУЮ ВСТАВКУ от ВСТАВКИ ... ВЫБРАТЬ на мастере?

Ответы [ 2 ]

5 голосов
/ 14 марта 2011

Это действительно происходит?

Возможно.

Или есть способ узнать, какие команды были отправлены ведомому от ведущего устройства, чтобы проверить это поведение?

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

Вы, вероятно, находитесь в режиме на основе выписки , который был установлен по умолчанию целую вечность. Вы хотите быть в режиме на основе строк или в гибридном режиме , если эти операторы INSERT INTO ... SELECT являются проблемой. Эти параметры доступны только в MySQL 5.1 или выше.

0 голосов
/ 14 марта 2011

Фактические запросы выполняются.ВСТАВИТЬ ... ВЫБЕРИТЕ единственный способ обойти вас сами.Запустите команду select, сохраните результат в памяти, затем выполните массовую вставку.

...