2009年4月13日星期一

镜像数据库故障切换后的发布订阅延续问题

问题:
主体服务器A,镜像服务器B,2台服务器上的数据库DB_Mirror已经配置成镜像。
主题服务器A上已经新建了发布DB_Mirror_Repl,节点服务器C已经成功订阅了这个发布。
请问如何在发生故障转移的时候,节点服务器C继续能从镜像服务器B上同步过来数据。

参考答案:
有两个方案可以参考:
1. 暂时摒弃SQL的发布订阅机制,使用TableDiff等追差异工具定时运行,以保障数据同步。
本方案的主要应用场景是,服务器A和服务器B的硬件配置不对等,当发生切换的时候,DBA需要争取时间修复服务器A,等修好后再切换回服务器A。

2. 配置服务器A到C的复制过程中,将各个环节的脚本妥善保管,并针对服务器B进行相应修改,当切换发生后,在服务器B上应用脚本,实现快速配置发布订阅关系,中间可以借助TableDiff弥合数据差异,并跳过发布订阅初始化的漫长过程,达到快速恢复的目的。
本方案的应用场景是,服务器AB硬件配置相当,切换回去以A为主不是必须的情况。

微软官方文档说可以支持镜像服务器配置复制,有空研究一下
http://technet.microsoft.com/zh-cn/library/ms151799(SQL.90).aspx

镜像数据库本身是基于数据库的,不是基于服务器的,所以,超出镜像数据库本身的对象都要在第二服务器上创建,比如login,链接服务器、jobs等等,这些细节的关注是在故障发生时快速修复的
前提条件。