首页/数据/Redis 进阶速查/cluster-migration-barrier 副本迁移门槛

cluster-migration-barrier 副本迁移门槛

cluster-migration-barrier 控制主节点至少保留多少可用副本后,才允许把多余副本迁往无副本的主(默认 1),影响自动副本迁移的活跃度。

Redis 进阶速查数据更新于 2026-10-13

副本自动迁移的门槛

集群里若某个主节点没有任何健康副本,它的容错能力就是零;而有些主节点手上握着好几个副本。cluster-migration-barrier 规定一个主节点至少要保留几个健康副本,才允许把多余的副本让给那些「裸主」。默认值是 1,意思是让出副本之后源主至少还得剩一个健康副本。调大更保守,源主的容错水位更稳;调小则迁移更容易发生,源主在极端情况下可能被抽干副本。

基本信息

配置项cluster-migration-barrier
默认值1
语义源主保留 N 个健康副本才可捐出副本
相关开关cluster-allow-replica-migration
生效范围各节点本地配置,全集群应保持一致
查看方式redis-cli -c CONFIG GET
修改方式改配置文件并重启,或 CONFIG SET 临时生效

典型使用场景

  • 集群副本分布不均,想让副本自动流向无副本的主节点
  • 评估把自动迁移关掉改由人工编排副本时的参数取舍
  • 故障恢复后副本归属混乱,需要理解自动迁移的行为边界
  • 容量巡检时解释「某主节点副本数为什么自己变了」
  • 变更窗口内临时调小门槛加快副本再平衡,之后调回
  • 排查副本迁移与手工 CLUSTER SETSLOT 操作互相干扰的问题

查看与调整

查看与调整
redis-cli -c CONFIG GET cluster-migration-barrier      # 当前门槛
redis-cli -c CONFIG GET cluster-allow-replica-migration # 是否允许自动迁移
redis-cli -c CONFIG SET cluster-migration-barrier 2     # 临时生效,重启即失
redis-cli -c CLUSTER NODES | awk '{print $2,$3,$3}'     # 看各节点角色分布
redis-cli -c CLUSTER INFO | grep -E 'cluster_slots_ok'  # 槽位健康度
grep -n 'migration-barrier' /etc/redis/cluster.conf     # 确认配置文件中的值

取值影响对照

取值迁移倾向风险
0 附近最积极源主容错水位被过度消耗
1(默认)常规自动再平衡大多数部署的平衡点
大于 1保守,很少迁移裸主可能长期得不到副本
副本迁移是集群自动行为,与人工 CLUSTER SETSLOT 的槽位迁移不是一回事:前者挪的是副本归属,后者挪的是槽与数据。
各节点配置不一致时,行为取决于迁移发起方所在节点的取值,容易出现「改了一台没效果」或「只改一台反而生效」的现象。
CONFIG SET 在本版本上只改运行期参数,配置文件仍是重启后的依据,生产变更应改配置文件。

易错点

  • 设为 0 或极小值,副本迁移变得激进,源主容错能力被过度消耗
  • 只改单节点配置,全集群行为与预期不符且难以复现
  • 用 CONFIG SET 改完就认为生效,重启后回到配置文件里的旧值
  • 把副本迁移当成槽迁移去排查,方向错了浪费时间
  • 长期让裸主存在,一旦该主故障就触发不可用

数据来源与参考

  • Redis 官方文档:副本迁移配置
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌