如何使用TRUNCATE语句避免MySql将其写入binlog?

时间:2008-10-06 21:42:50

标签: mysql database replication binlog

似乎MySQL不支持TRUNCATE的标志“NO_ WRITE_ TO_ BINLOG”。所以我必须等到延迟为0,然后停止复制,使表的TRUNCATE,重置主服务器,然后再次启动复制。真的很痛苦。还有其他建议吗?

3 个答案:

答案 0 :(得分:2)

您可以使用该命令禁用会话的二进制日志记录,以执行您想要的操作。

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

这确实要求您具有SUPER权限,因为您通过不将TRUNCATE发送到从属设备来有效地破坏复制。

答案 1 :(得分:0)

TRUNCATE非常苛刻。你可以只使用DELETE查询吗?

答案 2 :(得分:0)

不要轻易使用TRUNCATE,因为它基本上只是将数据丢弃在地板上而不记录它所做的事实。它在事务上是不安全的,无法从中恢复,因此它与复制不兼容。即使您在复制设置中设法使用TRUNCATE,您的复制数据也会损坏,或者最多无效。