Redis 从 3.0.7 升级到 5
Posted
技术标签:
【中文标题】Redis 从 3.0.7 升级到 5【英文标题】:Redis Upgrade from 3.0.7 to 5 【发布时间】:2019-04-28 11:53:27 【问题描述】:我有大量运行 3.0.7 的 Sentinel 和 Cluster 服务器,需要升级到 5。我无法承受停机时间。有人可以建议我怎么做吗? 一些数据库太大以至于服务器无法分配新的/第二个实例,以防万一这里的最佳解决方案是在同一台服务器上午餐一个新的 Redis 5 并将其设置为 3.0.7 的从属。
1) 我可以直接从 3.2 跳到 5 还是需要先跳到 4?
2) 从here 读取,从 3.3 升级到 4 时需要大规模重启。有什么方法可以避免停机?如何重建原始集群数据?备份还原?
欢迎任何建议。
【问题讨论】:
您有没有成功升级而不停机? 我们做到了,我会写一篇同样的博文(如果您期待这篇博文,请继续关注,谢谢!) 【参考方案1】:您可以更改 redis 5.0 集群总线协议以使其与 3.0.7 兼容。
Redis 5.0的集群总线协议为1,而redis 3.0.7的集群总线协议为0。
您必须注意以下2个差异:
-
集群总线协议 1 支持模块消息,而协议 0 不支持。
集群总线协议 1 的 ping 消息有一个额外的“cport”字段。
【讨论】:
是否可以通过配置选项更改协议版本?我看到只有通过大量代码更改才有可能github.com/antirez/redis/blob/5.0/src/cluster.c#L1650以上是关于Redis 从 3.0.7 升级到 5的主要内容,如果未能解决你的问题,请参考以下文章
OAuth + Security - 5 - Token存储升级(数据库Redis)
OAuth + Security - 5 - Token存储升级(数据库Redis)