首页 > 技术文章 > SQL server 2012 + Always on 安装指南

qgmzhn 2021-07-25 12:25 原文

 

安装规划

节点规划

4个节点 -- AD域控两个,SQL server节点两个

IP规划

DC:

172.168.2.105/106

node:

172.168.2.107/108   10.10.10.13/14(private)

故障转移集群IP:

172.168.2.110

always on 服务IP:

172.168.2.111

服务器配置规划

域名:wzk.com

磁盘:C盘--50GB

内存:4GB

 

 

操作系统安装

安装Windows 2012 R2  standard

部署AD主备域控
安装前的准备

  禁用NetBIOS,在所有节点

       取消勾选TCP/IPV6协议

      

 

 

       禁用TCP/IPV4的NetBIOS

          TCP/IPV4属性-->高级-->WINS

 

         

注:NetBIOS,网络基本输入输出系统。是IBM开发的一种会话层协议,主要应用20到200台计算机组成的小型局域网。主要作用是用于地址解析。

主域控的部署

(主域控名DC-primary)

        添加角色和功能向导

 

 

 

 

 

 

 

 

 

 

 

选择服务器,注意服务器信息是否正确

 

 

 

选择AD域服务

 

 

       选择添加功能 

     

 

 

 

      

       保持默认,继续

      

 

 

 

       下一步

      

 

 

 

       开始安装

      

 

 

     

 

 

      

       安装完成,提升为域控制器

      

 

 

 

       添加新林,指定根域名

      

 

 

 

 

       林功能级别和域功能级别保持和操作系统类型相同即可,输入还原密码(加入域的所有计算机全部使用此密码--1qaz@WSX,./)

      

 

 

 

       保持默认,下一步

      

 

 

 

       保持默认,下一步

      

 

 

 

       服务器上目前只有C盘,保持默认即可。下一步

      

 

 

 

       检查配置,下一步

   

 

 

 

安装条件未通过,需要先安装DNS服务

 

 

 

 安装DNS服务器

 

 

 

 

 

 

开始安装

 

 

 

 

 

 

 

 

安装完成,继续AD域控配置

 

 

 

 

       先决条件通过,开始安装

      

 

 

       

 

 

 

 

       安装完成之后,重启服务器使配置生效。

       计算机名已更改

      

 

 

 

配置成功

 

 

 

 

辅助域控的配置

将副域控加入wzk.com中

打开‘添加角色和功能向导’,下一步

 

 

 

 选择服务器

 

 

 

 有了上一次安装的经验,把AD域服务和DNS服务器一起勾选

 

 

 

 

保持默认,下一步

 

 

 

 

下一步

 

 

 

 

 

 这里不勾选自动重启,等配置全部完成之后手动重启

 

 

 

 

开始安装

 

 

 

 

将DC-backup提升为域控

 

 

关键一步,把DC-backup添加到主域中,成为副域控

       在此之前,需要添加DNS服务器地址――主域控服务器IP,点击“选择”

确定域名。

       注意,这里填入的账号密码是域控的管理员账号/密码

      

 

 

   

 

 

 

      

       填写还原密码

      

 

 

 

       下一步

          

复制选项,选择自主域控

 

 

 

 

保持默认,可以选择存储空间大的磁盘

 

 

 

 

下一步

 

       先决条件全部通过,开始安装。

   

 

 

 

生成新的SID

因为副域控是复制的主域控服务器,两者SID相同。需要运行sysperp程序,生成新的SID

修改操作官网说详见http://go.microsoft.com/fwlink/?LinkId=168895

 

未修改之前

主控SID

 

副控SID

 

修改SID

       使用sysperp工具修改SID,工具路径-- c:\windows\system32\sysprep\sysprep.exe 

   

运行此指令后会弹出一下对画框,系统清理动作"进入系统全新体验(OOBE)",勾选通用,开机选项"重新开机

 

 

 

 

 

 

 重新配置服务器

 

重新配置之后,SID重新生成

 

主机名自动更新了。修改之后,等其他配置完成后一起重启

 

查询通知或者点击“更多…”。重新将服务器提升为域控(PS:重新配置之后,安装的服务还在)

 

 

 

 

按照之前的将其加入到现有域中

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

算了,还是先重启吧

 

安装进行中

 

安装成功

 

其他几台节点也是从DC-primary节点复制而来,需要重新生成SID

操作和DC-backup相同。

查看域控配置

(使用DOS命令查看)

DC-backup

DC-primary

测试AD主备域之间的同步

              在DC-priamry创建联系人 test

  

查看DC-backup

 

在DC-backup删除联系人test

 

在DC-primary上查看联系人是否还在

 

成功删除。说明主域和副域之间会同步。

创建域用户—DCADMIN

 过程,略。(注意将新建的用户加入到域管理员组中)

将节点加入域控

sql01

将主控/副控的IP键入DNS服务器

 

修改域名

 

加入成功

 

sql02操作相同

  

加入成功,可在域控服务器上看加入域的服务器

 

在集群节点添加故障转移集群组件

sql01上添加故障转移集群功能

 

 

 

 

       sql02添加故障转移集群功能

 

创建故障转移集群

       sql01上创建集群

       控制面板-->系统和安全-->管理工具-->故障转移集群管理器

   

 

 

 

       选择创建集群

       必须使用域账户登录,否则无法创建。

       先验证配置,在创建集群

   

  

通过浏览,查看集群节点

 

运行所有测试

 

 

 

 下一步,开始测试

 

列出了仲裁盘有一些告警,Always on group不需要仲裁,忽略。

 

测试完成,可以进行集群配置

 

开始创建集群

 

 

 

设置集群名称(sql-cluster)、集群IP(172.168.2.110)

 

 

 

       确认集群节点

 

创建中

 

创建成功,我们的always on  group 不需要仲裁盘,忽略告警即可

 

 

 查看集群状态,健康

 

 

 

 使用共享文件夹创建仲裁文件/盘

(共享文件夹的机器最好不在域中,这里机器数量有限,我选择共享主域控的文件夹)

 

 

 

 

 

 

 

 

 

 

 

 

 

输入主域控的主机名或IP地址,点击“显示共享文件夹”。最后确定。

 

 

 

 

 

 

 

 

  

       权限问题,修改共享文件夹的权限。

   

 

 

 修改为“读取/写入”

 

 

 

 重新配置,配置成功。

 

 

 

 安装单机SQL server

节点脱离域控时需要使用本地管理员账户。先用本地administrator登录安装,再把

SQL server 服务和代理服务修改为域用户登录。

 

选择单机版安装(两个节点都要安装相同实例的数据库)—必须安装开发版

 

 

 

 确认规则全部通过

 

输入密钥安装

(安装develop版本-- YQWTXG8T4RQW4XX-BVH62GP68Y)

 

 

 

 

 提示找到一个补丁更新,下一步安装更新

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

提示需要.NET 3.5

 

 

 

 

sql01、sql02安装.NET 3.5

 

 

 

 

 

 

 

 

确认规则全部通过

 

 

 

 

配置实例

 

 

 

 

磁盘空间检查

 

使用域账户

 

 

 

 这一步最好用本地管理员账户,后面再将代理和SQL server 服务修改为域账号就行。

 

 

 

 保持默认

(实际环境可在这个界面修改用户数据库文件存放目录)

 

 

 添加当前用户

 

 

 

 

 

 

 

 

 

 

 

 

 

 

开始安装

 

 

 

 

 

 

 

 

 

 

 

配置AG组

              开启always on group服务

 

 

 

       重启service生效

 

 

 

 

 

 

开始新建AG组

 

 

 

 

 

 

 指定可用组名称

 

 

 

 

说明:满足建立AG组的DB,选择框可用(不满足条件Status会说明原因,且选择框为灰色)

 

 

 

 

 

 

 连接节点2失败,启用 MSSQLSERVER的协议

 

 

 

 启动协议之后,成功连接

 

 

 

 设置为同步提交模式,同时支持自动故障转移和手动故障转移。可读辅助副本选择”是”。

 

 

 

 端点URL 可以使用FQDN(正式域名)。但是要确认使用FQDN端口可以正常访问,sql02使用域账户登录,避免证书问题。

 

 

 

 还原数据库ag-test

 

 

 

 

 

 

 还原选项选择:RESTORE WITH NORECONERY

 

 

 

 成功还原

 

 

 

 数据库处于正在还原状态就可进行AG组的配置了

 

 

 

 回到AG可用组配置

 

 

 

 监听器配置告警可以忽略。

 

 

 

 

 

 

 

 

 

 

成功安装之后,sql02的数据库状态变成“正在同步”状态,主副本和辅助副本主机和可用性数据库状态显示正常。在故障转移集群管理器中可以查看到名为“AG”的角色。

 

 

 

 

 

 

 

 

 

 

WSFC管理器的角色面板,修改角色的属性,把最大故障数修改成10。防止自动故障转移时失败。

  

 

 

 

    

创建可用性组侦听器

使用一个未使用的静态IP地址和端口来当作always on 的服务IP、服务端口

点击添加侦听器

 

 

 

 

     创建完成。

故障转移集群的角色中也能看到新建的地址

 

 

 

 

 

监听创建完成之后可以用监听连接数据库

 

 

 

 

 

 

 

 

测试故障转移

              数据同步测试

              主要副本上创建表

         

在sql02上查看

 

 

 

 

可以看到成功同步

 

       故障转移测试(手动)

        故障转移测试需要可用组设置为自动提交模式,且辅助数据库处于已同步状态。异步提交和同步提交模式可以手动切换。

       在主要的可用组的属性中配置。

 

 

 

 

 

 

 

 

 

 添加数据库

              在主要副本上新建一个数据库

 

将新建的数据库进行完全备份

将备份集复制到sql02 上进行恢复,恢复选项选择”restore with norecover”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 开始添加数据库到可用性组中

 

 

 

 

 

 

 选中Test数据库

 

 

 

 仅联接

 

 

 

 点击连接

 

 

 

 

 

连接完成,下一步继续。

 

 

 

 

 

 

 

 

 

 

 成功添加

 

 

 

 查看添加效果

 

 

 

 辅助副本上还处于正在还原状态

 

 

手动联接到可用组

 

 

 

 

 成功添加

 

 always on 最多支持10个可用性组,同步提交模式下最多支持4个节点(一个主要副本,3个辅助副本)或在异步提交模式下最多支持5个节点(一个主副本,4个辅助副本)。每个可用性组支持100个数据库

 

 

AlwaysOn延迟及性能监控

 

ALwaysOn支持多个可用性组(一般建议不超过10个),每个AG组最多支持4个可读副本,如何跟踪每个副本的状态也显得非常重要,可以利sys.dm_hadr_database_replica_states内部 的DMV,跟踪每个副本的状态。

 

--可用性组延迟时间监控

  select db_name(st.database_id) 数据库名称,

  gr.name AG组名称,

  reli.replica_server_name 副本服务器,

  st.is_local 是否本地,

  st.synchronization_state 同步状态,

  st.synchronization_state_desc 同步状态描述,

  st.synchronization_health 健康检测,

  st.synchronization_health_desc 健康检测描述,

  st.log_send_queue_size [日志发送队列大小KB],

  st.log_send_rate [日志发送速率KB/],

  st.log_send_queue_size/ st.log_send_rate [日志发送预计时间秒],

  st.redo_queue_size [重做日志队列大小KB],

  st.redo_rate [重做日志速率KB/],

st. redo_queue_size / st. redo_rate [重做日志预计时间秒]

  from sys.dm_hadr_database_replica_states st(nolock)

       join sys.availability_replicas reli(nolock) on st.replica_id=reli.replica_id

            join sys.availability_groups gr(nolock) on st.group_id=gr.group_id

   where

   (

   --1:延迟超过20秒才报警   (条件:日志发送延迟+日志重做延迟 > 20 )

    (st.log_send_queue_size/st.log_send_rate+st.redo_queue_size/st.redo_rate)>20

   ) 

   OR

   (

   --2:同步状态异常也报警

   st.synchronization_health<>2

   )  

 

踩坑记录

1、使用域账户登录操作系统,并安装SQL SERVER。会出现可以在服务中正常启动always on 高可用服务,但是无法新建可用性组。

 

 

 

 

always on 最后一步操作出现35250错误 ,故障诊断参考

https://docs.microsoft.com/zh-cn/sql/relational-databases/errors-events/mssqlserver-35250-database-engine-error?view=sql-server-ver15

 

 

 

 3、SQL server 安装standard 版本会出现无法启用always on 高可用组

 

推荐阅读