SQL Server 2016无域AlwaysOn配置

1 主机集群安装信息

软件准备准备:
SQL Server 2016
cn_sql_server_2016_enterprise_x64_dvd_8699450.iso

SQL Server 2016无域AlwaysOn配置_第1张图片
image.png

注意:只有Windows Server 2016 才能无域配置群集

IP以及名称规划:
节点1:d1 IP地址:192.168.56.131
节点2:d2 IP地址:192.168.56.130
Windows群集名称:clusterA IP地址:192.168.56.140
可用性组名称:TESTAG
SQL侦听器名称:JTSQL01 IP地址:192.168.56.150

2 安装软件

2.1 安装cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.iso软件
2.1 配置SqlManager用户添加到administrators组里
SQL Server 2016无域AlwaysOn配置_第2张图片
image.png
2.3 配置hosts文件
SQL Server 2016无域AlwaysOn配置_第3张图片
image.png
2.4 设置允许应用或功能通过防火墙,两个节点均要设置,按照下面图中红框框出的地方设置,注意选项后面打勾的位置。
SQL Server 2016无域AlwaysOn配置_第4张图片
image.png
SQL Server 2016无域AlwaysOn配置_第5张图片
image.png
SQL Server 2016无域AlwaysOn配置_第6张图片
image.png

3. 配置SQL Server AlwaysOn

3.1 在d1和d2上启用AlwaysOn
SQL Server 2016无域AlwaysOn配置_第7张图片
image.png

启用AlwaysOn会要求重启服务,重启就可以

3.2 重启服务后,查看服务器属性,确保 HADR 为 True
SQL Server 2016无域AlwaysOn配置_第8张图片
image.png

既然节点没有加入域,那么就不能用域认证,只能用证书认证,因此需要创建证书和端点。

3.3 分别在两个节点数据库上创建证书,并且彼此还原对方的证书,SQL代码如下:

d1服务器执行:

--(1)创建证书
USE master
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@ssw0rd0';  --改密码可修改,如下类似,但必须保持一致
GO

--DROP CERTIFICATE HOST_A_cert
CREATE CERTIFICATE HOST_A_cert 
   WITH SUBJECT = 'HOST_A certificate',START_DATE  = '01/01/2016',EXPIRY_DATE = '01/01/2100';  --时间可以无限大,如下类似
GO  

--(2)创建连接的端点
--DROP ENDPOINT Endpoint_Mirroring
CREATE ENDPOINT Endpoint_Mirroring
   STATE = STARTED
   AS TCP (
      LISTENER_PORT=5022    --此端口可修改,但必须保持一致,如下类似。
      , LISTENER_IP = ALL
   ) 
   FOR DATABASE_MIRRORING ( 
      AUTHENTICATION = CERTIFICATE HOST_A_cert
      , ENCRYPTION = REQUIRED ALGORITHM AES
      , ROLE = PARTNER
   );
GO

--(3)备份证书以备建立互联
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\backup\HOST_A_cert.cer';
GO

--(4)互换证书
将备份到C:\backup\的证书进行互换,即d1服务器的HOST_A_cert.cer复制到d2服务器的C:\backup\;d2服务器器的HOST_B_cert.cer复制到d1服务器的C:\backup\

d2服务器执行

--(1)创建证书
USE master;
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@ssw0rd0';
GO

--DROP CERTIFICATE HOST_B_cert
CREATE CERTIFICATE HOST_B_cert 
   WITH SUBJECT = 'HOST_B certificate', START_DATE  = '01/01/2016',EXPIRY_DATE = '01/01/2100';
GO
 
--(2)创建连接的端点
--DROP ENDPOINT Endpoint_Mirroring
CREATE ENDPOINT Endpoint_Mirroring
   STATE = STARTED
   AS TCP (
      LISTENER_PORT=5022
      , LISTENER_IP = ALL
   ) 
   FOR DATABASE_MIRRORING ( 
      AUTHENTICATION = CERTIFICATE HOST_B_cert
      , ENCRYPTION = REQUIRED ALGORITHM AES
      , ROLE = PARTNER
   );
GO

--(3)备份证书以备建立互联
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\backup\HOST_B_cert.cer';
GO

--(4)互换证书
将备份到C:\backup\的证书进行互换,即d1服务器的HOST_A_cert.cer复制到d2服务器的C:\backup\;d2服务器器的HOST_B_cert.cer复制到d1服务器的C:\backup\

d1服务器执行

--添加登录名、用户

--为入站连接配置Host_A
--1.在HOST_A 上为HOST_B 创建一个登录名。
USE master;
--DROP LOGIN HOST_B_login
CREATE LOGIN HOST_B_login WITH PASSWORD = 'P@ssw0rd0';  
GO

--2.创建一个使用该登录名的用户。
--DROP USER HOST_B_user
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
GO

--3.使证书与该用户关联。
--DROP CERTIFICATE HOST_B_cert
CREATE CERTIFICATE HOST_B_cert
   AUTHORIZATION HOST_B_user
   FROM FILE = 'C:\backup\HOST_B_cert.cer'
GO

--4.授予对远程镜像端点的登录名的CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
GO

d2服务器执行

--添加登录名、用户

--1,为入站连接配置Host_B
--在HOST_B 上为HOST_A 创建一个登录名。
USE master;
--DROP LOGIN HOST_A_login
CREATE LOGIN HOST_A_login WITH PASSWORD = 'P@ssw0rd0';
GO

--2,创建一个使用该登录名的用户。
--DROP USER HOST_A_user
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
GO

--3,使证书与该用户关联。
-- DROP CERTIFICATE HOST_A_cert
CREATE CERTIFICATE HOST_A_cert
   AUTHORIZATION HOST_A_user
   FROM FILE = 'C:\backup\HOST_A_cert.cer'
GO

--4,授予对远程镜像端点的登录名的CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
GO

3.4 节点 d1 创建测试数据库,完整模式,并备份恢复到d2 norecovery状态,涉及脚本
USE [master]  
GO  
BACKUP DATABASE demo1
TO DISK = 'C:\backup\demo1.BAK' WITH INIT,FORMAT,COMPRESSION
GO  

--恢复数据库
USE [master]  
GO  
RESTORE DATABASE demo1
FROM DISK = 'e:\backup\demo1.BAK'  
WITH FILE = 1,  
MOVE 'E6PlateformMain_PRI_File1_Data' TO 'C:\Databases\MSSQLSERVERA\demo1.mdf',  
MOVE 'DBName_log' TO 'C:\Databases\MSSQLSERVERA\demo1_log.ldf',  
MOVE 'E6PlateformMain_PRI_File1_Data' TO 'C:\Databases\MSSQLSERVERA\demo1.ndf',  
MOVE 'DBName_log' TO 'C:\Databases\MSSQLSERVERA\demo1_log.ldf',
RECOVERY

注:DBName,DBName_log可以使用
RESTORE FILELISTONLY from disk='C:\backup\MSSQLSERVER\demo1.BAK'
3.4 配置可用性组,接下来就和以前版本的配置是一样的了,不再描述,按照下面的截图一步一步配置
SQL Server 2016无域AlwaysOn配置_第9张图片
image.png

SQL Server 2016无域AlwaysOn配置_第10张图片
image.png

SQL Server 2016无域AlwaysOn配置_第11张图片
image.png

SQL Server 2016无域AlwaysOn配置_第12张图片
image.png

SQL Server 2016无域AlwaysOn配置_第13张图片
image.png

SQL Server 2016无域AlwaysOn配置_第14张图片
image.png

SQL Server 2016无域AlwaysOn配置_第15张图片
image.png

SQL Server 2016无域AlwaysOn配置_第16张图片
image.png

SQL Server 2016无域AlwaysOn配置_第17张图片
image.png

SQL Server 2016无域AlwaysOn配置_第18张图片
image.png
3.5 最后创建侦听器,当然,创建侦听器也可以在上一步设置。
SQL Server 2016无域AlwaysOn配置_第19张图片
image.png

SQL Server 2016无域AlwaysOn配置_第20张图片
image.png

最后,可以使用侦听器来进入数据库,配置无域AlwaysOn成功。

SQL Server 2016无域AlwaysOn配置_第21张图片
image.png

4 AlwaysOn添加可用性数据库

AlwaysOn搭建成功后,主从数据库已经实现数据同步。但我们经常还需要向已经建好的AlwaysOn可用性组中添加数据库。目前只有一个数据库demo1。

在主库新建数据库demo2,并建一张新表。然后进行完整备份和日志备份并以此还原到从库中,注意还原时采用norecovery选项。

此时先决条件已经准备好,接下来可以进行添加数据库操作。
AlwaysOn高可用性-可用性组-TESTAG-可用性数据库-右键 添加数据库。注意这一步只能在主库的可用性组上进行操作。

SQL Server 2016无域AlwaysOn配置_第22张图片
image.png

单击下一步,选中要添加的数据库。

SQL Server 2016无域AlwaysOn配置_第23张图片
image.png

SQL Server 2016无域AlwaysOn配置_第24张图片
image.png

单击下一步,选择仅连接,单击下一步,此时需要连接现有的辅助副本,默认是未连接状态。

SQL Server 2016无域AlwaysOn配置_第25张图片
image.png

SQL Server 2016无域AlwaysOn配置_第26张图片
image.png

SQL Server 2016无域AlwaysOn配置_第27张图片
image.png

SQL Server 2016无域AlwaysOn配置_第28张图片
image.png

参考技术
AlwaysOn 可用性组 (SQL Server) https://docs.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/always-on-availability-groups-sql-server?view=sql-server-2016

你可能感兴趣的:(SQL Server 2016无域AlwaysOn配置)