在不同数据库之间同步数据

时间:2013-02-19 11:55:20

标签: mysql database oracle data-synchronization

我正在寻找以下问题的可能解决方案。

首先我所处的情况:
我有2个数据库,1个Oracle DB和1个MySQL DB。虽然它们有很多相似之处,但它们并不完全相同。 Oracle DB和MySQL DB上都有很多表,但Oracle表通常更广泛,包含更多列。 数据库的情况无法改变,所以我要处理它。

现在我正在寻找以下内容:
我想将数据从Oracle同步到MySQL,反之亦然。这必须是实时或尽可能接近实时。因此,当在一个DB上进行更改时,必须尽快将它们同步到另一个DB。

同样不是每个表都必须同步,因此解决方案必须提供一种方法来选择哪些表必须同步,哪些表不同步。

因为数据库不相同,我认为复制不是一个选项。但是什么呢? 我希望你们能帮助我找到一种方法来做到这一点,或者是一种能够完全符合我需要的工具。也许你知道一些我可以使用的好文章/文章?

谢谢!

2 个答案:

答案 0 :(得分:1)

感谢您的评论。

我对ETL和EAI做了一些进一步的研究。 我发现我正在寻找一个ETL工具。

答案 1 :(得分:0)

我读了你的问题和答案。我曾在Oracle,SQL,ETL和数据仓库工作过,这是我的建议:

  1. 拥有现成的ETL工具是件好事。但是,如果你的应用程序足够大,你需要一个量身定制的ETL工具,我建议你做一个自制的ETL过程。

    • 如果您的事务数据库在Oracle上,您可以在密钥表上设置触发器,这些触发器将进一步触发用C,C ++或Java编写的外部过程。
    • 使用外部程序的原因是能够同时与两个数据库通信 - Oracle和MySQL。
    • 您可以阅读有关Oracle外部程序here的更多信息。
  2. 如果不是通过ExtProc,您可以在Java或.Net中开发一个单独的应用程序,它将从第一个数据库中提取数据,根据您的业务规则对其进行转换并将其加载到您的仓库中。

    < / LI>

    在您选择的任何一种方法中,如果您实施自己的工具,而不是使用现成的工具,您将可以更好地控制ETL过程。