2014-03-13 60 views
0

我的问题是关于使用Linux服务器的MySQL上的主从复制。防止从属复制删除

我只是测试在MySQL复制的东西,我想知道是否有可能防止奴隶复制删除语句?

我知道从设备将复制主设备中的所有插入/删除操作。但我只想要它复制插入。

这可能吗?

+0

在试图回答之前 - 让我问你,'update'会怎么做? –

+0

对不起,这不会更新。目前只能插入和删除。更新了问题 – jeffry

回答

-1

那么它可以做到:

  • 使用SET SQL_LOG_BIN = 0;在执行您的删除之前在主要的 上删除会话。因此将阻止写入 二进制日志
  • 在从表上执行BEFORE DELETE/UPDATE/INSERT触发器以忽略 删除。
    同样的规则适用于任何声明!
+0

好吧我想这是自动完成的,你如何建议我去实施方法2? – jeffry

+0

选择你的对象,并根据你的需要改变它们! (创建这些触发器)。 –

1

参考this

有几种方法可以做到这一点。

  1. 对于 之前的相关会话运行SET SQL_LOG_BIN=0;执行删除之前。这样它就不会写入 二进制日志
  2. 在从属设备上执行BEFORE DELETE触发器以忽略 删除。

    对于我不想复制的语句使用方法#1。它需要SUPER特权。

+0

好吧,我想这是自动完成的,你如何建议我去实施方法2? – jeffry

+1

#2是不可能的。你不能通过触发器在查询中停止一个动作而不会抛出一个异常,这应该反过来停止复制......而对于基于行的二进制日志事件,从属的触发器也不会触发,因为行改变了由于主机上的触发器触发而引起的故障被发送到从机,因为行更改并且从机上的触发器操作将是多余的。 –