由于公司业务原因,一台服务器放置于网通机房,一台服务器放置于电信机房,不同业务需要共享一台数据库,原先的做法是把数据库放置于网通机房服务器上,电信服务器远程连接网通机房服务器上数据库,由于网通机房带宽以及网通电信互连互通的一些原因,导致电信服务器经常无法连接上网通服务器上的数据库。经过商量后,决定分离数据库,在网通和电信服务器上都放置数据库但必须实现数据库的同步更新。
开始想到的方法是采用数据库的复制订阅功能:从网上搜索了相关文档,也实现了本机2个数据库的复制订阅测试,但要实现公网上的二台服务器上数据库的复制订阅必须要有服务器的远程操作权限,电信服务器是租用的空间,所以这种方法只好放弃。相关文档可以查阅:http://blog.csdn.net/wwwdbs/archive/2008/11/06/3237102.aspx
考虑的方法2,在程序操作时同时更新2个数据库的数据,这个方法的弊端是同时要连接2个数据库,且是不稳定的二个连接,很容易出现连接错误,影响效率。
看来要实现完全的实时同步是有点难度了,再来说一下我们公司的这个业务,公司运营三网融合电视增值服务电视黄页项目,电视黄页业务使用有线集团网通服务器数据库,大部分数据更新都是在网通服务器上进行,网通服务器上数据库的数据必须是最新的数据,不能因为连接电信服务器数据库而影响网通服务器上应用的速率和效率;电信服务器上数据库提供电视黄页网数据服务,由于电视黄页网只是公司主营业务电视黄页项目的附属产品,提供的只是电视黄页信息在互联网上的展示,所以只需要同步最基本的黄页信息就可以了,同时对实时性的要求也不是很高,考虑到这些情况,仿照数据跟踪的方法来实现数据库数据的同步,同时提供手动和自动二种方法来具体的实现。
手动:在更新完数据后,工作人员可以手动点击同步按钮,将网通服务器数据同步到电信服务器。
自动:在空闲时间,比如晚上3点,自动执行同步程序,将网通服务器数据同步到电信服务器。
操作的步骤:
需要记录的信息:数据对象数据表名、数据ID、操作类型(insert\update\delete)