我现在两地有两个不同的SQL数据库,一个有公网地址,一个是内部的SQL数据库,两个数据库都有不同的操作,要双方互相更新,公网
数据库用的mysql 5.0,均跑在windows 平台下。有两个数据库。数据库 A 是内网的数据库。数据库 B 是在外网。两边的库同时都在运行操作。
要把各自的本地更新数据更新到另外一个库内。做到数据库同步。两边数据库只有外网数据库B是有固定IP。内网的没有固定的IP。
上网找了好久。有关数据库更新的方案大致有三种。我打算都实验一下。看效果能不能达到要求。
1. 设置 mysql 来做到更新。
2. 用工具软件同步更新。
3. 编程实现。
以后我会一一把实验结果放出来。如果有做过类似工作的朋友们能一起讨论讨论。小弟我实在是没搞过这样的东西。一点都不会啊。没办法,只能硬着头皮做了。编程以前就有同事做这个事情实现了。但是后来他走了,现在就是我来接手这件事情了。以前实现的效果有很多不理想的地方,所以我要找到更好的方法来做。
思想是这样的。在两边的库内各自设置2个表,一个是用来发送到远端的本地更新数据包,叫send表。一个是用来接收远端发送过来的更新数据包的表,叫receive表。
通过触发器TR来获取对各表的 upd , insert , delete 操作。把更新的数据包放到send表中。当然,会过滤掉从receive表中的数据。
然后在各个端安装2个webservice 。一个用于把打包的更新数据包发送到远端。另一个用于解析数据包,并插入到本地库内。如图所示:
缺点就是:
1. mysql 对触发器的管理不便,库比较大,有百来张表,写触发器很麻烦。
2. 如在批量更新的操作中,upd的触发器使用频繁。影响效率。
所以没法子,只能摒弃或改进触发器的方法。不过webservice的设计还是不错的。