如何以零停机时间升级到更新版本的 Redis?Redis 从属服务器是只读的,因此您似乎必须关闭主服务器,并且您的站点在等待它重新加载数据库时将处于只读状态 45 秒或更长时间。
有没有解决的办法?
如何以零停机时间升级到更新版本的 Redis?Redis 从属服务器是只读的,因此您似乎必须关闭主服务器,并且您的站点在等待它重新加载数据库时将处于只读状态 45 秒或更长时间。
有没有解决的办法?
Redis 团队对此有很好的文档
核心步骤:
完整文档:
使节点离线时,使用 SLAVEOF 命令将从节点提升为主节点,然后当您将其重新上线时,将其设置为从节点,它将从在线节点复制所有数据。
您可能还需要确保您的客户端可以适当地处理更改/丢失的主节点。
如果你想变得非常花哨,你可以设置你的客户端在检测到写入主服务器的错误时提升从服务器。
你可以使用 Redis Sentinel 来做这件事,sentinel 会自动将一个 slave 提升为新的 master。你可以在这里找到更多信息http://redis.io/topics/sentinel。
Sentinel 是一个用于管理 redis 服务器的系统,它持续监控 redis 的 master 和 slave,当一个 master 宕机时,它会自动将一个 slave 提升为 master。并且当旧的主人起来时,它将成为新主人的奴隶。
这里不会有停机时间或需要手动配置配置文件。您可以访问上面的链接以了解如何为您的 redis 服务器配置哨兵。
请注意,您可能必须检查并设置以下配置才能写入您的从站。(“由于 Redis 2.6 默认从属是只读的”)
redis-cli config set slave-read-only no
- 例子
-bash-4.1$ redis-cli info
Server
redis_version:2.6.9
-bash-4.1$ redis-cli slaveof admin2.mypersonalsite.com 6379
OK
-bash-4.1$ redis-cli set temp 42
(error) READONLY You can't write against a read only slave.
-bash-4.1$ redis-cli slaveof no one
OK
-bash-4.1$ redis-cli set temp 42
OK
-bash-4.1$ redis-cli get temp
"42"
-bash-4.1$ redis-cli config set slave-read-only no
OK
-bash-4.1$ redis-cli slaveof admin2.mypersonalsite.com 6379
OK
-bash-4.1$ redis-cli set temp 42
OK
-bash-4.1$ redis-cli get temp
"42"