服务镜像搭建_SQLServer带见证服务器的镜像搭建

本文详细介绍了如何搭建SQLServer带见证服务器的镜像,包括注意点、搭建步骤和关键SQL命令。强调了数据库模式、备份恢复策略、证书与端点的配置,以及镜像状态的监控。
摘要由CSDN通过智能技术生成

一、注意点

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

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

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

4、先删除端点,再删除证书,再删除主密钥。

5、见证服务器不需要还原主体上的数据库。

6、该文档中主体服务器、镜像服务器、见证服务器都没有加入到域中。

7、主体服务器、镜像服务器、见证服务器的操作系统可以不一样,但是SQL版本得一致

二、搭建步骤

1、创建主密钥(主库、镜像库、认证服务器上都执行)

命令:

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

955ae32de8aed071f8d4c9025132e80b.png

查看主密钥

select * from sys.key_encryptions

创建主密钥之前:

78bb81afa62e969863d42f736f66f4b7.png

创建主密钥之后:

fe1ab98393fae1b64b79c48be6e43a1c.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见证服务器上执行use mastergocreate certificate mirror_witness_cert with subject='mirrorWitness certificate',expiry_date='2099-1-1'go

8650d1b6434e93cd88397a8b1128d4c8.png

a8673865beaa41fa908980fa66b1ec06.png

1e80b264686e1ac558c606265a27bd23.png

查看证书:

select * from sys.certificates

 2322ad3956c13c686cfdc7337f73089e.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见证服务器上执行use mastergocreate endpoint Endpoint_Mirroringstate=startedas tcp ( listener_port = 5022,listener_ip = all )for database_mirroring ( authentication = certificate mirror_witness_cert, encryption = required algorithm aes, role = all )go

80da48cfc3897729e9113d97accd5fff.png

SSMS查看创建的端点

001163c11130bcb71f6c669a2658cc14.png

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

命令:

主库上执行: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见证服务器上执行use mastergobackup certificate mirror_witness_cert to file = 'D:\cert\mirror_witness_cert.cer'go

4edc988401e069ea84acf4c8c0bbffa8.png

6c343b92eb8002fe58141649d3841544.png

5、创建登录名(这个要和证书关联,所以主体服务器、镜像服务器、见证服务器都要创建除自己以外的另外2个用户)

命令:

主库上执行:--创建镜像库上的证书关联用户use mastergocreate login mirror02_login with password='abc@123456'go--创建见证库上的证书关联用户use mastergocreate login mirror_witness with password='abc@123456'go镜像库上执行:--创建主库上的证书关联用户use mastergocreate login mirror01_login with password='abc@123456'go--创建见证库上的证书关联用户use mastergocreate login mirror_witness with password='abc@123456'go见证服务器执行--创建主库上的证书关联用户use mastergocreate login mirror01_login with password='abc@123456'go--创建镜像库上的证书关联用户use mastergocreate login mirror02_login with password='abc@123456'go

c9b06685d4fb72b62ce839a03d373d1f.png

6、创建使用该登录名的用户(主体服务器、镜像服务器、见证服务器都要创建)

命令:

主库上执行--创建镜像库上的证书关联用户use mastergocreate user mirror02_user for login mirror02_logingo--创建见证库上的证书关联用户use mastergocreate user mirror_witness_user for login mirror_witnessgo镜像库上执行--创建主库上的证书关联用户use mastergocreate user mirror01_user for login mirror01_logingo--创建见证库上的证书关联用户use mastergocreate user mirror_witness_user for login mirror_witnessgo见证服务器执行--创建主库上的证书关联用户use mastergocreate user mirror01_user for login mirror01_logingo--创建镜像库上的证书关联用户use mastergocreate user mirror02_user for login mirror02_logingo

2684da02ab569f757bbaca60fc1fbe95.png

7、证书与用户关联

命令:

主库上执行--使镜像库上的证书与用户关联use mastergocreate certificate mirror02_certauthorization mirror02_userfrom file='D:\cert\mirror02_cert.cer'go--使见证库上的证书与用户关联use mastergocreate certificate mirror_witness_certauthorization mirror_witness_userfrom file='D:\cert\mirror_witness_cert.cer'go镜像库上执行--使主库上的证书与用户关联use mastergocreate certificate mirror01_certauthorization mirror01_userfrom file='D:\cert\mirror01_cert.cer'go--使见证库上的证书与用户关联use mastergocreate certificate mirror_witness_certauthorization mirror_witness_userfrom file='D:\cert\mirror_witness_cert.cer'go见证服务器执行--使主库上的证书与用户关联use mastergocreate certificate mirror01_certauthorization mirror01_userfrom file='D:\cert\mirror01_cert.cer'go--使镜像库上的证书与用户关联use mastergocreate certificate mirror02_certauthorization mirror02_userfrom file='D:\cert\mirror02_cert.cer'go

beea9fe50d20da47edab28a5556a528d.png

8、授予对远程数据库端点的登录名的CONNECT权限(每个上面2个用户都要有端点的权限)

命令:

主库上执行use mastergoGRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror02_login];gouse mastergoGRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror_witness];go镜像库上执行use mastergoGRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror01_login];gouse mastergoGRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror_witness];go见证服务器执行use mastergoGRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror01_login];gouse mastergoGRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror02_login];go

eab7352bd04c552f7f528242a83661dc.png

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

318eed24e446d9f46f2d2a353bac25e7.png

 10、连接镜像(先在镜像库上操作,然后在主库上操作,不需要在见证数据库上操作)

注:CCAS21、CCAS22、JF-RLZY-DB1是3台机器的机器名

命令:

镜像库上执行 (做完这个操作后,数据库的状态:正在恢复)use mastergoALTER DATABASE test SET PARTNER = 'TCP://CCAS21:5022';go

b23c84615314013ee47d53e50c53b63d.png

主库上执行--连接镜像库use mastergoALTER DATABASE test SET PARTNER = 'TCP://CCAS22:5022';go--连接见证服务器use mastergoALTER DATABASE test SET WITNESS = 'TCP://JF-RLZY-DB1:5022';go

31820cdde12a082d3e197aebf127da07.png

 11.查看数据库的状态

(1)主库的状态

7310d4ad6a2eab29551ac75ce93ec315.png

28620fcca89b0604b7b7b0d248d9ded6.png

 (2)镜像库的状态

d5d6f79f3326479913dc4fba62cd0aab.png

三、用到的SQL

1.删除端点drop endpoint Endpoint_Mirroring2.删除证书(所有证书都删除)drop certificate mirror01_cert3.查看证书select * from sys.certificates4.删除主秘钥drop master key5.查询数据库的状态命令:select mirroring_role_desc, --数据库在镜像会话中的角色mirroring_state_desc, --镜像当前状态mirroring_safety_level_desc, --镜像运行模式mirroring_witness_state_desc --与见证服务器的连接情况from sys.database_mirroring where database_id=DB_ID(N'test')或selectmirroring_role_desc, --数据库在镜像会话中的角色mirroring_state, --镜像数据库的状态,0-已挂起,1-于其他伙伴断开,2-正在同步,3-挂起故障转移,4-已同步mirroring_state_desc, --镜像当前状态mirroring_safety_level_desc, --镜像运行模式mirroring_safety_level , --数据库的同步模式,1是异步,2是同步mirroring_connection_timeout, --镜像连接超时时间,默认是10秒mirroring_failover_lsn --最新事务日志记录的日志序列号from sys.database_mirroring where database_id=DB_ID(N'APPROVE')

主库上执行

8ab530f98005d015c8fac46446a42871.png

 12b45d94a1bf4d764961a1a5c5ac8a02.png

 镜像库上执行

0a6de5155271f1601f2cc684a746e95a.png

6、监控的语句

命令:

select d.name as dbname, m.mirroring_state from sys.databases d inner join sys.database_mirroring mon d.database_id = m.database_idwhere mirroring_state='1' and m.database_id >4

注:mirroring_state的值为1表示与另一伙伴断开连接

01db8c880582fe1312e7a6c2ac57d95b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值