17-SQLServer使用证书认证的方式搭建数据库镜像

一、注意点

1.数据库的模式要是完整模式。

2.要对数据库完整备份和事务日志备份,分别还原到镜像库上,使用NORECOVERY模式。

3.镜像数据库是不允许删除和操作,即便查看属性也不行。

 

二、搭建步骤

1、创建主密钥(主库和镜像库上都执行)

命令:

use master
go
create master key encryption by password='$a123456'
go

17-SQLServer使用证书认证的方式搭建数据库镜像_第1张图片

 2、创建主库和镜像库的证书(分别在主库和镜像库上执行)

命令:

主库上执行:

use master
go
create certificate mirror01_cert with subject='mirror01 certificate',expiry_date='2099-1-1'
go

镜像库上执行:

use master
go
create certificate mirror02_cert with subject='mirror02 certificate',expiry_date='2099-1-1'
go

17-SQLServer使用证书认证的方式搭建数据库镜像_第2张图片

 17-SQLServer使用证书认证的方式搭建数据库镜像_第3张图片

 17-SQLServer使用证书认证的方式搭建数据库镜像_第4张图片

  3、创建主库和镜像库的端点

命令:

主库上执行:

use master
go
create endpoint Endpoint_Mirroring
state=started
as tcp ( listener_port = 5022,listener_ip = all )
for database_mirroring ( authentication = certificate mirror01_cert, encryption = required algorithm aes, role = all )
go

镜像库上执行:

use master
go
create endpoint Endpoint_Mirroring
state=started
as tcp ( listener_port = 5022,listener_ip = all )
for database_mirroring ( authentication = certificate mirror02_cert, encryption = required algorithm aes, role = all )
go

17-SQLServer使用证书认证的方式搭建数据库镜像_第5张图片

SSMS查看创建的端点

17-SQLServer使用证书认证的方式搭建数据库镜像_第6张图片

 

 

 4、备份证书(主库和镜像的库的都备份,并互相拷贝过去,保证每个服务器上都有2个证书)

命令:

主库上执行:

use master
go
backup certificate mirror01_cert to file = 'D:\cert\mirror01_cert.cer'
go

镜像库上执行:

use master
go
backup certificate mirror02_cert to file = 'D:\cert\mirror02_cert.cer'
go

17-SQLServer使用证书认证的方式搭建数据库镜像_第7张图片

 17-SQLServer使用证书认证的方式搭建数据库镜像_第8张图片

 5、创建登录名(这个要和证书关联,所以1创建2的,2创建1的)

命令:

主库上执行:

use master
go
create login mirror02_login with password='abc@123456'
go

镜像库上执行:

use master
go
create login mirror01_login with password='abc@123456'
go

17-SQLServer使用证书认证的方式搭建数据库镜像_第9张图片

 

 17-SQLServer使用证书认证的方式搭建数据库镜像_第10张图片

  

 6、创建使用该登录名的用户

命令:

主库上执行:

use master
go
create user mirror02_user for login mirror02_login
go

镜像库上执行:

use master
go
create user mirror01_user for login mirror01_login
go

17-SQLServer使用证书认证的方式搭建数据库镜像_第11张图片

 

 17-SQLServer使用证书认证的方式搭建数据库镜像_第12张图片

 7、证书与用户关联

命令:

主库上执行:

use master
go
create certificate mirror02_cert
authorization mirror02_user
from file='D:\cert\mirror02_cert.cer'
go

镜像库上执行:

use master
go
create certificate mirror01_cert
authorization mirror01_user
from file='D:\cert\mirror01_cert.cer'
go

 

 17-SQLServer使用证书认证的方式搭建数据库镜像_第13张图片

 

 17-SQLServer使用证书认证的方式搭建数据库镜像_第14张图片

8、授予对远程数据库端点的登录名的CONNECT权限

命令:

主库上执行:

use master
go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror02_login];
go

镜像库上执行:

use master
go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror01_login];
go

17-SQLServer使用证书认证的方式搭建数据库镜像_第15张图片

 

 9、对需要做镜像的数据库做完整备份和事务日志备份,然后在镜像库上做还原(先还原完整备份,再还原事务日志),使用NORECOVERY模式,这里不做阐述,最后还原后的数据库状态如下:

17-SQLServer使用证书认证的方式搭建数据库镜像_第16张图片

 

 10.连接镜像(先在镜像库上操作,然后在主库上操作)

命令:

镜像库上执行:(做完这个操作后,数据库的状态:正在恢复)

use master
go
ALTER DATABASE test SET PARTNER = 'TCP://sqlmirror01:5022';
go

17-SQLServer使用证书认证的方式搭建数据库镜像_第17张图片

主库上执行:(做完这个操作,镜像就搭建好了)

use master
go
ALTER DATABASE test SET PARTNER = 'TCP://sqlmirror02:5022';
go

此时主库的状态:

17-SQLServer使用证书认证的方式搭建数据库镜像_第18张图片

 镜像库的状态:

17-SQLServer使用证书认证的方式搭建数据库镜像_第19张图片

 镜像的状态:(只能在主库上右键-->属性查看)

17-SQLServer使用证书认证的方式搭建数据库镜像_第20张图片

 注:如果状态不对,先刷新一下SSMS

11.查看的选项

(1)启用数据库监视器查看镜像是否正常(主库上查看)

17-SQLServer使用证书认证的方式搭建数据库镜像_第21张图片

 

 17-SQLServer使用证书认证的方式搭建数据库镜像_第22张图片

 

 (2)查看镜像服务器是否授权主库服务器

17-SQLServer使用证书认证的方式搭建数据库镜像_第23张图片

 12 .主库宕机后,怎么恢复镜像库为可用状态

--第一步:脱离镜像
alter database test set partner off

--第二步;修改数据库的状态为recovery
restore database test with recovery

 

三、涉及到的系统SQL

--1.查看所有的主秘钥
select * from sys.key_encryptions

--删除主秘钥(要先删除使用秘钥的证书)
drop master key

--2.查看所有的证书
select * from sys.certificates

--删除证书(要先删除使用证书的端点)
drop certificate sqlmirror02_cert

--3.查看所有的端点(endpoint)
select * from sys.endpoints

--删除端点
drop endpoint Endpoint_Mirroring

你可能感兴趣的:(17-SQLServer使用证书认证的方式搭建数据库镜像)