Redis 升级
不停机升级或重启 Redis 实例
Redis 被设计为长期运行的服务进程。您可以使用 CONFIG SET 命令在不重启的情况下修改许多配置选项,也可以在不重启的情况下从 AOF 切换到 RDB 快照持久化,或反之。更多信息可查看 CONFIG GET * 命令的输出。
有时仍需要重启,例如:将 Redis 进程升级到新版本,或者需要修改一个当前 CONFIG 命令不支持的配置参数。
请按照以下步骤避免停机:
- 将新的 Redis 实例设置为当前 Redis 实例的副本。为此,您需要一台不同的服务器,或者一台内存足够同时运行两个 Redis 实例的服务器。
- 如果使用单台服务器,请确保副本在与主实例不同的端口上启动,否则副本无法启动。
- 等待复制初始同步完成,并检查副本的日志文件。
- 使用
INFO命令,确保主节点和副本具有相同数量的键;用redis-cli检查副本是否按预期工作并正确响应命令。 - 使用
CONFIG SET slave-read-only no命令允许向副本写入。 - 配置所有客户端使用新的实例(副本)。在切换期间,您可能希望使用
CLIENT PAUSE命令,确保没有客户端能写入旧的主节点。 - 确认主节点不再接收任何查询后(可用
MONITOR命令检查),使用REPLICAOF NO ONE命令将副本提升为主节点,然后关闭旧的主节点。
如果您使用 Redis Sentinel 或 Redis Cluster,升级到新版本最简单的方法是逐个升级副本。然后执行手动故障转移,将其中一个已升级的副本提升为主节点,最后再升级最后一个副本。
参考文档:Redis 升级