我正在为下面的问题寻找一个可能的解决方案。
首先,我的处境是:
我有两个数据库,一个oracle数据库和一个mysql数据库。虽然他们有很多相似之处,但并不完全相同。oracle db和mysql db上都有很多表,但是oracle表通常更广泛,包含更多的列。
数据库的情况是无法改变的,所以我必须处理这个问题。
现在我要找的是:
我想将数据从oracle同步到mysql,反之亦然。必须实时或尽可能接近实时。因此,当在一个数据库上进行更改时,必须尽快将它们同步到另一个数据库。
也不是每个表都必须同步,因此解决方案必须提供一种选择哪些表必须同步,哪些不需要同步的方法。
因为数据库不完全相同,所以我认为复制不是一个选项。但什么是?
我希望你们能帮我找到一种方法或者一种工具来做我需要的事情。也许你知道一些好的论文/文章我可以用吗?
谢谢!

最佳答案

我读了你的问题和答案。我在Oracle、SQL、ETL和数据仓库方面都做过工作,以下是我的建议:
有一个现成的etl工具是很好的。但是,如果您的应用程序足够大,使您需要定制的etl工具,我建议您使用自制的etl过程。
如果事务数据库位于Oracle上,则可以在键表上设置触发器,这些触发器将进一步触发用C、C++或Java编写的外部过程。
使用外部过程的原因是一次能够与两个数据库(Oracle和MySQL)通信。
您可以阅读有关Oracle外部过程here的更多信息。
如果不是通过extproc,您可以用java或.net开发一个单独的应用程序,从第一个数据库中提取数据,根据您的业务规则对其进行转换并将其加载到您的仓库中。
在您选择的两种方法中,如果您实现自己的工具,而不是使用现成的工具,那么您将对etl过程拥有更大的控制权。

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

10-16 11:23
查看更多