MySQL复制表:如何防止触发链?

时间:2019-06-18 20:18:30

标签: mysql database-replication database-trigger

我编写了一个触发器来在复制表上记录更新。触发器将插入一个单独的表中。我们使用默认情况下基于语句的MIXED复制。触发器旋转并在服务器之间级联。这是预期的结果,但不是期望的。

我不想取消此表上的复制。 以下链接指示使用uuid()或CURRENT_USER(以及其他)将导致服务器动态使用基于行的复制,我认为这将导致阻止级联触发器。 https://dev.mysql.com/doc/refman/8.0/en/binary-log-mixed.html

create trigger triggerAuditClientTable
after update on client FOR EACH ROW
BEGIN
    insert into triggerTableAuditLog
    (tableName, newValues, oldValues, hostname)
    values
    ('client', 
    concat('clientId: ', new.clientId, '; lic: ', new.lic, '; peruser: ', new.peruser ),
    concat('clientId: ', new.clientId, '; lic: ', old.lic, '; peruser: ', old.peruser ), 
    @@hostname);
END//
STOP SLAVE SQL_THREAD;
CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE  = ('triggerTableAuditLog');
START SLAVE SQL_THREAD;

我可以在此表上设置一些内容来防止这种级联复制吗?

0 个答案:

没有答案