Репликация MySQL: временно запретить репликацию определенных операторов SQL на ведомые устройства? - PullRequest
7 голосов
/ 10 декабря 2008

Я хочу подключиться и выполнить один (или иногда несколько) операторов SQL, а НЕ реплицировать их на ведомые устройства.

У меня нет конфигов replicate-do или replicate-ignore, поэтому я не могу use некоторую не реплицированную базу данных, из которой можно отправлять команды. И я знаю о:

set global sql_slave_skip_counter = 1

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

Ответы [ 2 ]

15 голосов
/ 10 декабря 2008

SET sql_log_bin=0 - это то, что вы ищете. Требуется SUPER priv., И вы отключите запись команд из вашего сеанса, пока вы не установите его обратно в 1. См. http://dev.mysql.com/doc/refman/5.0/en/server-session-variables.html#sysvar_sql_log_bin

SET sql_log_bin=0;
UPDATE ... ;
INSERT ... ;
DELETE ... ;
SET sql_log_bin=1 ;
2 голосов
/ 08 ноября 2011

БУДЬТЕ ОСТОРОЖНЫ .....!

SET sql_log_bin=0;

Главный MySQL сервер автоматически устанавливает это значение 0 на 1 через некоторое время (примерно через одну минуту). Он не ждет, пока мы явно не установим его на 1. Так что, по моему опыту, это совсем не безопасный способ отключить бинарное ведение журнала .....!

...