基于无域故障转移群集 配置高可用SQLServer 2016数据库

基于上次的文章搭建的环境,可以在这里:http://www.cnblogs.com/DragonStart/p/8275182.html看到上次的文章.


演示环境

1. 配置一览

KeyValue
系统版本Win2016
数据库版本SQLServer 2016
群集IP10.22.20.201
数据库侦听器IP10.22.20.202

2. 连接

481370-20180116102841990-1593375414.png

3. 写点初始数据

这个只需要在其中一个写就行,不用全部写
481370-20180116104651084-1597271825.png

4. 备份数据库

如果不做备份的话,后面会失败.进入后不用改什么,直接备份即可.
481370-20180116115043381-2090729956.png

5. 给SQLServer服务打开高可用性组支持

操作完记得重启数据库服务:
481370-20180116114233787-1603085634.png


创建与分享证书

1. 在服务器上建立目录

创建证书过程中会生成证书文件,所以每个服务器准备个文件夹用于存放证书文件:
记得给everyone读写权限
481370-20180116110352349-1879573247.png

2. 创建证书

每一个服务器上,执行如下SQL代码,注意:每一个服务器执行之前要做小改动,要改的地方写在注释里:

USE master; 
GO
--创建主密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Abc123'; 
--创建证书  这里有两个"CERT1",建议每台机器都改成不同的名称以作区分
CREATE CERTIFICATE CERT1 WITH SUBJECT = 'CERT1', START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30';
--把刚才创建的证书备份到文件 这里也有两个CERT1要改
BACKUP CERTIFICATE CERT1 TO FILE = 'D:\share\CERT1.cer';
--创建终结点,设为证书验证 这里第二行有1个CERT1要改
CREATE ENDPOINT [group0_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) 
 FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT1, ENCRYPTION = REQUIRED ALGORITHM AES) 
GO

如果创建证书过程中有失败的,可以用这个回退一些操作:

--删除终结点
drop ENDPOINT [group0_endpoint];
go
--删除证书
DROP CERTIFICATE CERT1;
--删除主密钥
drop master key 
go

3. 把证书文件发到每台设备

随便用什么方法,把证书文件发到每台服务器:
481370-20180116112842990-1904205540.png

4. 在每台服务器的SQL里,安装其它服务器的证书:

--载入其它节点证书
--不用载入自己的证书!
--不用载入自己的证书!
--不用载入自己的证书!
--CREATE CERTIFICATE CERT1 FROM FILE = 'D:\share\CERT1.cer'; 
CREATE CERTIFICATE CERT2 FROM FILE = 'D:\share\CERT2.cer'; 
CREATE CERTIFICATE CERT3 FROM FILE = 'D:\share\CERT3.cer'; 
GO 

481370-20180116113315678-451135168.png

5. 查看证书与终结点

现在在每台设备执行如下指令应该都能看到所有证书,以及终结点.group0_endpoint,如果没有,需要根据以上操作创建.

select * from sys.certificates
select * from sys.endpoints 

创建可用性组

1. 新建可用性组向导

481370-20180116114703053-1744857989.png

2. 根据向导走流程

名称随意
481370-20180116114847209-1139406487.png

如果你之前没备份数据库,这里会过不了
481370-20180116115526974-871684240.png

把所有节点添加进来,注意还要配置些选项
481370-20180116115745849-709504725.png

默认过过过~
481370-20180116115902912-625986409.png
481370-20180116115912787-282387205.png
481370-20180116115923646-2089608049.png
481370-20180116115934412-172401870.png

3. 数据同步成功

481370-20180116120132974-1827786756.png
到这里,数据同步就成功了,我们可以看到每台服务器都同步了这个数据库
根据之前的配置,我们有1个可读写的主节点,和2个只读的备用节点.当客户端要连接的时候,如何知道主节点与备用节点呢?接下来需要配置一个侦听器,让客户端通过侦听器自动连接到主节点.


创建侦听器

我们需要给可用性组创建一个侦听器,该侦听器会自动把侦听器IP指向主库服务器.

1. 点这里

481370-20180116134207068-1612483818.png

2. 填写侦听器IP和端口

481370-20180116134132490-602070470.png

3. 完成

481370-20180116134331849-796693048.png


简单测试

1. 使用侦听器连接

我们刚才创建了侦听器,现在可以用这个侦听器的IP去连接当前主数据库节点.
481370-20180116134952584-1864457665.png
成功!

2. 尝试手工切换主节点

点这里
481370-20180116135042271-112438588.png
选D2节点切换
481370-20180116135105678-1833646800.png
连接一下
481370-20180116135149381-390688731.png
后面都是默认配置即可.
481370-20180116135220599-38951479.png
刷新下连接,可以看到当前还是连着"主要"节点:
481370-20180116135334099-726438422.png
481370-20180116135251834-1891344352.png

3. 尝试自动切换

接着试试以关机的方式,让数据库自己去切换节点.
强行关闭该服务器:
481370-20180116135602474-794614367.png
再次刷新客户端:
481370-20180116135646615-746677134.png
可以看到主库自动切换到D1去了.

4. 写入数据

481370-20180116135957834-1656670258.png
在切换过的库写数据会出现这样的情形:写入的数据自增长字段多了1000,所以,在设计业务的时候,最好对此有所准备.

结束~

转载于:https://www.cnblogs.com/DragonStart/p/8296276.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值