如何复制两个不同的数据库系统?

时间:2010-01-08 07:49:43

标签: mysql replication mongodb

我不确定,如果它完全适合stackoverflow,但是因为我正在寻找一些代码而不是工具,我认为它确实如此。

我正在寻找一种如何复制/同步不同数据库系统的方法 - 在这种情况下:mysql和mongodb。我们为不同的目的运行。我们从一个mysql数据库开始,稍后为特殊应用程序添加了mongodb。我们希望在两个数据库中都有数据,我们希望在mongodb中分别在mysql中使用dbrefs中的约束。例如:我们需要mysql中的用户记录,但也需要在mongodb中为表之间的引用分别对象。目前我们有一个cronjob,它转储mysql数据并将其导入mongodb。然而,虽然它运作良好,但这不是我们想要的解决方案。

我认为目前单向复制就足够了 - mysql-> mongodb,重要的是,复制工作在“实时”,就像mysql master-> slave replication一样。

是否已经有任何解决方案可以解决这个问题或想法如何实现这个目标?

谢谢!

4 个答案:

答案 0 :(得分:2)

您正在寻找的是EAI(Enterprise application integration)。有许多商业工具,但在提供的链接下,您还可以找到几个OSS解决方案。 EAI的基础是您拥有数据源和数据接收器。 EAI框架提供了在两者之间构建定制泵的工具。

我建议使用数据库触发器来启动同步或在应用程序中发送触发信号。请注意,没有密钥孔解决方案,因为同步可能会变得任意复杂(例如,如何确保所有行都被复制?)。

答案 1 :(得分:2)

SymmetricDS是一个开源的,基于Java的,支持Web的,独立于数据库的数据同步/复制软件,可以通过一些调整来实现这一目的。它有一个名为IDataLoaderFilter的扩展点,您可以使用它来实现MongodbDataLoader。

这有助于单向数据库复制。从MongoDb同步可能有点困难 - >关系数据库,但SymmetricDS团队在尝试找到解决方案时会非常有帮助。

答案 2 :(得分:0)

据我所知,您需要开发某种“控制程序”,其中包含每个DBMS的驱动程序并将其作为守护程序运行。守护程序应具有触发器或非常小的重新检查间隔以保持DB同步

答案 3 :(得分:0)

从技术上讲,您可以设置一个过程来解析MySQL服务器的二进制日志并复制相关的sql查询。我从来没有用一个不同的数据库作为奴隶做过这样的事情,但也许值得一试?