Redis 7.2 → Engula 迁移

迁移第二步「引擎迁移」的落地步骤。Engula 与 Redis 7.2 平替、可互为主从,因此沿用与第一步相同的滚动切主机制;客户端代码无需改造,且回滚更干净。

主线以 单实例主从 讲清核心流程;Redis Cluster 的差异见文末补充章节。


适用与前提

  • 前提:源端已是 Redis 7.2(若仍在 6.x,请先完成 第一步)。
  • Engula 与 Redis 7.2 协议 / 命令 / 复制 / RDB 一致,可双向互为主从 —— 这是本步骤成立与可回滚的基础。

迁移前准备

  • 配置对齐:Engula 与源 Redis 的 maxmemory 与淘汰策略、持久化、鉴权、连接数 / 超时、TLS 等一致。
  • 兼容性抽验:虽为平替,仍建议用真实命令日志抽取高频 / 关键用法,在 Engula 从节点上抽验行为(返回值、TTL 语义、pipeline / 事务边界等)。
  • 备份与基线:源端 BGSAVE 一次;记录延迟 / 内存基线,便于迁移后对比收益。

迁移流程(主线:单实例主从)

① 加 Engula 从 Engula 作为 Redis 7.2 主的从,追平复制 ② 验证 复制追平 + 抽样一致性 + 关键命令行为 ③ (可选)压测/对比 用真实负载对比延迟 / 内存 ④ 切主到 Engula 停写 → 等 Engula 追平 offset → 提升 Engula 为主 → 客户端指向 Engula ⑤ 观察期 保留 Redis 节点作为 Engula 的从(时长由业务定),巡检 + 观察收益 ⑥ 收尾 下线 Redis 节点

关键动作(示例命令,按环境调整)

  • 加从:Engula REPLICAOF <Redis主IP> <端口>(如需 masterauth);等初次同步完成。
  • 追平判定:INFO replicationmaster_link_status:up、offset 对齐;抽样比对 Key + Value + TTL。
  • 切主(先建立一致点,再提主):
    1. 旧主(Redis 7.2)执行 CLIENT PAUSE WRITE <ms> 短暂停写。
    2. 记录旧主 INFO replicationmaster_repl_offset
    3. 等 Engula 从的复制 offset 追到该值。
    4. Engula 执行 REPLICAOF NO ONE 提主。
    5. 客户端指向 Engula。
  • 蓝绿保留:切主后让原 Redis 节点 REPLICAOF <Engula主>,作为热备从跟随 Engula —— 因双向平替,Redis 可正常跟随 Engula,回滚时可无损切回。

Redis Cluster 补充

Cluster 可复用"逐 shard 加从、追平、手动 failover"的思路,但上线前建议单独演练,不要把单实例主从的结果直接外推到 Cluster。

核心流程相同,差异在于命令与切流:

  • 加从:Engula 节点 CLUSTER MEET 加入后 CLUSTER REPLICATE <主节点ID>
  • 切主:目标 Engula 从上 CLUSTER FAILOVER逐 shard 进行,切完验证 cluster_state:okrole:master 再切下一个。CLUSTER FAILOVER 默认会让原主停写、发送 offset、等从追平后再完成,不必叠加裸 CLIENT PAUSE;默认不要用 FORCE / TAKEOVER
  • 切流:Cluster 客户端按拓扑自动跟随,无需手动重指向。
  • 蓝绿保留:保留的 Redis 节点作为对应 shard 的从跟随 Engula 主,便于回滚。
  • 下线顺序:先移除 Redis 从,最后移除 Redis 主。

验证检查点

阶段 检查 判定
加从后 复制追平 master_link_status:up、offset 对齐
切主前 抽样一致性、关键命令 抽样一致、关键用法符合预期
切主后 新主角色 Engula role:master(Cluster:cluster_state:ok
观察期 延迟 / 错误 / 连接 / 内存 无劣化;内存较 Redis 有预期下降

回滚

Engula 与 Redis 双向互为主从,回滚比第一步更干净:

  • 观察期内保留的 Redis 从一直跟随 Engula 主、数据实时同步。回滚即把该 Redis 节点重新提主、客户端切回(Cluster:CLUSTER FAILOVER 回切)。
  • 因数据实时跟随,回滚可做到基本无损;一致性敏感业务仍建议切主 / 回滚时短暂停写以获得确定的一致点。
  • 观察期内保留 Redis 节点、不要重建,以保证可回退。

迁移后:验证收益

  • 实时验证 —— 兼容性 / 性能 / RDB / 内存效率实测口径。

回到 迁移总览 · 上一步 Redis 6.x → 7.2