SQL Server 2016 Always On 总结整理

一、Always On简介

从SQL Server 2012开始,SQLServer引入了一种新的高可用技术,它的名字叫做AlwaysOn。AlwaysOn在开发初期代号叫做HADRon。但是AlwaysOn相对于故障转移群集、数据库镜像和日志传送而言,的确是拥有许多优势。甚至可以说,AlwaysOn是这三种技术的集大成者。想要了解更全面的介绍和技术内容,可参考《SQL Server 2012 实践与管理实战指南》和官方文档。

二、Always On 构建

SQL Server 2016 Always On 可以在域环境、非域环境构建,从构建角度来看,最大的不同之处是AG间主要副本和辅助副本间数据同步时,数据库实例间认证方式存在差异。
域环境可以使用Windows认证、证书认证,非域环境可使用证书认证。此处只讨论域环境下两个节点的Always On构建及维护。

1、环境准备

(1)域账号
AD\Administrator --域管理账户,用于创建WSFC集群
AD\sqladmin --普通域账户,用于SQL Server 服务运行

(2)软件
SQL Server 2016 SP2 --直接使用SP2版本,打补丁只需打一次
SQL Server补丁(CU14) --从官网下载最新的补丁

(3)服务器

主机名 NA1 NA2
业务网段IP 192.168.10.131 192.168.10.132
心跳网段IP 192.168.20.131 192.168.20.132
存储网段IP 192.168.30.131 192.168.30.132
操作系统 Windows Server 2016 Windows Server 2016

备注:
· 两台服务硬件配置、系统环境一致
· 实际生产中,存储可能不是通过这种方式连接主机的
· 业务网段网卡,需要“禁用TCP/IP上的NetBIOS",否正在创建可用性组侦听时会报错(具体原因待深究)。

2、WSFC、SQL Server、AG配置规划

(1)故障转移集群
集群名称: SQLCLUSTER --注意命名规范,最好纯字母(若实在需要特殊字符请去官网查阅命名规范,2008的域控不支持“-”,2016的域控可以用“-”)
集群IP : 192.168.10.130
网络规划 :
业务网络 192.168.10.0/24 集群和业务
心跳网络 192.168.20.0/24 仅集群
存储网络:192.168.30.0/24 仅集群

(2)SQL Server
实例名称 : MSSQLSERVER
实例运行账户: AD\sqladmin
代理运行账户: AD\sqladmin
实例端口号 : 1433
端点端口 : 5022 --副本间数据同步通过次端口

(2)可用性组(AG)
AG名称 : AGSQLHR
AG侦听名称 : AGLnsrHR --注意命名规范,最好纯字母(若实在需要特殊字符请去官网查阅命名规范)
AG侦听IP : 192.168.10.136 --注意预留IP地址,防止以后添加节点。

生产中还应关注计算机防火墙、网络防火墙的影响,应整理出OS、WSFC、SQL Server、AG与数据库环境构建和使用的相关端口(待补充)。

2、搭建作业

1.两台服务器配置修改: 修改主机名、配置IP地址,配置业务网卡“禁用TCP/IP上的NetBIOS”。
2.两台服务器配置OS权限: 本地Administrators组添加成员:AD\sqladmin
3.两台服务器安装SQLServer: 以本地账户Administrator登录操作系统,安装SQL Server,打补丁
SSCM中修改实例、代理服务运行账户为 AD\sqladmin (如果时命名实例,还需修改实例访问端口为规划端口)
SSCM中修改实例启用Always On高可用,重启实例。
SSMS连接数据库实例,在登录名中添加登录名AD\sqladmin,同时添加sysadmin角色

4.搭建WSFC: 使用域管理员账户AD\Administrator 登录其中一个服务器
验证、创建故障转移集群
配置仲裁
备注:如果是共享文件仲裁,1.需要确保网络稳定,这种问题发生的概率比较大。2.如果是普通服务器提供的共享文件夹,请考虑服务器是否会出现因打补丁或被他人重启等不可控的情况。
业界通常将仲裁盘或文件夹设为Q

备注:(1)创建WSFC可以用普通的域账户(加入本地Administrator),但需要域控中预先在OU中创建计算机对象SQLCLUSTER,或者给该普通域账户赋予创建计算机对象及DNS权限
(2)WSFC创建过程中,域账户AD\Administrator在域控中做的主要操作有两个。
·在NA1、NA2所在OU创建计算机对象:SQLCLUSTER
·在DNS中添加了解析:SQLCLUSTER - 192.168.10.130
后面将要创建的AG是故障转移集群SQLCLUSTER的资源,而创建AG侦听时,SQLCLUSTER将在域控中也要做两个操作
·在SQLCLUSTER所在OU创建计算机对象:AGLnsrHR
·在DNS中添加了解析:AGLnsrHR - 192.168.10.136
实际生产环境中,域控权限设置,创建的计算机对象可能没有创建计算机对象的权限,因此需要确认SQLCLUSTER的权限。

5.SQLCLUSTER域控权限配置: 在域控中给修改SQLCLUSTER所在OU赋予SQLCLUSTER权限: 创建计算机对象、删除计算机对象、读取所有属性 (名称待修正)

6.配置Always On 可用性组: 使用本地管理账户Administrator登录NA1
在故障转移集群管理器中,确认修改: 业务网络-集群和业务、 心跳网络-仅集群、 存储网络-仅集群
使用SSMS连接到NA1上的数据库实例,创建测试数据库testdb,完整备份testdb
创建可用性组AGSQLHR
创建可用性组AGLnsrHR: 侦听名称-AGSQLHR 侦听IP-192.168.10.136

7.故障转移策略设置: 故障转移集群管理器中,修改角色AGSQLHR的故障转移策略为:6小时10次、取消故障恢复 (以实际需求为准,这里供参考)

8.进行AG功能简单验证: 数据库同步,故障转移。
备注:后期建议进行软硬件、联合应用进行测试。

9.业务系统安装,创建业务数据库

10.添加业务数据库至AG
备注:· 数据量使用的自动种子,实际应考虑网络环境进行判断使用自动种子还是手工还原。 实测50G的数据量,4CPU,万兆网络,磁盘写高达1300MB/s的条件下,自动种子同步速度约200MB/s~300MB/s。
· 曾经遇到这种情况:数据库较多,一次性添加多个数据库至AG,出现部分数据库无法在辅助副本还原的情况,后面在主库移除有问题的可用性数据库,重新一个一个地添加至AG,同步正常。

11.配置数据库备份维护计划:
指定备份策略: (1)每天23点完整备份+日志备份、本地保留1天、NBU保留7天;(2)设置AG备份策略为“优先辅助副本”
主要副本、辅助辅助配置相同地备份维护计划:
(1)仅复制的完整备份 --任务计划不会备份主要副本,辅助副本不支持普通的完整备份
(2)正常日志备份 --任务计划不会备份主要副本,任意副本上备份日志,会截断其他副本日志

12.手动备份系统库

三、Always On 维护

1.故障测试:服务、系统、集群、仲裁等软硬件故障对AG的影响。

2.故障恢复:辅助副本故障如何修复、主要副本故障如何修改
3.副本增减:增加副本、减少副本、修改端点
4.AG监控:
5.AG性能:
6.SQLServer打补丁

posted @ 2020-08-13 07:41  浮生若夢sky  阅读(4366)  评论(0编辑  收藏  举报