镜像在非域的环境下做需要相同的帐号和密码,设置比较繁琐。


这里使用凭证密钥的方法,比较简单快捷。


概括凭证密钥的方法有三步:创建密钥、创建凭证、启动镜像。


下面以A为主体服务器,B为镜像服务器,数据库名 Teansing 为例来看执行步骤:


1、在主体服务器A上完整备份数据库DBBackup.bak(一定要确认数据库的恢复模式为“完整模式”),然后再备份一个数据库事务DBBakup.trn,保存2个备份文件到磁盘D的根目录;


2、镜像服务器B上还原DBBackup.bak文件,然后再还原DBBakup.trn文件,还原的时候注意“恢复状态”选择 RESTORE WITH NORECOVERY选项


3、在两台服务器上创建密钥


USE master

GO


CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Abc#123'  -- 密钥的密码


4、在两台服务器上创建凭证,并将各自产生的凭证拷贝到对方的数据库目录下,如安装在D盘(D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA)


a、


USE master

GO


CREATE CERTIFICATE Host_A_Cert WITH SUBJECT = 'A的凭证'    --A的凭证


BACKUP CERTIFICATE Host_A_Cert TO FILE = 'HostA_DBMirrorCertificate.cer'

GO


b、


USE master

GO


CREATE CERTIFICATE Host_B_Cert WITH SUBJECT = 'B的凭证'    --B的凭证


BACKUP CERTIFICATE Host_B_Cert TO FILE = 'HostB_DBMirrorCertificate.cer'

GO


5、创建登录对方的凭证


a、A服务器上


USE master

GO


CREATE CERTIFICATE Host_B_Cert

AUTHORIZATION [dbo]

FROM FILE = 'HostB_DBMirrorCertificate.cer'

GO


b、B服务器上


USE master

GO


CREATE CERTIFICATE Host_A_Cert

AUTHORIZATION [dbo]

FROM FILE = 'HostA_DBMirrorCertificate.cer'

GO


6、在两台服务器上创建端点


a、--A端点


CREATE ENDPOINT EndPoint_Mirror

AUTHORIZATION [sa]

STATE=STARTED

AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)

FOR DATA_MIRRORING (

 AUTHENTICATION = CERTIFICATE Host_A_Cert,

 ROLE = PARTNER,

 ENCRYPTION = REQUIRED ALGORITHM AES

)

GO


b、--B端点


CREATE ENDPOINT EndPoint_Mirror

AUTHORIZATION [sa]

STATE=STARTED

AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)

FOR DATA_MIRRORING (

 AUTHENTICATION = CERTIFICATE Host_A_Cert,

 ROLE = PARTNER,

 ENCRYPTION = REQUIRED ALGORITHM AES

)

GO


上面工作准备好,下面就是启动镜像了,启动镜像前要确认防火墙是否阻止了SQL Server的通信端口1433-1434和


镜像的通信端口5022,这个经常会成为启动镜像失败的原因


7、执行以下动作后,将启动镜像


a、在镜像服务器B上执行


USE master

GO


ALTER DATABASE Teansing SET PARTNER = 'TCP://192.168.192.253:5022'  --主题服务器A的IP或计算机名

GO


b、在主体服务器上执行


USE master

GO


ALTER DATABASE Teansing SET PARTNER = 'TCP://192.168.192.10:5022'  --镜像服务器B的IP或计算机名

GO


如果成功了,刷新下服务器,


主体服务器A数据库上显示“主体 已同步”,镜像服务器B数据库上显示“镜像 已同步/正在还原”


8、默认为镜像是高安全的模式,执行以下语句将转为高性能模式(仅限于MSSQL Server为企业版本)


USE master

GO


ALTER DATABASE Teansing SET SAFETY OFF  --OFF为高性能模式,ON则为高安全模式

GO


9、如果需要见证服务器,则执行以下语句


USE master

GO


ALTER DATABASE Teansing SET WITNESS= 'TCP://192.168.192.15:5022'  --见证服务器的IP或计算机名

GO