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 文档许可。