把节点设成主库的副本
在某个节点上执行 CLUSTER REPLICATE <主节点ID>,就把它变成该主节点的从库,节点随即开始同步并进入从节点角色。前提是这个节点是干净实例:不持有任何槽、也没有数据,否则命令会被拒绝。手工搭建三主三从的标准做法就是先给三个主节点分好槽,再对剩下三个空节点逐个执行这条命令。
基本信息
| 用法 | CLUSTER REPLICATE <主节点ID> |
|---|---|
| 前提条件 | 执行节点无槽、无数据,且已被集群认识 |
| 执行结果 | 节点角色变为从节点并开始同步 |
| 纠正方式 | 重新指向正确的主节点即可调整从属关系 |
| 核对方式 | 查看节点的角色标记与主节点字段 |
典型使用场景
- 手工搭建集群时为每个主节点配置对应的副本
- 替换故障副本后把新实例挂到原主节点下
- 演练中把某副本改挂到另一个主节点,验证拓扑调整流程
- 扩容新主节点后为它补充副本以消除光杆风险
- 排查副本挂错主节点的情况并纠正从属关系
配置示例
配置示例
# 三主三从:先给前三个空节点分配槽,再把后三个空节点设为副本
redis-cli -p 7003 CLUSTER REPLICATE <主节点7000的id>
redis-cli -p 7004 CLUSTER REPLICATE <主节点7001的id>
redis-cli -p 7005 CLUSTER REPLICATE <主节点7002的id>
redis-cli -p 7003 CLUSTER NODES | grep 7003 # 核对角色与所属主节点
redis-cli --cluster check 10.0.0.11:7000 # 整体核对主从配对前提与结果
| 项 | 要求或结果 | 不满足时 |
|---|---|---|
| 节点状态 | 无槽、无数据 | 命令被拒绝,需要先清理该节点 |
| 拓扑可见性 | 节点已加入集群 | 找不到目标主节点,命令失败 |
| 角色变化 | 由主变为从或由独立变从 | 角色未变化说明命令未生效 |
| 同步启动 | 开始从目标主节点同步数据 | 长时间未同步要查网络与日志 |
节点带有数据或槽时命令会被直接拒绝,配置前先确认它是干净实例,必要时清空数据目录再重新加入集群。
如果挂错了主节点,重新执行一次指向正确主节点的命令即可纠正,这个操作本身是幂等且可回退的。