*Redis CLUSTER MIGRATION 命令
CLUSTER MIGRATION 用于查看和管理当前节点上正在进行的槽位迁移任务的状态信息。
*语法
CLUSTER MIGRATION
*参数说明
无参数。
*返回值
- Array:包含当前节点所有正在进行的迁移任务信息
- 每个迁移任务为一个数组,包含:
- 槽位编号(Integer)
- 迁移方向(String:
migrating或importing) - 目标/源节点 ID(String)
- 迁移进度(Integer:已迁移的 key 数量)
- 总 key 数量(Integer)
- Empty Array:没有正在进行的迁移任务
*时间复杂度
O(N),N 为正在进行的迁移任务数量。
*示例
*查看当前迁移任务
> CLUSTER MIGRATION
1) 1) (integer) 5798
2) "migrating"
3) "67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1"
4) (integer) 150
5) (integer) 500
2) 1) (integer) 6000
2) "importing"
3) "07c37dfeb235213a872192d90877d0cd55635b91"
4) (integer) 80
5) (integer) 200
*无迁移任务时
> CLUSTER MIGRATION
(empty array)
*配合 MIGRATE 命令使用
# 开始迁移槽位 5798 到目标节点
> CLUSTER SETSLOT 5798 MIGRATING 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1
OK
# 查看迁移进度
> CLUSTER MIGRATION
1) 1) (integer) 5798
2) "migrating"
3) "67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1"
4) (integer) 0
5) (integer) 1000
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR This instance has cluster support disabled | 未启用集群模式 | 开启 cluster-enabled yes |
| ERR CLUSTER MIGRATION not supported in this version | Redis 版本不支持 | 升级到 Redis 7.2+ |
*最佳实践
- 在槽位迁移过程中定期查询 CLUSTER MIGRATION 监控进度
- 迁移期间注意监控节点负载和网络带宽
- 大批量迁移建议分批次执行,每批完成后检查状态
- 结合 CLUSTER COUNTKEYSINSLOT 预估迁移时间和数据量
- 迁移完成后验证目标节点的 CLUSTER NODES 输出确认槽位归属
*FAQ
Q1: CLUSTER MIGRATION 和 CLUSTER SETSLOT 有什么关系?
A: CLUSTER SETSLOT ... MIGRATING/IMPORTING 设置迁移状态标记,MIGRATE 命令实际传输数据,CLUSTER MIGRATION 查看这些任务的进度。
Q2: 迁移任务卡住怎么办? A: 检查网络连通性、节点负载、大 key 情况。可以中断迁移后重新执行。
Q3: 多个槽位可以同时迁移吗? A: 可以,但建议一次只迁移一个槽位或少量槽位,避免对集群性能产生过大影响。
Q4: Redis 哪个版本开始支持 CLUSTER MIGRATION? A: Redis 7.2.0 新增此命令。