qqluciferzy 2023-03-25 20:58 采纳率: 50%
浏览 46
已结题

编写一个脚本监听sql的运行状态并联动另一台服务器上的服务重启

A服务器上部署sqlserver。B服务器上(linux)部署了一个服务去实时查询A服务器上的视图并进行后续处理工作。
当A服务器上进行例维或者重启后,B服务器上的程序无法自动再次连接SQL。
想完成功能 去监听A服务器上上SQL的状态,发现A服务器上的SQL重启恢复正常后,等待1分钟后自动重启B服务器上的服务

  • 写回答

7条回答 默认 最新

  • OKX安生 2023-03-25 21:16
    关注
    该回答引用于gpt与OKX安生共同编写:
    
    • 该回答引用于gpt与OKX安生共同编写:

    可以编写一个脚本来监听 A 服务器上 SQL Server 的状态,并在 SQL 服务重启后自动重启 B 服务器上的服务。下面是一个示例脚本的实现:

    #!/bin/bash
    
    # 设置 SQL Server 连接信息
    SQL_HOST="A服务器IP"
    SQL_PORT=1433
    SQL_USER="SQL用户名"
    SQL_PASSWORD="SQL密码"
    SQL_DATABASE="数据库名"
    
    # 设置需要监控的服务名称
    SERVICE_NAME="服务名称"
    
    # 检查服务是否启动
    check_service() {
        if systemctl is-active $SERVICE_NAME >/dev/null; then
            echo "Service $SERVICE_NAME is running."
        else
            echo "Service $SERVICE_NAME is not running."
            systemctl start $SERVICE_NAME
            echo "Starting service $SERVICE_NAME..."
        fi
    }
    
    # 检查 SQL Server 是否可连接
    check_sql() {
        if /opt/mssql-tools/bin/sqlcmd -S $SQL_HOST,$SQL_PORT -U $SQL_USER -P $SQL_PASSWORD -d $SQL_DATABASE -Q "SELECT @@VERSION" &>/dev/null; then
            echo "SQL Server is running."
        else
            echo "SQL Server is not running. Restarting service $SERVICE_NAME in 1 minute..."
            sleep 60
            systemctl restart $SERVICE_NAME
            check_service
        fi
    }
    
    # 主循环
    while true; do
        check_sql
        sleep 10
    done
    

    这个脚本会每隔 10 秒钟检查一次 SQL Server 和服务状态。如果发现 SQL Server 不可连接,则会等待 1 分钟后自动重启服务。如果服务已经在运行,则不会进行任何操作。

    你可以将这个脚本保存为一个可执行文件,然后在 B 服务器上使用 systemd 等服务管理工具来自动启动和管理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月25日

悬赏问题

  • ¥15 写一个可直接调用的函数,将32位有符号数转成另一个无符号的数
  • ¥15 CMAKE+VS2019+QT5.15.2组合进行二次编译
  • ¥15 nginx 配置静态html访问 ,后台登录时页面始终被重定向到登录页,无法访问到后台的静态html页
  • ¥20 自动登录的j2ee程序编译
  • ¥15 fluent模拟静态气体扩散
  • ¥15 java根据模板,生成word文档,需要带目录
  • ¥15 广告联盟的兜底广告是什么意思
  • ¥15 如何证明高斯噪声的包络公式
  • ¥150 寻找王者荣耀开发作者,合作或者解答
  • ¥15 关于cpci总线的几个问题,别用人工智能回答