MySQL Replication - 触发器不会复制到slave

时间:2012-03-21 16:48:17

标签: mysql triggers replication replicate

好的,这是我的方案

服务器在服务器上为每个站点运行主数据库和其他数据库。 更新将写入主数据库,并且触发器会将此记录插入到特定站点的相关数据库中,该站点旨在复制到站点数据库级别。

触发器工作正常,但插入的记录不会进入从属DB。我使用基于语句的复制,因为基于行不是一个选项。我也试过调用一个存储过程并将其作为一个事件,但没有任何结果。

有没有办法解决这个问题 - 就像我使用MySQL 5.1的方式

由于

下面的触发器语法

dbmaster = server master db dbsite =服务器站点DB(这是复制主机)

delimiter # 
create trigger rstreplicate after insert on dbmaster.exchange 
for each row begin insert into dbsite.exchange 
select distinct new.TYPE, new.FILENAME, new.STATUS, new.USER_ID, new.INP_DATE, new.CHG_DATE from dbmaster.exchange where new.IP='127.0.0.1'; 
end# 
delimiter ;

1 个答案:

答案 0 :(得分:0)

来自MySQL documentation

  

B.5.12:触发器是否适用于复制?

     

是。但是,它们的工作方式取决于您是否使用   MySQL的“经典”基于语句的复制功能齐全   MySQL的版本,或者引入的基于行的复制格式   MySQL 5.1。

     

使用基于语句的复制时,从属设备上的触发器是   由在主服务器上执行的语句执行(并复制   对奴隶)。

     

使用基于行的复制时,不会在。上执行触发器   奴隶是由于在主服务器上运行的语句然后   复制到奴隶。相反,当使用基于行的复制时,   应用在主服务器上执行触发器所引起的更改   在奴隶上。

因此,您需要触发触发器复制到从属服务器的语句,并且您需要在服务器上创建重复的触发器,这些触发器将响应语句应用相同的更新。

相关问题