1

好的,这是我的场景

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

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

有什么办法解决这个问题 - 顺便说一下我使用的是 MySQL 5.1

谢谢

下面的触发器语法

dbmaster=server master db dbsite= server site 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 ;
4

1 回答 1

0

来自MySQL 文档

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

是的。但是,它们的工作方式取决于您是使用 MySQL 的所有版本的 MySQL 的“经典”基于语句的复制,还是 MySQL 5.1 中引入的基于行的复制格式。

当使用基于语句的复制时,从属服务器上的触发器由在主服务器上执行的语句执行(并复制到从属服务器)。

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

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

于 2012-03-21T16:56:23.333 回答