*Redis cluster-migration 命令
*语法
CLUSTER MIGRATION | STATUS_<[ID_task-id] | [ALL]>>
CLUSTER MIGRATION 命令为 Redis 集群提供原子槽迁移功能。此命令允许您从其他节点导入槽,监控迁移任务的进度,以及取消正在进行的迁移。
*必需参数
subcommand
子命令指定要执行的操作:
IMPORT <start-slot> <end-slot> [<start-slot> <end-slot> ...]: 在目标主节点上执行。接受多个槽范围并触发指定范围的原子迁移。返回一个任务 ID,您可以用它来监控任务状态。CANCEL <ID <task-id> | ALL>: 通过其 ID 取消正在进行的迁移任务,或如果指定了ALL,则取消所有任务。注意:在源节点上取消任务不会停止目标节点上的迁移,目标节点将继续重试,直到它也被取消。STATUS [ID <task-id> | ALL]: 显示当前和已完成原子槽迁移任务的状态。如果提供了特定的任务 ID,它仅返回该任务的详细信息。如果指定了ALL,则返回所有进行中和已完成任务的状态。
*示例
将槽 0-1000 和 2000-3000 导入当前节点:
CLUSTER MIGRATION IMPORT 0 1000 2000 3000
检查所有迁移任务的状态:
CLUSTER MIGRATION STATUS ALL
检查特定迁移任务的状态:
CLUSTER MIGRATION STATUS ID 24cf41718b20f7f05901743dffc40bc9b15db339
取消特定迁移任务:
CLUSTER MIGRATION CANCEL ID 24cf41718b20f7f05901743dffc40bc9b15db339
取消所有迁移任务:
CLUSTER MIGRATION CANCEL ALL
*返回值说明
*注意事项
- 原子槽迁移功能从 Redis 8.4.0 开始可用。
- 在源节点上取消任务不会自动停止目标节点上的迁移。
- 在
CLUSTER MIGRATION STATUS输出中,"state" 字段将对成功的操作显示completed。 - "last_error" 字段为空的任务表示迁移过程中没有发生错误。
*迁移期间的键可见性
在原子槽迁移操作期间,导入或修剪正在进行时,以下命令可能会过滤掉未拥有槽中的键:
INFO KEYSPACE 命令将继续反映实际的键数量,包括正在导入的键。
*相关配置
cluster-slot-migration-handoff-max-lag-bytes: 槽快照完成后,如果剩余的复制流大小低于此阈值,源节点将暂停写入以移交槽所有权。较高的值会较早触发移交,但可能会导致较长的写入暂停。较低的值会导致较短的写入暂停,但在有稳定的传入写入时可能更难达到(默认值:1MB)。cluster-slot-migration-write-pause-timeout: 源节点在 ASM 移交期间暂停写入的最大持续时间。如果目标节点未能在此时限内接管槽,源节点将认为迁移失败并恢复写入(默认值:10 秒)。