镜像在非域的环境下做需要相同的帐号和密码,设置比较繁琐。
这里使用凭证密钥的方法,比较简单快捷。
概括凭证密钥的方法有三步:创建密钥、创建凭证、启动镜像。
下面以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