如何在零停机时间的情况下升级到新版本的Redis?Redis从属节点是只读的,因此似乎您必须关闭主节点,而您的站点将在等待它重新加载数据库时只能进行读取操作45秒或更长时间。
这个问题是否有解决方法?
如何在零停机时间的情况下升级到新版本的Redis?Redis从属节点是只读的,因此似乎您必须关闭主节点,而您的站点将在等待它重新加载数据库时只能进行读取操作45秒或更长时间。
这个问题是否有解决方法?
Redis团队在此方面有非常好的文档。
核心步骤:
完整文档:
在将节点下线时,使用SLAVEOF命令将从服务器升级为主服务器,然后将其上线时设置为从服务器,并将复制来自在线节点的所有数据。
您可能还需要确保客户端可以适当地处理更改/丢失的主节点。
如果您想变得非常高级,则可以设置客户端,在检测到写入主服务器时出错时将从服务器升级为主服务器。
请注意,您可能需要检查并设置以下配置才能写入从节点。("自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"