如何在零停机时间内升级到较新版本的Redis? Redis奴隶是只读的,所以看起来你必须取下主人,当你等待它重新加载数据库时,你的网站只读45秒或更长时间。
有解决方法吗?
答案 0 :(得分:29)
Redis团队有关于此
的非常好的文档核心步骤:
完整文档:
答案 1 :(得分:22)
当使节点脱机时,使用SLAVEOF命令将从属设备提升为主设备,然后当您将其重新联机时,将其设置为从设备,它将从在线节点复制所有数据。
您可能还需要确保您的客户端能够正确处理更改/缺失的主节点。
如果你想变得非常花哨,你可以设置你的客户端,如果它检测到写入主服务器的错误,就提升它。
答案 2 :(得分:10)
您可以使用Redis Sentinel执行此操作,哨兵会自动将奴隶提升为新的主人。 你可以在http://redis.io/topics/sentinel找到更多信息。
Sentinel是一个用于管理redis服务器的系统,它可以持续监控redis主服务器和从服务器,每当主服务器关闭时,它会自动将从服务器提升为主服务器。当旧的主人是UP时,它将被作为新主人的奴隶。
此处不需要停机或手动配置配置文件。 您可以访问上面的链接,了解如何为您的redis服务器配置sentinel。
答案 3 :(得分:6)
注意,您可能必须检查并设置以下配置以写入您的从站。 (“因为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"