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)

Spring批量管理升级

Redis集群性能问题深度分析

在 Windows 上将 redis 从 v2 升级到 v4 导致 Rails 连接错误

redis学习1--初识redis,redis的安装,启动。。。