Подтвердить что ты не робот

Mysql-do блокировки распространяются по репликации?

У меня есть репликация master-slave (-ов) Mysql с таблицами MyISAM. Все обновления выполняются на главном устройстве, и выбор выполняется на главном или подчиненном устройстве.

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

Скажем, у меня есть table_A и table_B. Я инициирую блокировку на table_A и table_B на главном устройстве и начну выполнять обновление. В это время никакое другое соединение не может читать table_A и table_B от мастера? Но что, если в это время другое соединение пытается прочитать таблицы с ведомого, они могут это сделать?

4b9b3361

Ответ 1

Все, что реплицируется MySQL, можно найти в двоичных журналах.

Вы можете запустить следующую команду, чтобы просмотреть подробности.

show global variables like 'log_bin%';

log_bin_basename сообщит вам путь к вашим двоичным журналам с именем базового файла.

и запустите

show binary logs

чтобы найти двоичные файлы, которые в настоящее время присутствуют на вашем сервере.

Вы можете проверить фактические команды, которые записываются в файл, с помощью команды mysqlbinlog вместе с именем файла или запуском show binlog events ... из MySQL CLI.

Кроме того, проверьте, что вы используете binlog_format.

В принципе - блокировка таблиц напрямую не распространяется на ведомые устройства, но в то время сыворотка будет выполнять выполненные обновления, при необходимости они будут выполнять блокировку обновленной таблицы.

Ответ 2

Насколько я знаю, блокировки записи не распространяются на binlog, вы можете проверить это, выполнив быстрый тест и посмотрев на binlog. Если вы хотите избежать проблем с мастером, а по какой-то причине не можете перейти на InnoDB, подумайте о том, чтобы интегрировать что-то вроде GET_LOCK() в ваше приложение, а не полностью блокировать таблицу. MyISAM довольно неудобен, когда дело доходит до concurrency.