最初在为公司设计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机时候的操作了,后续的工作我也把代码做了总结,具体代码如下:
手动故障转移代码
|
3.监视数据库镜像
SQL Server提供了一些视图,可以供查询镜像的各种状态,到时候可以根据这个做一个监视,一旦发生故障转移群集,发邮件给系统管理员,好让系统管理员及时的知道数据库服务器发生了什么问题,即使的做故障分析、排查。有关这方面资料,MSDN上已经提供太多资料了。感兴趣的朋友可以去查这方面的资料。
在文章的最后提出一个有争议的问题:SQL Server(2008)高级别保护模式,只要有一台数据库能够保证正常运行,就可以正常对外提供服务。我的实验结果是这样的,这的确跟以往的理论知识有些出入。
还等什么,赶快搭环境动手实验一下吧,体验一下SQL Server镜像带来的快感。 希望有兴趣的朋友们一起学习探讨。