SQL Server数据同步的研究(单向/双向)
思路:
1、做中间件(简单:定时采集;复杂:分布式,订阅中心的形式,如微信的中间件:https://github.com/tencent-wechat/phxsql)
2、采用触发器的形式,有数据触发是进行多服务器的来回数据分发。
3、基于计划任务的形式触发存储过程进行同步,和定时任务差不多
4、采用SQL Server的发布订阅功能(注意,经过测试这个是可以连接外网的;技巧:通过SQL Server配置管理器新建别名为外网机器的计算机名+IP+端口,然后就和内网一样的操作;且通过合并发布可以实现双向;通常这个功能同步的时间为1分钟的间隔)参考:http://www.cnblogs.com/EasonJim/p/6115142.html。
数据同步还需要考虑的问题:
1、如果是用于负载均衡时的数据,那么要考虑两个不同的用户同一时间在两台数据库上插入数据导致主键ID重复
2、实时性对于业务表现层的处理,比如延迟或者假象处理
所以,在做同步数据库,统一的发号器可以很大程度上解决ID重复的问题。
如果考虑负载均衡而无需考虑ID重复的问题,那么可以尝试”读写分离“的方案,参考老D的博客实现的事务发布:http://www.cnblogs.com/daizhj/archive/2010/06/21/dbsnap_master_slave_database.html