准备条件

  1. 服务器规划

| 服务器角色 | 机器名/角色名 | 软件 | 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上

  1. 创建数据库主密钥

     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'