我有2个异构数据库。一个在mysql中,一个在ms sql中。
我想让它们保持同步。
数据将定期流动,信息流动将是双向的。
有没有人有什么策略/方法?
发布于 2009-12-13 19:32:53
假设您不打算使用某种形式的现成解决方案,那么您有一些选择可供选择。基本上,您要做的是找到一种方法来捕获一个数据库中所做的更改,并将其复制到另一个数据库中。
完全提取和增量
对要同步的表中的每一行进行完整的、按键排序的转储,并将其与上次运行的同步中的转储逐行进行比较。对输出进行排序可以大大加快比较过程,因为您可以确定行是否被更改、删除或删除,而不需要
对于较小或中等大小的数据库,此选项应该是非常可行的。
事务日志
分析数据库中的事务日志,以找出发生了哪些更改,并将这些更改应用于其他数据库。
如果您可以依赖可用的日志,这可能是一个好主意。
触发
使用触发器记录更改,并将其复制到其他数据库。
应用程序中的同步
只需确保应用程序同时写入两个数据库即可。
database.
如果应用程序只通过几个受控模块(即,没有太多地方可以忘记同时更新两个数据库)。在托管程度较低的设置中(即多个应用程序/不受控制的或分解不佳的数据库访问/即席脚本)这根本不是一个选项。
发布于 2009-12-13 19:02:05
阿南德,你可以在谷歌上找到这个。
sync mysql and mssql
我没有用过这个软件,但他们提供免费试用
发布于 2009-12-14 22:34:17
首先需要更多信息:
通常,如果您需要实时同步,那么您最终会得到一个复制解决方案。这通常可以处理非常少量的转换(通常通过存储的过程进行)。这是一个典型的商业解决方案,嗅探日志。由于大多数人不希望代码依赖于日志格式,因此他们几乎总是使用打包的解决方案。
如果你不需要实时同步,拥有大量的数据量,或者有很大的转换需求,那么你最终会得到一个ETL解决方案。有相当多的选择,但它们大多是商业的。另一方面,如果您花时间了解最佳实践,那么您自己开发它们并不困难。奇怪的是,人们对此并没有太多的讨论。总之,Adam Luchjenbroers在识别ETL的大多数方法方面做得很好。如果你有能力在快照之间松散事务,我推荐文件增量方法-因为它是最准确的方法,因为所有其他方法都依赖于时间戳、触发器或日志,而这些时间戳、触发器或日志不能捕获所有更改。
https://stackoverflow.com/questions/1896138
复制相似问题