【发布时间】:2010-09-15 15:13:55
【问题描述】:
似乎 MySQL 不支持 TRUNCATE 的标志“NO_WRITE_TO_BINLOG”。所以我必须等到延迟为0,然后停止复制,对表进行TRUNCATE,重置master,然后再次开始复制。真的很痛苦。还有什么建议吗?
【问题讨论】:
标签: mysql database replication binlog
似乎 MySQL 不支持 TRUNCATE 的标志“NO_WRITE_TO_BINLOG”。所以我必须等到延迟为0,然后停止复制,对表进行TRUNCATE,重置master,然后再次开始复制。真的很痛苦。还有什么建议吗?
【问题讨论】:
标签: mysql database replication binlog
不应轻易使用 TRUNCATE,因为它本质上只是将数据丢弃在地板上,而没有记录它这样做的事实。它在事务上是不安全的并且无法从中恢复,因此它与复制不兼容。即使您设法在复制设置中使用 TRUNCATE,您复制的数据也将损坏,或者充其量是无效的。
【讨论】:
您可以使用该命令为会话禁用二进制日志记录以执行您想要的操作。
设置 SQL_LOG_BIN = 0; 截断表; 设置 SQL_LOG_BIN = 1;这确实需要您拥有 SUPER 特权,因为您通过不将 TRUNCATE 发送到从属服务器来有效地破坏复制。
【讨论】:
TRUNCATE 是相当严厉的。只需一个 DELETE 查询就可以解决吗?
【讨论】: