SQL Server 2005 database mirroring

1.大致的环境准备

三台服务器,角色分别是:principal,mirror,DC/DNSSQL Servermirror技术最好在MSdomain中进行,会避免很多不必要的麻烦,例如如下报错信息就是个很典型的问题,trouble shooting起来也足够喝一壶的了。

TCP://principal.bangel.com:5022 的数据库镜像连接错误 4 'An error occurred while receiving data: '64(指定的网络名不再可用。)'.'

 

1.1 principal server

sqlserver01.bangel.com

192.168.56.114

sqlserver实例:sql01

 

1.2 mirror server

sqlserver02.bangel.com

192.168.56.117

sqlserver实例:sql02

 

 

 

1.3 domain and DNS

dc.bangel.com

192.168.56.109

创建一个域用户,用于安装、管理两个sqlserver实例,名称为sqlmirror,此用户隶属于每个服务器本地的administrators组里面,使得每个server上的sqlserver各种服务登录用户都是这个域用户bangelsqlmirror

 

1.4 关于witness server

这里没有用到witness server,没打算做“自动failover”,如果你需要“自动failover”的功能,需要配置witness server。这里仅仅计划使用“手工的failover

 

2.principal server的准备

使用bangelsqlmirror这个domain user登陆主机,安装SQL Server 2005并将补丁打到SP4。数据库的实例名称命名为:sql01,相关的服务使用的验证是“混合模式”。

 

 

 

 

 

3.mirror server的准备

mirror server的准备与principal server如出一辙,不赘述。sqlserver的实例名称为:sql02

 

4.使用图形化配置mirror

这文档的特点就是“图形化”,文本方式的配置可以参考msdn的文档,但个人觉得msdn的文档写得不太容易阅读。

 

4.1 备份principal database

principal服务器上,备份需要被做镜像,被同步的源端database

右键点击源端数据库,“任务”–>“备份”。备份类型选择“完整”,然后将备份出来的介质(通常是.bak文件)拷贝至mirror server上,等待还原使用。

 

4.2 还原

mirror server上新建一个database,名称与principal上的源端数据库名称一致(这里是testdb),然后静等稍后的还原。

还原的时候大部分都是默认设置,唯一需要注意“RESTORE WITH NORECOVERY”和“覆盖现有数据库”

 

 

 

点击确定之后,mirror server上正在还原的数据库会一致处在“正在还原”的状态,一直。。尽管对话框可能显示“还原已经完成”,没关系,不用搭理它,它这是等着后续被“镜像”呢。

 

4.3 配置mirror

principal server上配置mirror

右键点击你打算做镜像的源端数据库,“任务”–>“镜像”

 

端点名称、端口、是否加密,第一步的几个关键要素。

“镜像服务器实例”的配置与“主体服务器实例”一样,除了端口变更为5023以外,其余一样,包括“端点名称”、“加密与否”。

 

 

 

“服务账户”的配置,留空即可,因为这里是使用bangelsqlmirror这个用户安装的sql01sql02两个实例。

sql server支持你使用不同的账户,如果使用了,分别在“主体”、“镜像”两处空白上填写上相应用户即可,最后需要授权connect权限给“端点”。这里connect权限的缺失,很可能是很多人遇到文章前面提到的报错之根源:

TCP://principal.bangel.com:5022 的数据库镜像连接错误 4 'An error occurred while receiving data: '64(指定的网络名不再可用。)'.'

 

 

主体与镜像的设置参考如下截图

 

 

运行模式选择“高性能”,后续如果手工failover,需要设置成这个。下图是sql01sql02正在同步的状态。

 

 

sqlserver 这个mirror技术很类似oracle dagtaguard,在同步状态的时候,mirror server上的这个sql实例是无法被操作的(包括读取),只有在真正的故障切换、角色切换之后(即:当mirror变成principal),才能被访问(读取、写入),这个理念与oracle 10gdataguard技术很类似。

 

4.4 failover

手工failover的过程也可以通过图形来解决,MS的产品在易用性上还不错,但这是有代价的,如同硬币的两面。

 

 

正在切换中

 

角色已经切换过去了

 

 

切换之后

 

切换之后,可以查查mirror上面的数据,发现基本同步了principal上的数据。

 

5.总结

sql servermirror技术与其另一种HA技术走的方向不一样,mirror技术与oracledatagard技术很相似,都是依靠log的还原来完成同步,oracle里是靠redo。但测试环境和大数据量、大规模的生产应用还是有差别的,数据量和压力没有上来时,很多问题无法显现,不知sqlserver mirror在大规模的生产中使用如何。

MS提供了简单、快捷图形化配置的同时,帮用户隐藏了很多复杂性,而这种“隐藏”对用户来讲是好是坏,很难讲。

 

PDF 版本:sqlserver2005 mirror

 

–EOF–