Redis服务器自动宕机如何通过脚本重启?

问题描述 投票:0回答:5

Redis 有主从配置。如果主服务器出现故障,从服务器将成为新的主服务器。我如何使用脚本重新启动以前的 Redis 主服务器(作为新主服务器的从服务器,或者如果它再次成为主服务器也可以)。我不知道不想手动完成。

bash redis node-redis
5个回答
7
投票

这可以使用一个小脚本来完成。创建一个观察程序脚本,在端口 6379 上持续 ping REDIS,并检查是否失败。只需使用 redis-server 命令重新启动服务器即可。

#!/bin/bash
a=$(redis-cli -p 6379 PING)
if [ "$a" = "PONG" ]
then
    echo 'Already running'
else
    b=$(/etc/init.d/redis_6379 start)   
    echo $b
fi

现在在 crontab 中为每个人安排此脚本一分钟。


5
投票

在 Redis 死机并保持死机导致灾难性服务器故障后,我必须自学:

  1. 编辑

    /etc/systemd/system/multi-user.target.wants/redis.service
    并将其添加到底部的
    [Service]
    部分:

    Restart=always
    RestartSec=10s
    
  2. 运行

    sudo systemctl daemon-reload

  3. 运行

    sudo systemctl restart redis

现在每次崩溃都会在 10 秒后重新启动。

这对于 Redis 来说通常“足够好”。


2
投票

根据上面的答案,我添加了更多描述以使其更容易理解。

第一步:在根文件夹或您选择的文件夹上创建脚本 使用命令:

vi redis-watch.sh 

第二步:粘贴下面的脚本:

 #!/bin/bash
a=$(redis-cli -p 6379 PING)
if [ "$a" = "PONG" ]
then
    echo 'Already running'
else
    b=$(systemctl start redis)
    echo $b
fi

保存更改。

第三步:更改文件的权限,以防止执行时出现权限被拒绝的响应。运行:

sudo chmod 777 redis-watch.sh

测试脚本是否执行。运行:

./redis-watch.sh

如果 Redis 已经运行正常,则预期响应应该是

 Already running
,否则脚本将启动 Redis。

第四步:要自动执行检查,请创建一个 cronjob 以按您选择的时间间隔运行脚本。对于我们的例子,我们将让它每秒运行一次。

运行:

crontab -e
并粘贴行:

* * * * * ./redis-watch.sh

应该是这样。

测试于

Cent OS 8


1
投票
#!/bin/bash
a=$(redis-cli -p 6379 PING)
if ["$a" != "PONG" ]
    b=$(systemctl start redis)
    echo $b
fi

0
投票

奔跑

$ redis-cli

> config set stop-writes-on-bgsave-error no
> exit
© www.soinside.com 2019 - 2024. All rights reserved.