gpt4 book ai didi

mysql - 不同主机上不同数据库之间的触发器

转载 作者:行者123 更新时间:2023-11-30 23:48:44 24 4
gpt4 key购买 nike

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

有什么方法可以配置数据库以使用触发器更新完全不同的服务器上的另一个数据库?

最佳答案

没有。常规触发器无法做到这一点。

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

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

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

作为另一种选择,MySQL 提供了复制功能,可以将二进制日志传送到远程数据库,以保持从“主”数据库复制“从”数据库。

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


还有其他数据库(例如 Oracle 和 SQL Server)确实支持从数据库内部连接到远程数据库(Oracle“数据库链接”和 SQL Server“链接服务器”)。它们也支持两阶段提交,因此您可以进行真正的“多数据库”事务。

关于mysql - 不同主机上不同数据库之间的触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22675284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com