首页/数据/数据库速查/实例迁移与 IP 变更(replica-announce-ip)
Redis 运维与场景124 条

实例迁移与 IP 变更(replica-announce-ip)

跨机迁移/换 IP:用 REPLICAOF 重新指向 + replica-announce-ip/port 让内网/容器/端口映射场景下的复制信息正确。

数据库速查数据更新于 2026-10-13

换机换 IP 时的复制信息

跨机迁移或更换 IP 时,除了用 REPLICAOF 指向新主库,还要处理从库对外上报的地址。容器、NAT 与端口映射环境下,从库实际监听的是内网地址,需要用 replica-announce-ip 与 replica-announce-port 告诉主库和哨兵自己的对外地址,否则监控与故障切换都会拿到不可达的地址。

基本信息

适用Redis 4.0 及以上(旧版本为 slave-announce-*)
replica-announce-ip向主库上报的对外 IP,供 INFO 与哨兵使用
replica-announce-port对外端口,适用于端口映射场景
典型环境Docker、Kubernetes、NAT 端口映射

迁移流程

迁移流程
# 新实例启动后指向原主库
REPLICAOF 10.0.0.10 6379
INFO replication | grep -E 'master_link_status|master_last_io_seconds_ago'   # up 且延迟接近 0 才算追平
# 容器或 NAT 场景配置对外地址(写进配置文件更稳)
CONFIG SET replica-announce-ip 203.0.113.5
CONFIG SET replica-announce-port 16379
INFO replication | grep -E 'slave_repl_offset|master_repl_offset'   # 对比偏移量确认追平
# 切换流量后升主或重指新主
REPLICAOF NO ONE

迁移检查项

检查项命令或配置目的
复制连通INFO replication 的 master_link_status确认已建立复制
追平程度对比 master_repl_offset 与 slave_repl_offset确认数据一致后再切流量
对外地址replica-announce-ip / port让主库与哨兵看到可达地址
配置对齐maxmemory、持久化、密码避免追平后一上流量就异常
读负载read-only 与只读账号确认新实例可承担读流量

典型使用场景

  • 纵向扩容换机:新实例追平后替换旧实例
  • 机房迁移:跨网段复制并切换读写入口
  • 容器化改造:Pod 重建导致 IP 变化时保持复制信息正确
  • 加从库分担读流量,同时把新节点纳入哨兵监控
  • 故障后重建从库并重新指向主库
迁移前把新实例的 maxmemory、淘汰策略、持久化与密码配置对齐,否则追平后流量一切入就会出现内存或认证类异常。
容器内不配置 announce 地址时,主库与哨兵记录的是容器网络 IP,故障切换会把流量打到不可达地址。

切换窗口的注意点

  • 迁移窗口内保持短暂只读或双写,避免切换期间两边数据分叉
  • 切换完成后确认旧主库不再接受写入,可改为只读或作为新主的从库
  • 客户端与代理的拓扑缓存要同步刷新,必要时重启连接池让配置生效

易错点

  • 容器环境不配 replica-announce-ip:主库与哨兵看到内网地址,切换与监控全部失真
  • 新实例配置未对齐就切流量:maxmemory 偏小会立即触发淘汰甚至写入失败
  • 偏移量未追平就切流量:切换瞬间丢数据,业务侧表现为数据回退
  • 用 REPLICAOF 临时改指向却不落到配置文件:实例重启后回到旧主库,复制关系混乱

数据来源与参考

  • Redis 官方文档: replica-announce-ip
  • Redis 官方文档: 复制

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌