在MySQL REPLICATE上取消删除

时间:2015-06-15 08:40:14

标签: mysql triggers replication

我正在寻找一种方法来阻止MySQL复制主/从的DELETE语句。

在我的情况下,Master是一个实时数据库,有新的条目(不超过一周),Slave是一个存档数据库,必须包含所有条目。

我的测试有几个问题:

  • 如果我在Slave BEFORE DELETE触发器中引发异常,例如SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'DELETE canceled';

SQL异常引发错误并停止我的Slave。

  • 如果我发出警告,则Slave继续运行但删除未被取消
  • 我无法修改MySQL的my.cnf。
  • 我不能在master上使用boolean属性,在slave上显示(主数据库必须尽可能少)。

我几天以来就把这个问题放在脑子上,而且我的想法已经用完......

1 个答案:

答案 0 :(得分:0)

最好将删除写入审计表。

防止从站中删除的问题是:如果您尝试插入一个已在主服务器中删除的pk的行,并且如果您以某种方式阻止了从服务器中的删除,则从服务器中的插入将失败。

您可以在具有相同结构的其他表中跟踪已删除的行。

http://www.techonthenet.com/mysql/triggers/before_delete.php

CREATE TRIGGER audit_before_delete
BEFORE DELETE
   ON yourtable FOR EACH ROW

BEGIN

   -- Find the deleted row and insert record into audit table
   -- insert into yourtable_audit values (old.id, old.name, old.description);

END;