SQL Server2008数据库镜像实施笔记

栏目:技术文章 发布时间:2026-04-26 09:25

最初在为公司设计SQL Server数据库镜像的时候,首先考虑的是高可用性(三台计算机,一台见证服务器,一台做主数据库,一台做镜像)

在虚拟机环境下部署成功,一切都是那么的完美。 故障转移3秒之内就可以顺利完成。

1.高可用性的实施代码:

主体数据库

/********************************************************

--在 HOST_A 上为 HOST_C 创建一个登录名。

/****************************

见证服务器执行

*****************************/

--ALTER DATABASE MirrorDB SET PARTNER OFF

--在 HOST_C 上为 HOST_A 创建一个登录名。

CREATE  ENDPOINT Endpoint_Mirroring

BACKUP  CERTIFICATE HOST_A_cert TO  FILE  =  'e:HOST_A_cert.cer';

ALTER  DATABASE crm SET  PARTNER  =  'TCP://10.10.10.8:5022';

 

镜像数据库

USE  master;

BACKUP  CERTIFICATE HOST_B_cert TO  FILE  =  'e:HOST_B_cert.cer';

ALTER  DATABASE crm SET  PARTNER  =  'TCP://10.10.10.6:5022';


  可能有朋友会比较奇怪,你这里也没有使用ALTER DATABASE crm SET SAFETY FULL; 按理应该是高性能模式才对呀?   其实这个问题是这样的,我的这个SQL Server2008默认已经是将事务安全模式设置为full了,即使是手动设置也一样,并且我实施的时候SQL Server2008不支持将事务安全模式设置为OFF。

OK,一切都设置好了,那么就可以模拟服务器真的down机时候的操作了,后续的工作我也把代码做了总结,具体代码如下:

手动故障转移代码

--主备互换

--主机执行:

ALTER DATABASE crm SET PARTNER FAILOVER

--主服务器Down掉,备机紧急启动并且开始服务
ALTER DATABASE crm SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS

原来的主服务器恢复,可以继续工作,需要重新设定镜像
--备机执行:
USE master
ALTER DATABASE crm SET PARTNER RESUME  --恢复镜像

ALTER DATABASE crm SET PARTNER FAILOVER; --切换主备

3.监视数据库镜像

SQL Server提供了一些视图,可以供查询镜像的各种状态,到时候可以根据这个做一个监视,一旦发生故障转移群集,发邮件给系统管理员,好让系统管理员及时的知道数据库服务器发生了什么问题,即使的做故障分析、排查。有关这方面资料,MSDN上已经提供太多资料了。感兴趣的朋友可以去查这方面的资料。

在文章的最后提出一个有争议的问题:SQL Server(2008)高级别保护模式,只要有一台数据库能够保证正常运行,就可以正常对外提供服务。我的实验结果是这样的,这的确跟以往的理论知识有些出入。

还等什么,赶快搭环境动手实验一下吧,体验一下SQL Server镜像带来的快感。 希望有兴趣的朋友们一起学习探讨。