搭建SQL Server 2016 Always on

1.      数据准备

SQL Server 2016 Always on是基于数据库实例的,不同的实例需要创建对应的Always on策略。本章节不涉及数据库调优,只是指导如何配置Always on

  1. 通过SSMS登录到数据库。

图-1 登录数据库

 

  1. 创建mydata数据库并写入初始数据。如果已经有数据库了,可以选择导入。

图-2 创建数据库

 

  1. 备份数据。

图-3 备份数据

 

2.      开启高可用组支持

SQLServer服务打开高可用性组支持,操作完成后需要重启数据库服务。

图-4 启用AlwaysOn可用性组

 

3.      创建与分享证书

  1. 服务器上创建共享目录(每个节点都执行)。创建证书过程中会生成证书文件,所以每个服务器需要准备一个文件夹用于存放证书文件。

该目录需要给开启everyone读写权限。

 

图-5 创建共享目录

 

  1. 创建证书。在每一个服务器上,执行如下SQL代码,执行之前请参照注释对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';

--创建终结点,设为证书验证 这里第二行有1CERT1要改

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

  1. 把证书文件发到每台设备上。

图-6 分发证书文件

 

  1. 在每台服务器的数据库里,安装其它服务器的证书。

载入其它节点证书,不用载入自己的证书。

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

 

图-7 安装证书

 

4.      创建可用性组

  1. 右键单击可用性组,选择新建可用性组。

图-8 新建可用性组

 

  1. 在新建可用性组对话框中设置相关参数。

图-9 配置组名

 

图-10 选择数据库

 

  1. 配置选项,单击<下一步>按钮。

集群间数据同步有两种方式“同步”,“异步”。如果选择异步,则集群性能在运行时大致等同于单机sql server的方式。如果选择“同步”其性能与单机相比相差30%左右。

 

图-11 指定副本

 

  1. 选择数据同步方式,单击<下一步>按钮。

图-12 选择数据同步方式

 

  1. 验证之后单击<下一步>按钮。

图-13 验证

 

  1. 确认信息无误后,单击<完成>按钮。

图-14 摘要

 

  1. 配置结果。

图-15 配置结果

 

图-16 数据同步成功。

 

5.      创建侦听器

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

图-17 添加侦听器

 

  1. 配置侦听器。

图-18 配置侦听器

 

  1. 添加完成,查看添加结果。

图-19 添加成功