SQL Server 2008 数据库镜像部署实例之三 配置见证服务器实用指南

作者:袖梨 2026-09-03

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“SQL Server 2008 数据库镜像部署实例之三 配置见证服务器”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

在这个场景下,前面已经完成了镜像数据库的设置,同时进行那个了故障转移测试。下面将部署见证服务器,实现自动故障转移。

一、关于见证服务器

1、若要兼容自动故障转移,必须在高安全性模式下设置数据库镜像会话,同时且还要具有第三个服务器实例(也称为“见证服务器”)。见证服务器是 SQL Server 的可选实例,它能使高安全性模式会话中的镜像服务器识别出是否要启动自动故障转移。与这两个伙伴不同的是,见证服务器并不能用来数据库。见证服务器的唯一角色是兼容自动故障转移。

2、为了给数据库设置见证服务器,数据库所有者为见证服务器的角色分配数据库引擎实例。见证服务器实例能够与主体服务器实例或镜像服务器实例运行于同一台计算机上,但这样会明显降低自动故障转移的可靠性。所以建议见证服务器应位于另外一台计算机上。

3、在高性能模式下,见证服务器对可用性会有不利影响。如果见证服务器是针对数据库镜像会话而设置,则主体服务器必须至少连接到一个其他服务器实例,即镜像服务器或见证服务器,或者是连接到这两个服务器。否则,将无法采用数据库,同时且不能进行强制服务(可能丢失数据)。因此,对于高性能模式,我们极力建议您始终将见证服务器设置为 OFF。

二、关于自动故障转移

1、只有在高安全性模式(“具有自动故障转移功能的高安全性模式”)下运行同时且具有见证服务器的数据库镜像会话兼容自动故障转移。在具有自动故障转移功能的高安全性模式下,同步数据库后,如果主体数据库变得不可用,则会发生自动故障转移。自动故障转移将导致镜像服务器接管主体服务器的角色,并使其数据库的副本联机以作为主体数据库。因为每个在主体数据库中提交的事务同时也在镜像数据库中提交,所以需使数据库保持同步以防止在故障转移过程中丢失数据。

2、自动故障转移所需条件

A、数据库镜像会话必须在高安全性模式下运行,同时且必须处理见证服务器。

理解这一步时,B、镜像数据库必须已经同步。这将保证发送到镜像服务器的所有日志都已写入磁盘。

实际处理时,C、主体服务器已中断了与其余数据库镜像设置的通信,而镜像服务器和见证服务器将保留仲裁。但是,如果所有服务器实例都已中断通信,而见证服务器和镜像服务器稍后重新建立通信,则不会发生自动故障转移。

D、镜像服务器已检测到丢失了主体服务器

E、镜像服务器检测主体服务器故障的方式取决于故障是硬故障还是软故障。

更多自动故障转移内容参考

(链接已移除)

三、自动故障转移原理

1、如果主体服务器仍在运行中,则将主体数据库的状态更改为 DISCONNECTED 同时断开所有客户端与主体数据库的连接。

2、见证服务器和镜像服务器将主体服务器注册为不可用。

3、如果重做队列中有任何等待的日志,则镜像服务器将完成前滚镜像数据库的操作

4、前一个镜像数据库作为新的联机主体数据库,恢复借助尽快回滚未提交的事务将这些事务全部清除。锁将隔离这些事务。

5、当前一个主体服务器重新联接到会话时,它将认定其故障转移伙伴现在拥有主体角色。前一个主体服务器接管镜像角色,同时将其数据库作为镜像数据库。新的镜像服务器会尽快将新的镜像数据库与主体数据库同步。新的镜像服务器重新同步数据库后,就能够再次执行故障转移,但按反向执行。。

下图说明了自动故障转移的一个实例。

四、在见证服务器上看装SQL Server 2008

详见《SQL Server 2008 数据库镜像部署实例之一》

五、设置见证服务器

1、主体数据库服务器上,右键点击数据库,选择任务——镜像

2、在弹出的数据库属性页面中,选定镜像页,点击右侧的设置安全

3、点击下一步,选择包括见证服务器

4、点击下一步,进行见证服务器设置

5、点击两次下一步,填入见证服务器地址或机器名及站点名称

6、填入服务账户

7、查看摘要信息,点击完成

六、测试自动故障转移

1、当前主体服务器为Hytest01,镜像数据库是Hytest02

2、将主体服务器Hytest1的网络断开,看数据库是否自动转移到镜像服务器Hytest02上

镜像设置显示,主体服务器、镜像服务器角色也互换了。

理解这一步时,有人会说,两个数据库,IP地址都不一样,怎么写连接代码呢?难道出现故障后要手动更改代码吗?其实采用ADO.NET或者SQL Native Client能够自动连接到故障转移后的伙伴,连接字符串如下所示所示:

ConnectionString="DataSource= A;Failover Partner=B;Initial Catalog=AdventureWorks;Integrated Security=true;" DataSource= A;

这样设置之后,客户端就能够自动切换数据库了

至此SQL Server 2008 的镜像高可用设置实例全部完成。

您可能感兴趣的文章:
  • SQLServer 镜像功能完全实现
  • SQL Server 2008 R2数据库镜像部署图文教程
  • SQL Server 2008 数据库镜像部署实例之一 数据库准备
  • 实际处理时,SQL Server 2008 数据库镜像部署实例之二 设置镜像,实施手动故障转移
  • SQL Server 2005 镜像构建手册(sql2005数据库同步镜像方案)
  • SQL Server中避免触发镜像SUSPEND的N种方法

相关文章

精彩推荐