证书上的服务器名错误_SQLServer使用证书认证的方式搭建数据库镜像

一、总结

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

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

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

4.删除的时候要先删除端点,再删除证书,再删除主密钥。

5.只有是同步模式的时候,才能手动故障转移,异步模式不能手动故障转移。

3702d9472eb274ed48c0c8f79a15f7b8.png

二、搭建步骤

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

命令:

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

7553a5b5846e8a9d0ee7c26ff9441ad5.png

查看主密钥

创建主密钥之前:

b3cec32ce7ab8024fa40140cea4a5497.png

创建主密钥之后:

0c5bf276d45264c01ff82b8062894e67.png

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

命令:

主库上执行:

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

镜像库上执行:

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

4f24f43eb49b7b37dafddd0b2f1ef056.png

 c303daaf0a2a2d238bbeb1174bb42817.png

 b10e0805edb6f2ebb1e0d92521935f63.png

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

命令:

主库上执行:

use mastergocreate endpoint Endpoint_Mirroringstate=startedas tcp ( listener_port = 5022,listener_ip = all )for database_mirroring ( authentication = certificate mirror01_cert, encryption = required algorithm aes, role = all )go

镜像库上执行:

use mastergocreate endpoint Endpoint_Mirroringstate=startedas tcp ( listener_port = 5022,listener_ip = all )for database_mirroring ( authentication = certificate mirror02_cert, encryption = required algorithm aes, role = all )go

5c90d0c273367faede03b7b68fa289b5.png

SSMS查看创建的端点

606d02dcff29d2815aeda0ec494ed019.png

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

命令:

主库上执行:

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

镜像库上执行:

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

49b921784da16719dd0f21394eb1a3d7.png

 af620689a3c5e26882dc7df5e5549bb3.png

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

命令:

主库上执行:

use mastergocreate login mirror02_login with password='abc@123456'go

镜像库上执行:

use mastergocreate login mirror01_login with password='abc@123456'go

5bb83bc373fde883823a874bf3ae7c83.png

368a12e66b53b6d25c3583586340a27d.png

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

命令:

主库上执行:

use mastergocreate user mirror02_user for login mirror02_logingo

镜像库上执行:

use mastergocreate user mirror01_user for login mirror01_logingo

b274b17b6a5f10ffde0677441c3659d8.png

d8beffd468fea41538ccf25214b11fa6.png

 7、证书与用户关联

命令:

主库上执行:

use mastergocreate certificate mirror02_certauthorization mirror02_userfrom file='D:\cert\mirror02_cert.cer'go

镜像库上执行:

use mastergocreate certificate mirror01_certauthorization mirror01_userfrom file='D:\cert\mirror01_cert.cer'go

88b1ea2a5776bdd354dccb2bdf0d3194.png

 cc017ff385d33d03981dd0347055d793.png

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

命令:

主库上执行:

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

镜像库上执行:

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

f5a57695ff513a028d84556a33191382.png

 491301ceda708b23836db1936c02e7c8.png

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

7a734ddc1c3a35222f96cfe4db9d67bb.png

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

注:sqlmirror01和sqlmirror02是2台机器的机器名

命令:

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

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

684be8344b20812390113ae26e7b6a89.png

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

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

此时主库的状态:

d86a4208c3d5cf52bd96ccfb2d602cf4.png

 镜像库的状态:

cc90ca544a5abfacb9413db5bd2cccbb.png

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

0b17035a1cce4f65bf7922a22fa1d2bb.png

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

11.查看的选项

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

0799c74fac1f0a7c99c99575436a40e7.png

e66fbd0eb5ecd460bcf39edc97812cfa.png

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

360874f4a48df1870486a0ba53442412.png

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

1、第一步:脱离镜像alter database test set partner off2、第二步;修改数据库的状态为recoveryrestore database test with recovery

三、涉及到的系统SQL

1、查看所有的主秘钥select * from sys.key_encryptions--删除主秘钥(要先删除使用秘钥的证书)drop master key2、查看所有的证书select * from sys.certificates--删除证书(要先删除使用证书的端点)drop certificate sqlmirror02_cert3、查看所有的端点(endpoint)select * from sys.endpoints--删除端点drop endpoint Endpoint_Mirroring4、修改镜像的运行模式为同步(高安全) alter database test set safety full5、修改镜像的运行模式为异步(高性能) alter database test set safety off6、镜像的故障转移alter database test set partner failover 

四、遇到的错误

1.数据库镜像监视器的报错

(1)错误截图

fa8f4e1f24e0fa6d687ef7c714746c85.png

 (2)解决办法

注:这是有可能连接镜像服务器的认证失效了,比如windows认证的administrator或SQLServer认证的sa密码改了

3274013df1e47cdd243e2ef220120ae3.png

cf80322ba04e767070359cabd83eda0b.png

 70e5bec8e52e57beb92a8b6981073b9f.png

 再次查看已经OK了

4090154f25ebe712a9cbfb108c1e6ecd.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值