迁移第二步「引擎迁移」的落地步骤。Engula 与 Redis 7.2 平替、可互为主从,因此沿用与第一步相同的滚动切主机制;客户端代码无需改造,且回滚更干净。
主线以 单实例主从 讲清核心流程;Redis Cluster 的差异见文末补充章节。
maxmemory 与淘汰策略、持久化、鉴权、连接数 / 超时、TLS 等一致。BGSAVE 一次;记录延迟 / 内存基线,便于迁移后对比收益。关键动作(示例命令,按环境调整)
REPLICAOF <Redis主IP> <端口>(如需 masterauth);等初次同步完成。INFO replication 中 master_link_status:up、offset 对齐;抽样比对 Key + Value + TTL。CLIENT PAUSE WRITE <ms> 短暂停写。INFO replication 的 master_repl_offset。REPLICAOF NO ONE 提主。REPLICAOF <Engula主>,作为热备从跟随 Engula —— 因双向平替,Redis 可正常跟随 Engula,回滚时可无损切回。Cluster 可复用"逐 shard 加从、追平、手动 failover"的思路,但上线前建议单独演练,不要把单实例主从的结果直接外推到 Cluster。
核心流程相同,差异在于命令与切流:
CLUSTER MEET 加入后 CLUSTER REPLICATE <主节点ID>。CLUSTER FAILOVER,逐 shard 进行,切完验证 cluster_state:ok、role:master 再切下一个。CLUSTER FAILOVER 默认会让原主停写、发送 offset、等从追平后再完成,不必叠加裸 CLIENT PAUSE;默认不要用 FORCE / TAKEOVER。| 阶段 | 检查 | 判定 |
|---|---|---|
| 加从后 | 复制追平 | master_link_status:up、offset 对齐 |
| 切主前 | 抽样一致性、关键命令 | 抽样一致、关键用法符合预期 |
| 切主后 | 新主角色 | Engula role:master(Cluster:cluster_state:ok) |
| 观察期 | 延迟 / 错误 / 连接 / 内存 | 无劣化;内存较 Redis 有预期下降 |
Engula 与 Redis 双向互为主从,回滚比第一步更干净:
CLUSTER FAILOVER 回切)。回到 迁移总览 · 上一步 Redis 6.x → 7.2。