最近公司有迁移域控项目,因为sqlserver集群大部分都基于WSFC,根据和微软的沟通以及实际生产实施经验,总结以下几个方案:
微软WSFC迁域链接:
Windows
Server 2016/2019 中的跨域群集迁移 | Microsoft Learn
Windows Server 2016及更早版本:
群集服务无法从一个域移动到另一个域。这是因为对 Active Directory 域服务和创建的虚拟名称的依赖性增加。需要销毁集群变成单机迁域后再重建。
Windows Server 2019后续版本:
引入了跨集群域迁移功能,可以无需重新构建集群。
New-ClusterNameAccount
– 在 Active Directory 中创建群集名称帐户Remove-ClusterNameAccount
– 从 Active Directory 中移除群集名称帐户 以上链接只针对WSFC本身迁域,需要把集群中的角色清空。SQL Server目前主要有两种集群方式,故方案略有不同。
预检查:
1、 创建一个本地OS和数据库的管理员帐号,防止迁域出问题
2、 sqlserver/sqlserver agent服务账号需要修改为新域账号
3、 记录集群配置信息,如健康检查超时时间、租用超时时间、故障转移最大次数等,需要在新建集群后修改成一致
4、 登录名使用域账号的需要改为新域控账号,最好是新建新域账号重新授权。(直接修改因为AD中SID可能不一致,容易引发问题;权限注意有server role/database role/object permission等,账号自动创建脚本见https://www.modb.pro/doc/125974)
5、 Job owner使用域账号的可改为sa
6、 SSIS package中的账号信息如果使用域账号需要修改为新域账号
7、 Linked server如果使用域账号需要修改为新域账号
8、 所有sql对象的owner,如database
owner/table owner/sp owner等,如果有为域账号的需要修改为新域账号
9、 如果使用共享文件夹,需要将新域账号加上
10、 关闭cluster和db的服务自启,待迁域后再打开
11、 备份所有数据库(含系统库)
具体方案:
1、 对于Sqlserver Failover Cluster:
方案一:卸载数据库集群,重建
1.1
将数据库全部卸载(因为集群是通过安装包安装注册到WSFC的角色中的,故只能将数据库全部卸载来移除WSFC中的角色)
1.2
Windows Server 2016及更早,销毁WSFC集群,使其成为2台单机;
1.2.1 将服务器分别退域加域
1.2.2 重新创建WSFC集群
1.3
Windows Server 2019及更高,利用19新功能执行WSFC跨域迁移
1.4
重新安装Sqlserver Failover Cluster,用新域账号启动数据库服务(重定向master库位置)
该方式需要重装数据库,回退风险较大。需要3-5小时停机窗口。如果有复制分发,需要删除重建所有规则,停机窗口会更长。个人未采用此方案。
方案二:创建新集群,直接把数据盘挂载到新集群
1.1
在2台新服务器上新建一套Sqlserver Failover Cluster,保持新旧集群配置一致
1.2
备份数据库(含系统库)
1.3
生产停机,将磁盘挂载到新集群上,盘符和老集群一致
1.4
修改新集群master库路径
1.5
修改新集群VIP和老集群一致(应用无需调整代码)
1.6
重新生成服务主密钥(因为更换了服务器)
alter service master key force
regenerate;
1.7 重建所有的证书和对称/非对称密钥(如有),重建所有Linked
server(如有)
需要整套集群停机,窗口约1-2小时。复制分发不用修改,只要保持迁域后主机名和原来一致即可。采用此方案,将存储直接挂载到新机器上,类似于异机恢复,且备份可采用存储快照,整体回退风险较小。
方案三:直接新建集群,备份还原迁移
所有版本均适用,但是耗时最长,可以根据应用的不同停机窗口灵活安排,需迁移多次,但是最安全。
2、 对于Alwayson:
2.1
将AG删除
2.2
Windows Server 2016及更早,销毁WSFC集群,使其成为2台单机;
2.2.1 将服务器分别退域加域
2.2.2 重新创建WSFC集群
2.3
Windows Server 2019及更高,利用19新功能执行WSFC跨域迁移
2.3.1 在任意节点管理员身份打开powershell,执行
Get-ClusterResource -Name "cluster-name"|Get-ClusterParameter获取集群名。执行
Remove-ClusterNameAccount
-DeleteComputerObjects使集群成为workgroup模式,群集名称资源对象CNO将从原有域控中删除
2.3.2 停止集群服务
2.3.3 将两个节点分别退域加域
2.3.4 加到新域后,启动集群服务,重新注册群集名称资源
New-ClusterNameAccount -Name -Domain
-UpgradeVCOs 2.3.5 注册成功后,在群集管理器中执行repaire VCO操作来重新新的域中注册文件服务器名称资源(如果没有其他VCO角色,这一步可以跳过)

2.3.6 启动新的群集组
2.4
重新创建AG,使用原有的监听名和VIP
重建WSFC集群的停机窗口会比不重建要多1小时,整体停机窗口大约2-3小时。直接销毁WSFC重建步骤相比2019新功能迁域较简单,如停机窗口充足,Windows Server2019以上也可以通过重建WSFC方式迁域。




