CLUSTER MIGRATION
启动、监控和取消槽位迁移。
语法
CLUSTER MIGRATION | STATUS >
引入版本:8.4.0
复杂度摘要:O(N)
CLUSTER MIGRATION 命令为 Redis Cluster 提供原子槽迁移功能。该命令允许您从其他节点导入槽、监控迁移任务的进度以及取消正在进行的迁移。
必需参数
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
详细说明
- 取消源节点上的任务不会自动停止目标节点上的迁移。
- 在
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 秒)。
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ❌ 标准 |
❌ 标准 |
返回值
RESP2
对于 IMPORT 子命令: 批量字符串回复:成功时的任务 ID,或失败时的错误消息。
对于 CANCEL 子命令: 整数回复:取消的任务数。
对于 STATUS 子命令: 数组回复:迁移任务详细信息列表。每个任务均表示为包含字段值对的数组: - id:任务标识符 - slots:正在导入或迁移的槽范围 - source:源节点 ID - dest:目标节点 ID - operation:操作类型(“导入”或“迁移”) - state:当前状态(“已完成”、“进行中”等) - last_error:最后一个错误消息(如果没有则为空) - retries:重试尝试次数 - create_time:任务创建时间戳 - start_time:任务开始时间戳 - end_time:任务完成时间戳(如果已完成) - write_pause_ms:写入暂停持续时间(以毫秒为单位)
RESP3
对于 IMPORT 子命令: 批量字符串回复:成功时的任务 ID,或失败时的错误消息。
对于 CANCEL 子命令: 整数回复:取消的任务数。
对于 STATUS 子命令: 数组回复:迁移任务详细信息列表。每个任务均表示为包含字段值对的数组: - id:任务标识符 - slots:正在迁移的槽范围 - source:源节点 ID - dest:目标节点 ID - operation:操作类型(通常为“迁移”) - state:当前状态(“已完成”、“进行中”等) - last_error:最后一个错误消息(如果没有则为空) - retries:重试尝试次数 - create_time:任务创建时间戳 - start_time:任务开始时间戳 - end_time:任务完成时间戳(如果已完成) - write_pause_ms:写入暂停持续时间(以毫秒为单位)
资料来源:Redis 官方 CLUSTER MIGRATION 文档;中文内容参考 Redis 文档许可。