本文所述端口修改,本质是一种替代方案,因为,我还无法找到一个直接修改默认端口1433的方案(在我所测试修改方案中,只要修改掉1433默认端口,FCI 数据库实例会挂机,无法启动)。所谓的替代方案是保留1433默认端口的侦听,新加入一个侦听端口。
本文的测试环境是Windows 2012 standard系统,域环境,SQL Server 2016企业版。
备份注册表
为防止修改操作失误,导致 FCI 崩溃,可以先备份数据库的注册表,以便出现问题的时候,可以还原恢复。备份注册表操作如下:
Ctrl+R→输入regedit,打开注册编辑器,找到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server,右击Microsoft SQL Server,点击导出:
命名导出注册表文件,并选择路径,点击保存即可备份完成,如下图。
还原注册表
同样在注册编辑器中,点击文件,点击导入,找到上面备份注册文件
点击打开,即可恢复备份注册表了。
关闭实例检查点
获取注册表中实例检查点的名称
get-clustercheckpoint -registrycheckpoint
在 FCI 的一个节点上移除SQLServer 注册表上的检查点,如下:
PS C:\Users\administrator.ALWAYSON0> get-clustercheckpoint -registrycheckpoint | remove-clustercheckpoint -registrycheck
point
Remove-ClusterCheckpoint
你确定要删除资源“SQL Network Name (alwaysOnSQL)”上的注册表检查点“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\Cluster”吗?
[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): n
Remove-ClusterCheckpoint
你确定要删除资源“SQL Network Name (alwaysOnSQL)”上的注册表检查点“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\Replication”吗?
[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): n
Remove-ClusterCheckpoint
你确定要删除资源“SQL Network Name (alwaysOnSQL)”上的注册表检查点“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\Providers”吗?
[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): n
Remove-ClusterCheckpoint
你确定要删除资源“SQL Network Name (alwaysOnSQL)”上的注册表检查点“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\SQLServerSCP”吗?
[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): n
Remove-ClusterCheckpoint
你确定要删除资源“SQL Network Name (alwaysOnSQL)”上的注册表检查点“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\CPE”吗?
[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): n
Remove-ClusterCheckpoint
你确定要删除资源“SQL Network Name (alwaysOnSQL)”上的注册表检查点“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\SQLServerAgent”吗?
[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): n
Remove-ClusterCheckpoint
你确定要删除资源“SQL Network Name (alwaysOnSQL)”上的注册表检查点“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\MSSQLServer”吗?
[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): y
注意:只需要移除MSSQLServer 的检查点,即最后一个选择“Y”
配置管理器中增加侦听端口
在两个节点上分别使用 SQL Server 配置管理器,增加端口:
注意:
-
端口用英文逗号分隔开来
-
验证端口是否被占用(如果被占用,SQL Server实例将会处于挂起状态),两个节点都需要检查,验证方法如下:
netstat -aon | findstr "3433"
说明端口被任务3312占用,要查看是哪个应用占用了端口,可以使用如下脚本:
tasklist | findstr "3312"
当然也可以从任务管理器中查看:
在注册表中添加检查点
add-clustercheckpoint -resourcename "SQL Network Name (alwaysOnSQL)" -registrycheckpoint "SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQLServer"
切换节点,检查端口添加是否后,FCI能否正常转移。
检验使用新端口连接数据库是否成功。
网络策略中禁用1433端口,只允许使用新端口连接数据库。
如果喜欢,可以搜索关注公众号MSSQLSERVER,及时接收更多精彩博文。