嚣张研究站呀 · 2022年4月11日 0

Sql server 使用证书认证的方式搭建数据库镜像搭建+见证服务 上

简介:

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

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

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

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

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

一,搭建环境:

1,由于工作便利,我这边是三台有公网ip的云服务器。

windows 2008 系统, Microsoft SQL Server 2008 R2 (SP3) ,三台服务器用2台实现数据库镜像同步,一台做见证服务器。

2,防火墙开启1433,5022端口 入站规则–新建规则–端口–添加1433 5022

3,修改hosts文件 C:\Windows\System32\drivers\etc\hosts ip +主机名(计算机名)中间用空格

4,在三台服务器中分别打开SQL Server配置管理器,启用TCP/IP协议

5, 在三台服务器中分别打开SQL Server Management Studio,右键实例选择“方面–外围应用配置器–true

二,正式搭建

1,创建数据库

ldclouda24999—-*.*.*.242—-主体 clouda25000—- *.*.*.243—-镜像 clouda25000—- *.*.*.244—-见证

以下用ip左后一段代替,方便描述。

在242新建数据库DBO1

2,备份数据库DBO1

3,备份事务日志

4,将备份文件拷贝到镜像服务器243对应的路径,默认备份路径为

“C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup

5,在镜像服务器243–新建与主题服务器242同名数据库–还原–让数据库处于还原状态

三,证书认证配置

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

USE master;

CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘landui@123’;

2,创建主库和镜像库的证书( 主库和镜像库,见证服务器上都执行 )注意修改证书名字,为每台服务器证书取一个一个名字,我这边是用ip最后一段命名。

CREATE CERTIFICATE Cert242

WITH Subject = ‘Cert242’,

Expiry_Date = ‘2030-1-1’;

 3、创建主库和镜像库和见证服务器的端点。 (主库和镜像库,见证服务器上都执行 ,注意修改cert242)

use master

go

create endpoint Endpoint_Mirroring

state=started

as tcp ( listener_port = 5022,listener_ip = all )

for database_mirroring ( authentication = certificate cert242, encryption = required algorithm aes, role = all )

Go

4,备份证书 ( 主库和镜像库,见证服务器上都执行 ) 建一个文件夹,指定路径。

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

use master

go

backup certificate cert242 to file = ‘D:\cert\cert242.cer’

go

5、创建登录名,就是其他两台的登陆名,(这个要和证书关联,所以242创建243,244的;243创建的242,244;244创建242,243)

use master

go

create login login_243 with password=’landui@123′
create login login_244 with password=’landui@123′

go

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

use master
go

create user user_243 for login login_243

create user user_244 for login login_244


go

 7、证书与用户关联 ( 主库和镜像库,见证服务器上都执行 ) 执行其他两台的 把user和cert修改为其他两台的

use master

go

create certificate cert243

authorization user_243

from file=’D:\cert\cert243.cer’

go

use master

go

create certificate cert244

authorization user_244

from file=’D:\cert\cert244.cer’

go

8、授予对远程数据库端点的登录名的CONNECT权限 ( 主库和 ( 主库和镜像库,见证服务器上都执行 ) 执行其他两台的 把login修改为其他两台的

use master

go

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [login_243];

go

use master

go

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [login_244];

go

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

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

注: ldclouda24999和 clouda25000 是2台机器的机器名

ldclouda24999—-*.*.*.242—-主体 clouda25000—- *.*.*.243—-镜像 clouda25000—- *.*.*.244—-见证

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

use master

go

ALTER DATABASE test SET PARTNER = 'TCP://ldclouda24999:5022';

go


主库上执行:

use master

go

ALTER DATABASE test SET PARTNER = 'TCP://ldclouda245000:5022';

go


下一篇