准备条件
- 服务器规划
| 服务器角色 | 机器名/角色名 | 软件 | IP | -------- | -------- | -------- | | 主体服务器 | RepA | sql server 2008 r2 | 192.168.0.10 | 镜像服务器 | RepB | sql server 2008 r2 | 192.168.0.20 | 见证服务器 | win7 | sql server 2008 r2 | 192.168.0.30
2.服务器相关设置
1、创建文件夹
Certifications 用来存放认证证书
ShareFolders 用来存放共享文件,方便服务器之间传递文件
2、保证主体服务器与镜像服务器的数据文件夹路径相同
3、保证数据库的恢复模式为FULL
使用证书配置镜像,并备份RepA的数据库,还原到RepB上
-
创建数据库主密钥
USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Pa$$w0rd'; /* 删除主密钥 USE master; DROP MASTER KEY 使用相同方式在RepB闯将主密钥
2、创建证书并用主密钥加密
USE master;
GO
CREATE CERTIFICATE Host_A_Cert
WITH Subject = 'Host_C Certificate',
Expiry_Date = '99991231'
/*
删除证书
USE master;
DROP CERTIFICATE HOST_A_Cert
在RepB使用同样的方法创建证书HOST_B_Cert
3、创建端点(也就是监听)
CREATE ENDPOINT EDP_Mirror
STATE = STARTED
AS TCP(
LISTENER_PORT = 5022, -- 镜像端点使用的通信端口
LISTENER_IP = ALL) -- 侦听的IP地址
FOR DATABASE_MIRRORING(
AUTHENTICATION = CERTIFICATE Host_A_Cert, -- 证书身份验证
ENCRYPTION = DISABLED, -- 不对传输的数据加密,如果需要加密,可以配置为 SUPPORTED 或 REQUIRED, 并可选择加密算法
ROLE = ALL) -- 端点支持所有的数据库镜像角色, 也可以设置为 WITNESS(仅见证服务器),或 PARTNER(仅镜像伙伴)
在RepB使用相同的方法,×××名,创建端点
4、备份证书
BACKUP CERTIFICATE Host_A_Cert
TO FILE = 'C:\ShareFolders\Host_A_Cert.cer';
在RepB上执行相同的操作,备份Host_B_Cert
RepA 和 RepB 的Certifications文件夹上都要有所有服务器的证书,可以通过共享文件夹复制
5、创建用户和登录账号
创建登录账号给镜像服务器
USE master;
CREATE LOGIN Host_B_Login WITH PASSWORD = 'Pa$$w0rd';
创建用户并映射到登录账号上
CREATE USER Host_B_User For Login Host_B_Login;
在RepB上使用相同的方法给RepB创建用户和登录账号,注意更改名称
6、使用证书授权用户
创建一个新的证书,并用从伙伴服务器复制来的证书导入,然后授权上面创建的账号
CREATE CERTIFICATE Host_B_Cert
AUTHORIZATION Host_B_User
FROM FILE = 'C:\Certifications\Host_B_Cert.cer';
在RepB上使用同样的操作,注意更改名称
7、登录账号授权访问端口
GRANT CONNECT ON ENDPOINT::EDP_Mirror TO Host_B_Login;
在 RepB上使用同样的操作,注意更改名称
8、备份还原数据库
完整备份RepA上的数据库,并以Norecovery选项还原到RepB(使用还原文件和文件组)
9、启动镜像
注意顺序,现在RepB上执行
ALTER DATABASE MirrorDB SET
PARTNER = 'TCP://RepA:5022';
GO
然后在RepA上执行
ALTER DATABASE MirrorDB SET
PARTNER = 'TCP://RepB:5022';
GO
完毕,接下来是配置见证服务器
配置见证服务器
1、与RepA和RepB类似配置见证服务器的主密钥证书,端点,以及授权。并复制证书,保证每台服务器都有三台服务器的证书
2、在RepA和RepB上执行下面语句,为见证服务器创建端点权限
USE master;
CREATE LOGIN Host_C_Login WITH PASSWORD = 'Pa$$w0rd';
GO
CREATE USER Host_C_User For Login Host_C_Login;
GO
CREATE CERTIFICATE Host_C_Cert
AUTHORIZATION Host_C_User
FROM FILE = 'C:\Certifications\Host_C_Cert.cer';
GO
GRANT CONNECT ON ENDPOINT::EDP_Mirror TO Host_C_Login;
GO
3、主体服务器RepA加入见证服务器
ALTER DATABASE MirrorDB SET WITNESS = 'TCP://win7:5022'