2014-03-26 40 views
1

我需要保持两个不同数据库同步。触发器似乎是最好的事情,但两个数据库位于不同的主机上。我见过的大多数触发器教程似乎都假定触发器在同一个数据库上更新不同的表,或者至少在同一个主机上更新不同的表。不同主机上不同数据库之间的触发器

有什么办法来配置数据库来更新另一个完全不同的服务器上的另一个数据库与触发器?

回答

0

没有。这不能用常规触发器完成。

MySQL允许使用其他语言编写用户定义函数;这就提供了访问MySQL中不可用的资源的优势。用户定义函数可以从触发器中调用,但这种方法存在一些明显的缺点;我不认为你(或其他人)真的想要走这条路。我只是提到它,因为它是可用的。

作为一种替代方案,您可以有一个单独的进程,从MySQL外部执行同步操作。

从触发器中,您可以将行插入到“事务”表中。外部进程可以轮询“事务”表中的新行,并连接到其他数据库(甚至非MySQL数据库)并发出DML,或执行任何操作,并将“事务”表中的行标记为已完成,失败或随你。但是,这将是一种异步方法,而不是同步方式,如果事务在远程系统上成功完成,触发器就没有任何“知道”的方式。

作为另一种替代方案,MySQL提供复制功能,可以将二进制日志发送到远程数据库,以保持从“主”复制“从”数据库。

但是,如果您问是否可以使用DML触发器中可用的本地语法来实现此目的,那么答案是否定的,这不会发生。


还有其他数据库(诸如Oracle和SQL Server),其执行从数据库内的远程数据库的支持连接(甲骨文“数据库链接”和SQL Server“链接服务器”。这些也支持两阶段提交,所以你可以做真正的“多数据库”事务。

相关问题