故障转移群集 SQLSERVER解决方案

适用于群集脚本

背景:

公司由于业务需求搭建了故障转移群集 + 共享存储

解决了单台主机出现问题引起的故障

现在面临新的问题:

SQL数据库将MDF文件存放在共享存储磁盘阵列上,假如A主机故障,B主机顶替服务后需要手动重启B主机的SQL SERVER才能使数据库正常使用。

否则会显示为:  数据库名(恢复挂起)

 

思路:

利用群集共享存储特点 (当A主机挂载磁盘Y时,B主机无法显示也无法访问Y磁盘) 制作一个开机运行的脚本 循环检测共享盘是否存在

存在                   则重启主机SQL相关服务 并记录重启时间作为日志  

不存在              等待五秒 继续检测

 

脚本:

----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------

set BatRunner=createobject("wscript.shell")  '使用dos命令需要

Set fso=CreateObject("Scripting.FileSystemObject")  '判断文件是否存在需要

Dim aaa:aaa = 5 '定义一个变量,赋值为5

BatRunner.run "cmd /c ping 10.0.0.104 -t" '判断脚本有无在执行

Do While aaa = 5 '当aaa变量为5时,执行if循环

If fso.FileExists("y:\aaa.txt")  Then '判断Y盘是否有aaa.txt文件存在(预先新建)

BatRunner.run "cmd /c net stop SQLAgent$SQL2016" '停止数据库代理服务

BatRunner.run "cmd /c net stop SQLPBDMS$SQL2016" '停止数据移动服务

BatRunner.run "cmd /c net stop SQLPBENGINE$SQL2016" '停止引擎服务

wscript.sleep 1000*5 '等待五秒再执行,若不延时会卡在数据库服务停止命令

BatRunner.run "cmd /c net stop MSSQL$SQL2016" 停止'数据库服务 前几个服务停止后再执行

wscript.sleep 1000*3 '等待3秒再执行 等待服务停止完成

BatRunner.run "cmd /c net start MSSQL$SQL2016" '启动数据库服务

BatRunner.run "cmd /c net start SQLAgent$SQL2016" '启动数据库代理服务

BatRunner.run "cmd /c net start SQLPBDMS$SQL2016" '启动数据移动服务

BatRunner.run "cmd /c net start SQLPBENGINE$SQL2016" '启动引擎服务

Exit do  '退出DO循环

else

wscript.sleep 1000*5 '等待五秒再执行

End If  '结束if判断

Loop

Currentdate=date() '显示日期需要

CurrentTime=Hour(Now)&":"&Minute(Now)&":"&Second(Now) '显示时间需要

msgbox "执行完成,日期:  "&Currentdate & "  时间:  " & CurrentTime  '弹窗显示执行完成时间 (临时查看)

BatRunner.run "cmd /c echo 10.0.0.13启动服务时间为: >> y:\aaa.txt & echo %date% >> y:\aaa.txt & echo %time% >> y:\aaa.txt & echo --------------------------------------------------  >> y:\aaa.txt "  '将运行结束时间追加记录到文本文档 (Y是共享存储盘符)

 

----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------

注意:

1、循环时间可自己修改 比如主机重启某项服务需要时间较长

2、SQL SERVER根据安装的功能不同 需要重启的服务可能也不相同

3、共享磁盘盘符根据实际修改 aaa.txt文件手动建立 作为if判断依据

4、有一条执行cmd命令的脚本用来判断脚本有无在执行 脚本执行完成后请手动关闭窗口

4、将脚本设置为开机启动,非特殊情况无需手动执行,否则会重启正常使用的SQL服务

 

数据库相关服务查看:

故障转移群集 SQLSERVER解决方案_第1张图片

故障转移群集 SQLSERVER解决方案_第2张图片

故障转移群集 SQLSERVER解决方案_第3张图片

故障转移群集 SQLSERVER解决方案_第4张图片

这里以SQL代理为例 查看其服务名 及停止 启动

查看服务名:

故障转移群集 SQLSERVER解决方案_第5张图片

 

关闭服务:net stop SQLAgent$SQL2016

启动服务:net start SQLAgent$SQL2016

你可能感兴趣的:(故障转移群集 SQLSERVER解决方案)