1.环境要求
SQL Server 2005 SP3以上,主机与备机的SQL Server实例版本相同
一台主机:VM-DB-SRV1
一台备机:VM-DB-SRV2
主机与备机互通。
2.准备工作
在主机上设定主体库使用完整恢复模式
ALTER DATABASE EsmDB SET RECOVERY FULL
在主机上完整备份主体库
--完整备份 BACKUP DATABASE EsmDB TO DISK='C:\EsmDB.bak' --备份日志 BACKUP LOG EsmDB TO DISK='C:\EsmDBlog.bak'
将2个bak文件拷贝到备机上,在备机上恢复库,使用NORECOVERY模式
--恢复数据库 RESTORE DATABASE EsmDB FROM DISK='C:\EsmDB.bak' WITH NORECOVERY --恢复日志 RESTORE LOG EsmDB FROM DISK='C:\EsmDBlog.bak' WITH NORECOVERY
3.建立镜像
3.1.创建证书并备份
主机执行
USE master --加密 CREATE MASTER KEY ENCRYPTION BY PASSWORD='mirror' --为本机创建证书 CREATE CERTIFICATE SRV1_CERT WITH SUBJECT='vm-db-srv1',START_DATE='01/01/2013',EXPIRY_DATE='01/01/2050' --备份到磁盘 BACKUP CERTIFICATE SRV1_CERT TO FILE='C:\SRV1_CERT.cer'
备机执行
USE master --加密 CREATE MASTER KEY ENCRYPTION BY PASSWORD='mirror' --为本机创建证书 CREATE CERTIFICATE SRV2_CERT WITH SUBJECT='vm-db-srv2',START_DATE='01/01/2013',EXPIRY_DATE='01/01/2050' --备份到磁盘 BACKUP CERTIFICATE SRV2_CERT TO FILE='C:\SRV2_CERT.cer'
3.2.创建端点
主机执行
CREATE ENDPOINT EP --自定义端点名为EP STATE=STARTED AS TCP(LISTENER_PORT=5022, LISTENER_IP=ALL)--使用5022端口 FOR DATABASE_MIRRORING --数据库镜像用 ( AUTHENTICATION=CERTIFICATE SRV1_CERT, --使用证书SRV1_CERT ENCRYPTION=REQUIRED ALGORITHM AES, ROLE=ALL )
备机执行
CREATE ENDPOINT EP --自定义端点名为EP STATE=STARTED AS TCP(LISTENER_PORT=5022, LISTENER_IP=ALL)--使用5022端口 FOR DATABASE_MIRRORING --数据库镜像用 ( AUTHENTICATION=CERTIFICATE SRV2_CERT, --使用证书SRV2_CERT ENCRYPTION=REQUIRED ALGORITHM AES, ROLE=ALL )
3.3.互换证书并创建登录
主机拷贝备机的证书文件SRV2_CERT.cer,然后执行
--创建SRV2用的登录 CREATE LOGIN SRV2_login WITH PASSWORD='mirror' --创建SRV2用的帐号 CREATE USER SRV2_user FOR LOGIN SRV2_login --在SRV1上创建SRV2的证书,使用拷贝过来的cer文件 CREATE CERTIFICATE SRV2_CERT AUTHORIZATION SRV2_user FROM FILE='C:\SRV2_CERT.cer' --授予SRV2连接到端点的权限 GRANT CONNECT ON ENDPOINT::EP TO SRV2_login
备机拷贝主机的证书文件SRV1_CERT.cer,然后执行
--创建SRV1用的登录 CREATE LOGIN SRV1_login WITH PASSWORD='mirror' --创建SRV1用的帐号 CREATE USER SRV1_user FOR LOGIN SRV1_login --在SRV2上创建SRV1的证书,使用拷贝过来的cer文件 CREATE CERTIFICATE SRV1_CERT AUTHORIZATION SRV1_user FROM FILE='C:\SRV1_CERT.cer' --授予SRV1连接到端点的权限 GRANT CONNECT ON ENDPOINT::EP TO SRV1_login
3.4.建立镜像关系
先在备机执行
--为EsmDB库设定主体服务器为SRV1 ALTER DATABASE EsmDB SET PARTNER='TCP://VM-DB-SRV1:5022'
然后主机执行
--为EsmDB库设定镜像服务器为SRV2 ALTER DATABASE EsmDB SET PARTNER='TCP://VM-DB-SRV2:5022'
成功后主机上的EsmDB库会显示为“(主体,正在同步)”,备机上的EsmDB库会显示为“(镜像,正在同步/正在还原)”
4.主备切换
如果需要主动进行主备互换,在主机上执行
ALTER DATABASE EsmDB SET PARTNER FAILOVER
成功后主备互换,SRV2成功主机,SRV1成功备机。
如果主机无法工作,需要备机紧急启动,在备机执行
ALTER DATABASE EsmDB SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
执行此命令前,备机上的EsmDB一定是显示为“(镜像,已断开连接)”。
成功后,EsmDB先显示“正在恢复”,10秒左右会变成“(主体,已断开连接)”。
如果此时主机恢复工作,主机上的EsmDB会显示为“(镜像,挂起/正在还原)”,备机上的EsmDB会显示为“(主体,挂起)”。
此时如果需要恢复主机工作,需要在备机上执行
ALTER DATABASE EsmDB SET PARTNER RESUME ALTER DATABASE EsmDB SET PARTNER FAILOVER