1.环境要求
SQL Server 2005 SP3以上,主机与备机的SQL Server实例版本相同
一台主机:VM-DB-SRV1
一台备机:VM-DB-SRV2
主机与备机互通。
2.准备工作
在主机上设定主体库使用完整恢复模式
1
|
ALTER
DATABASE
EsmDB
SET
RECOVERY
FULL
|
在主机上完整备份主体库
1
2
3
4
|
--完整备份
BACKUP
DATABASE
EsmDB
TO
DISK=
'C:\EsmDB.bak'
--备份日志
BACKUP LOG EsmDB
TO
DISK=
'C:\EsmDBlog.bak'
|
将2个bak文件拷贝到备机上,在备机上恢复库,使用NORECOVERY模式
1
2
3
4
|
--恢复数据库
RESTORE
DATABASE
EsmDB
FROM
DISK=
'C:\EsmDB.bak'
WITH
NORECOVERY
--恢复日志
RESTORE LOG EsmDB
FROM
DISK=
'C:\EsmDBlog.bak'
WITH
NORECOVERY
|
3.建立镜像
3.1.创建证书并备份
主机执行
1
2
3
4
5
6
7
|
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'
|
备机执行
1
2
3
4
5
6
7
|
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.创建端点
主机执行
1
2
3
4
5
6
7
8
9
10
|
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
)
|
备机执行
1
2
3
4
5
6
7
8
9
10
|
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,然后执行
1
2
3
4
5
6
7
8
|
--创建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,然后执行
1
2
3
4
5
6
7
8
|
--创建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.建立镜像关系
先在备机执行
1
2
|
--为EsmDB库设定主体服务器为SRV1
ALTER
DATABASE
EsmDB
SET
PARTNER=
'TCP://VM-DB-SRV1:5022'
|
然后主机执行
1
2
|
--为EsmDB库设定镜像服务器为SRV2
ALTER
DATABASE
EsmDB
SET
PARTNER=
'TCP://VM-DB-SRV2:5022'
|
成功后主机上的EsmDB库会显示为“(主体,正在同步)”,备机上的EsmDB库会显示为“(镜像,正在同步/正在还原)”
4.主备切换
如果需要主动进行主备互换,在主机上执行
1
|
ALTER
DATABASE
EsmDB
SET
PARTNER FAILOVER
|
成功后主备互换,SRV2成功主机,SRV1成功备机。
如果主机无法工作,需要备机紧急启动,在备机执行
1
|
ALTER
DATABASE
EsmDB
SET
PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
|
执行此命令前,备机上的EsmDB一定是显示为“(镜像,已断开连接)”。
成功后,EsmDB先显示“正在恢复”,10秒左右会变成“(主体,已断开连接)”。
如果此时主机恢复工作,主机上的EsmDB会显示为“(镜像,挂起/正在还原)”,备机上的EsmDB会显示为“(主体,挂起)”。
此时如果需要恢复主机工作,需要在备机上执行
1
2
|
ALTER
DATABASE
EsmDB
SET
PARTNER RESUME
ALTER
DATABASE
EsmDB
SET
PARTNER FAILOVER
|
本文转自 BoyTNT 51CTO博客,原文链接:http://blog.51cto.com/boytnt/1344385,如需转载请自行联系原作者