gpt4 book ai didi

mysql - 如果远程 MySQL 服务器关闭,则重新启动 NodeJS 服务器

转载 作者:行者123 更新时间:2023-12-04 19:25:42 26 4
gpt4 key购买 nike

我有几个 NodeJS 服务器,每个服务器都托管在自己的 VM 机器上(使用 Ubuntu Server),它们都远程连接到不同的 VM 机器上的同一个 MySQL 服务器。
MySQL 服务器不时重启或崩溃并恢复(不确定,因为我们无权访问该服务器)并且所有 NodeJS 服务器都挂起,等待更改(我正在使用 nodemon 启动它们),唯一的解决方案是手动重启它(Ctrl + C/nodemon app.js)
一旦 MySQL 服务器重新启动/恢复,我需要一种方法在其自己的终端窗口中重新启动每个 NodeJS 服务器。
我在想也许我可以创建一个在后台运行的脚本(cronjob 每 1 小时或类似的东西),如果 MySQL 关闭,它将重新启动 NodeJS 服务器,直到服务器不再挂起,如果可能的话。
或者,完全杀死 NodeJS 和当前终端 session ,然后打开另一个终端到服务器的位置并运行“nodemon app.js”。
问题是,我不确定如何做到这一点,或者即使这是最好的方法。
我发现我可以 ping MySQL 服务器并检查服务器是否关闭,但从那里我被卡住了。

mysql> GRANT USAGE ON *.* TO ping@'%' IDENTIFIED BY 'ping';

#!/bin/bash

MYSQL_USER=ping
MYSQL_PASS=ping
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
mysqladmin ping ${MYSQL_CONN} 2>/dev/null 1>/dev/null
MYSQLD_RUNNING=${?}
if [ ${MYSQLD_RUNNING} -eq 1 ]; then {SOMETHING_HERE_MAYBE} ; fi
关于如何处理这个或一些脚本示例的任何建议?

最佳答案

我猜你最好的选择是PM2 restart strategies ,我很确定 PM2 具有在非零退出代码 (Skip Auto Restart For Specific Exit Codes strategy) 的情况下重新启动服务器的功能,所以你可以做的是在你试图连接到你的数据库的代码中,以防出现错误添加process.exit(1)这不是一个零退出代码,PM2 将重新启动您的服务器。
同样,我没有尝试过,但我认为经过一些调整后它可能会起作用。
如果这不起作用,你总是有 Restart at cron time战略。您可以使用它每小时重新启动服务器。您可以在上面提供的链接中找到配置。

关于mysql - 如果远程 MySQL 服务器关闭,则重新启动 NodeJS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71382053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com