Как я могу использовать предложение TRUNCATE, избегая MySql, чтобы записать его в binlog? - PullRequest
2 голосов
/ 07 октября 2008

Кажется, что MySQL не поддерживает флаг "NO_ WRITE_ TO_ BINLOG" для TRUNCATE. Поэтому мне нужно подождать, пока задержка не станет равной 0, затем остановить репликацию, выполнить TRUNCATE для таблиц / с, сбросить мастер и снова запустить репликацию. Действительно больно. Любое другое предложение?

Ответы [ 3 ]

2 голосов
/ 07 октября 2008

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

SET SQL_LOG_BIN = 0;
TRUNCATE TABLE ;
SET SQL_LOG_BIN = 1;

Для этого требуется, чтобы у вас была привилегия SUPER, поскольку вы фактически прерываете репликацию, не отправляя TRUNCATE на ведомое устройство.

0 голосов
/ 07 октября 2008

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

0 голосов
/ 07 октября 2008

TRUNCATE довольно властный. Можете ли вы обойтись только с помощью запроса DELETE?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...