2011-10-17 41 views

回答

1

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

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

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

另一种选择是配置MySQL注销二进制日志。然后,您可以解析该二进制日志,并使用上面建议的batch/cron过程,但不必读取更新的“audit”表,就可以读取二进制日志。再次注意,如果两个位置的数据库完全相同,则可以设置复制。如果没有其他的东西,你应该能够想出一个进程来获取二进制日志到远程服务器(取决于平台),在这里可以恢复二进制日志。请参阅http://dev.mysql.com/doc/refman/5.0/en/binary-log.html

相关问题