暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL Server集群迁域方案

原创 Kay All China Database Union 2024-03-04
785

  最近公司有迁移域控项目,因为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方式迁域。

 

最后修改时间:2024-03-04 13:48:50
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论