有没有办法听MySQL写作?

时间:2011-10-17 15:01:35

标签: mysql

我想知道是否可以从外部程序收听到MySQL数据库的文章。我想要做的是在一台服务器上监听更改,并通过HTTP将这些更改发送到另一台服务器。

2 个答案:

答案 0 :(得分:1)

两种可能的解决方案:使用复制(如果可能)或database triggers

答案 1 :(得分:1)

如果可行,复制(如Kris所述)可能是您的最佳选择。但是,我会假设由于某种原因,复制在您的用例中不起作用。特别是,您提到需要通过HTTP发送它。我假设您需要在每次更新时通过HTTP调用在另一台服务器上运行的REST服务。如果这是您的用例,复制可能不是一个可行的选择。

一个选项是触发器。我不知道MySQL中可用的功能允许您直接从触发器中调用REST服务。此外,我不确定您是否愿意,因为您将大大增加每个数据库更新的延迟。相反,我建议您每次在您关心的表上进行更新,删除或插入时添加一个记录到本地表的触发器。这将是一种“审计”表。然后,构建一个读取这些表的批处理/ cron作业,并同步调用在另一台服务器上运行的外部REST服务。

另一个选项取决于用于访问数据库的语言。例如,如果您使用的是Java,则可以使用一些“代理”JDBC驱动程序,这些驱动程序可以让您将代码注入任何更新。

另一种选择是配置MySQL以注销二进制日志。然后,您可以解析该二进制日志,并使用上面建议的批处理/ cron进程,但不是读取更新的“审计”表,而是阅读二进制日志。请再次注意,如果两个位置的数据库完全相同,则可以设置复制。如果不出意外,您应该能够提出一个过程来将二进制日志提供给可以恢复二进制日志的远程服务器(取决于平台)。请参阅http://dev.mysql.com/doc/refman/5.0/en/binary-log.html