Redis 有主从配置。如果主服务器出现故障,从服务器将成为新的主服务器。我如何使用脚本重新启动以前的 Redis 主服务器(作为新主服务器的从服务器,或者如果它再次成为主服务器也可以)。我不知道不想手动完成。
这可以使用一个小脚本来完成。创建一个观察程序脚本,在端口 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 中为每个人安排此脚本一分钟。
在 Redis 死机并保持死机导致灾难性服务器故障后,我必须自学:
编辑
/etc/systemd/system/multi-user.target.wants/redis.service
并将其添加到底部的 [Service]
部分:
Restart=always
RestartSec=10s
运行
sudo systemctl daemon-reload
运行
sudo systemctl restart redis
现在每次崩溃都会在 10 秒后重新启动。
这对于 Redis 来说通常“足够好”。
根据上面的答案,我添加了更多描述以使其更容易理解。
第一步:在根文件夹或您选择的文件夹上创建脚本 使用命令:
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
#!/bin/bash
a=$(redis-cli -p 6379 PING)
if ["$a" != "PONG" ]
b=$(systemctl start redis)
echo $b
fi
奔跑
$ redis-cli
> config set stop-writes-on-bgsave-error no
> exit