用powershell脚本,检测cpu100%,并触发sqlserver主备切换。

我为园子设计的脚本大致如下:
1慢检测:任务计划每分钟运行。发现cpu高于95%后,触发2。
2快检测:每隔5秒钟运行,发现cpu高于95%,连续6次后,触发3。
3报警n次。超出5分钟未处理后,触发4。
4去sql server机,执行主备切换的powershell命令。
5休眠n秒,连续触发3次主备切换,cpu还不能下降的话。则重启sql server机。
简单来说,就是操作自动化。

sql脚本:https://files.cnblogs.com/files/piapia/powershell.zip

 

Add-Content -Path "${PSScriptRoot}/bj报警未处理标记.txt" -Value ‘‘


foreach ($Private:i in 1..6)
{
    #这里有些我写的报警脚本。 https://gitee.com/chuanjiao10/kasini3000/tree/master/admin_gui
    #xxx

    Start-Sleep -Seconds 60
}

if (Test-Path -LiteralPath "${PSScriptRoot}/bj报警未处理标记.txt")
{
    #触发sql server 主备切换。
    & "${PSScriptRoot}/sql_server主备切换.ps1"
}

 

if (Test-Path -LiteralPath "${PSScriptRoot}/记录主备切换次数.txt")
{
    $Private:主备切换次数 = Get-Content -Path "${PSScriptRoot}/记录主备切换次数.txt"
}

if ($Private:主备切换次数 -ge 3)
{
    Remove-Item -LiteralPath "${PSScriptRoot}/记录主备切换次数.txt"
    Write-Host ‘重启sqlserver‘
    & "${PSScriptRoot}/重启sql服务器.ps1"
}

$Private:主备切换次数++
Add-Content -Path "${PSScriptRoot}/记录主备切换次数.txt" -Value $Private:主备切换次数

Add-Content -Path "${PSScriptRoot}/记录主备切换时间.txt" -Value (Get-Date)

#sqlserver 主备切换
& "${PSScriptRoot}/0sqlserver_insert.ps1"     -server ‘127.0.0.1‘ -username ‘aaa‘ -pass ‘12345678‘ -query "USE master ; ALTER DATABASE database_name SET PARTNER FAILOVER ;"
# https://docs.microsoft.com/zh-cn/sql/database-engine/database-mirroring/manually-fail-over-a-database-mirroring-session-transact-sql?view=sql-server-2016

 

用powershell脚本,检测cpu100%,并触发sqlserver主备切换。

上一篇:基于 Prometheus 的云上 MySQL 监控实践 | 运维进阶


下一篇:数据库事务