2

It seems MySQL does not support the flag "NO_ WRITE_ TO_ BINLOG" for TRUNCATE. So I have to wait until delay is 0, then stop the replication, make the TRUNCATE of the table/s, reset the master, and then start replication again. Really painful. Any other suggestion?

4

3 回答 3

3

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

设置 SQL_LOG_BIN = 0;
截断表;
设置 SQL_LOG_BIN = 1;

这确实需要您具有 SUPER 特权,因为您通过不将 TRUNCATE 发送到从属服务器来有效地破坏复制。

于 2008-10-07T14:14:51.157 回答
1

TRUNCATE 不能轻易使用,因为它本质上只是将数据丢弃在地板上而没有记录它这样做的事实。它在事务上是不安全的并且无法从中恢复,因此它与复制不兼容。即使您设法在复制设置中使用 TRUNCATE,您复制的数据也会损坏,或者充其量是无效的。

于 2008-10-07T14:18:33.287 回答
0

TRUNCATE 是相当严厉的。你可以只用一个 DELETE 查询吗?

于 2008-10-07T11:47:59.973 回答