CLUSTER SETSLOT operation args..

Available since 2.0.0.

数据搬迁相关的命令,详细的实现细节请参考搬迁命令说明

CLUSTER SETSLOT IMPORTING nodeID slotlist

命令说明

目标节点执行,向源节点nodeID搬迁若干slotlist到目标节点

执行该命令的前置条件:

  • 确保开启cluster模式,并且不是clusterSingleNode模式,同时集群状态是OK
  • 源节点,目标节点都不是slave节点,并且都不是arbiter节点。
  • nodeID是一个合法master节点
  • slotlist必须全部归属于源节点nodeID

命令返回

Simple string reply: 用于唯一标识一个搬迁任务的字符串taskid, 这个taskid 表示一个搬迁任务的父任务id

Examples

  1. 127.0.0.1:12345> cluster setslot importing $uuid_2 {6001..8000} {9000..10000}
  2. "58bc041e06d52913e416fb5579fcb872ee003b53-0"

CLUSTER SETSLOT RESTART nodeID slotlist

命令说明

类似CLUSTER SETSLOT importing,在目标节点执行,但并不会严格检查slotlist的归属。

一般用于CLUSTER SETSLOT importing执行部分失败后,需要重试整个搬迁任务。

命令返回

Simple string reply: 用于唯一标识一个搬迁任务的字符串taskid

Examples

  1. 127.0.0.1:12345> cluster setslot importing $uuid_2 {6001..8000} {9000..10000}
  2. "58bc041e06d52913e416fb5579fcb872ee003b53-0"
  3. # some errors fail, we want to retry the task
  4. 127.0.0.1:12345> cluster setslot restart $uuid_2 {6001..8000} {9000..10000}
  5. "58bc041e06d52913e416fb5579fcb872ee003b53-1"

CLUSTER SETSLOT info

命令说明

可在源节点目标节点执行,查看搬迁的总体状态信息,显示正在搬迁,已成功或失败的slot信息。

命令返回

Simple string reply

在接收方执行后会返回下面字段:

  1. 1) "importing taskid:" 该节点正在进行的父taskid,以及开始时间展示
  2. 2) "importing slots: " 该节点正在接收的slot列表(运行中)
  3. 3) "success import slots: " 该节点已经完成接收的slot列表(已结束)
  4. 4) "fail import slots: " 该节点接收失败的slot列表(已结束)
  5. 5) "running receiver task num:" 改节点正在运行的task数目
  6. 6) "success receiver task num:" 改节点成功完成的task数目
  7. 7) "fail receiver task num:0" 改节点最终失败的task数目

在发送方执行后会返回下面字段:

  1. 1) "migrating taskid:" 该节点正在进行的父taskid,以及开始时间展示
  2. 2) "migrating slots: " 该节点正在发送的slot列表(运行中)
  3. 3) "success migrate slots:" 该节点已经完成发送的slot列表(已结束)
  4. 4) "fail migrate slots: " 该节点发送失败的slot列表(已结束)
  5. 5) "running sender task num:" 改节点正在运行的task数目
  6. 6) "success sender task num:200" 改节点成功完成的task数目
  7. 7) "fail sender task num:0"改节点最终失败的task数目

Examples

  1. redis-cli -p 51002 cluster setslot info
  2. 1) "importing taskid:f4dc03dbfdb067b649070d086b9f436bb4483de0-0 [Wed Dec 9 21:26:47 2020 migrateTime:2s] "
  3. 2) "importing slots: 6002-6004 6007-6009 6012-6014 6017-6019 6022-6024 6027-6029 6032-6034 6037-6039 6042-6044 6047-6049 6052-6054 6057-6059 6062-6064 6067-6069 6072-6074 6077-6079 6082-6084 6087-6089 6092-6094 6097-6099 6102-6104 6108-6109 6112-6114 6118-6119 6122-6124 6128-6129 6132-6134 6138-6139 6142-6144 6148-6149 6152-6154 6158-6159 6162-6164 6168-6169 6172-6174 6178-6179 6182-6184 6188-6189 6192-6194 6198-6199 6203-6204 6208-6209 6213-6214 6218-6219 "
  4. 3) "success import slots: 6001 6005-6006 6010-6011 6015-6016 6020-6021 6025-6026 6030-6031 6035-6036 6040-6041 6045-6046 6050-6051 6055-6056 6060-6061 6065-6066 6070-6071 6075-6076 6080-6081 6085-6086 6090-6091 6095-6096 6100-6101 6105-6107 6110-6111 6115-6117 6120-6121 6125-6127 6130-6131 6135-6137 6140-6141 6145-6147 6150-6151 6155-6157 6160-6161 6165-6167 6170-6171 6175-6177 6180-6181 6185-6187 6190-6191 6195-6197 6200-6202 6205-6207 6210-6212 6215-6217 6220 "
  5. 4) "fail import slots: "
  6. 5) "running receiver task num:15"
  7. 6) "success receiver task num:15"
  8. 7) "fail receiver task num:0"

CLUSTER SETSLOT TASKINFO state taskid

命令说明

可在源节点目标节点执行,得到任务视角的搬迁状态信息。在源节点执行可以获得更多信息。其中,taskid是可选,如果指定,只显示taskid的信息。否则,显示所有信息。

state参数默认的值为running, 可以输入下面几种字符串:

  1. "running": 展示正在运行的task的信息
  2. "waiting": 展示正在等待调度的task信息
  3. "succ": 展示已经完成搬迁的task信息
  4. "fail": 展示搬迁失败的task信息
  5. "all": 展示包括正在运行和等待调度两种状态的task信息

命令返回

Simple string reply

展示的字段说明如下:

PTASK ID: 搬迁命令的父任务id, 每个CLUSTER SETSLOT IMPORTING 命令都会产生一个父任务

taskid: 搬迁子任务的id

beginTime: 搬迁任务启动的时间

runTime: 搬迁任务持续的时间

snapShotTime: 发送/接受快照数据持续的时间

benlogTime: 发送/接受binlog持续的时间

lockTime: 发送方上锁的时间,这段时间会阻塞客户端往搬迁slot里写数据

binlogDelay: binlog生成的时间戳和当前时间的差距

State: 子任务搬迁的状态 waiting/succ/running/fail

RunningState: 子任务在运行时的搬迁状态,具体有如下几种状态

(1) “SNAPSHOT SENDING”: 正在发送快照数据过程中

(2) “SNAPSHOT RECEIVING”: 正在接收快照数据过程中

(3) “BINLOG SENDING”: 正在发送binlog过程中

(4) “BINLOG RECEVING”: 正在接收binlog过程中

(5) “BINLOGDONE”: binlog 加锁前的binglog发送完成

(6) “LASTBINGLOG DONE”: binlog全部完成

(7) “GOSSIP DATA CHANGED:” 发送方搬迁完成,cluster元数据也修改完成

slot: 表示该子任务正在负责搬迁的slot列表

Examples

  1. redis-cli -p 51006 cluster setslot taskinfo succ
  2. 1) 1) "PTASK ID:30da13330530704e60915e12eb6edbbd0b22d328-1"
  3. 2) 1) "PTASK ID:30da13330530704e60915e12eb6edbbd0b22d328-0"
  4. 2) 1) "taskid:30da13330530704e60915e12eb6edbbd0b22d328-0-0"
  5. 2) "beginTime: 20-12-09 20:49:3"
  6. 3) "runTime: 1445ms "
  7. 4) "snapShotTime: 1415ms "
  8. 5) "binlogTime: 8ms "
  9. 6) "lockTime: 15ms "
  10. 7) "binlogDelay: 31ms "
  11. 8) "State:SUCC"
  12. 9) "RunningState: NONE"
  13. 10) "slots: 6010 6020 6030 6040 6050 6060 6070 6080 6090 6100 "
  14. 3) 1) "taskid:30da13330530704e60915e12eb6edbbd0b22d328-0-1"
  15. 2) "beginTime: 20-12-09 20:49:3"
  16. 3) "runTime: 1381ms "
  17. 4) "snapShotTime: 1345ms "
  18. 5) "binlogTime: 9ms "
  19. 6) "lockTime: 17ms "
  20. 7) "binlogDelay: 28ms "
  21. 8) "State:SUCC"
  22. 9) "RunningState: NONE"
  23. 10) "slots: 6110 6120 6130 6140 6150 6160 6170 6180 6190 6200 "

指定某个父taskid, 直接在 running/succ/waiting/fail 等参数后 后加上父taskid

  1. 127.0.0.1:51006> redis-cli -p 51006 cluster setslot taskinfo running 30da13330530704e60915e12eb6edbbd0b22d328-1
  2. 1) 1) "taskid:30da13330530704e60915e12eb6edbbd0b22d328-1-134"
  3. 2) "beginTime: 20-12-09 20:50:3"
  4. 3) "runTime: 632ms "
  5. 4) "snapShotTime: 632ms "
  6. 5) "binlogTime: 0ms "
  7. 6) "lockTime: -1ms "
  8. 7) "binlogDelay: -1ms "
  9. 8) "State:RUNNING"
  10. 9) "RunningState: SNAPSHOT SENDING:1685 time:632ms"
  11. 10) "slots: 8407 8417 8427 8437 8447 8457 8467 8477 8487 8497 "
  12. 2) 1) "taskid:30da13330530704e60915e12eb6edbbd0b22d328-1-135"
  13. 2) "beginTime: 20-12-09 20:50:3"
  14. 3) "runTime: 564ms "
  15. 4) "snapShotTime: 564ms "
  16. 5) "binlogTime: 0ms "
  17. 6) "lockTime: -1ms "
  18. 7) "binlogDelay: -1ms "
  19. 8) "State:RUNNING"
  20. 9) "RunningState: SNAPSHOT SENDING:1758 time:564ms"
  21. 10) "slots: 8507 8517 8527 8537 8547 8557 8567 8577 8587 8597 "

CLUSTER SETSLOT STOP taskid

命令说明

目标节点执行,终止指定taskid的任务,taskidCLUSTER SETSLOT importingCLUSTER SETSLOT restart的返回值。

命令返回

Simple string reply

CLUSTER SETSLOT cleanall

命令说明

目标节点执行,停止所有搬迁任务

命令返回

Simple string reply:OK 或 错误

CLUSTER SETSLOT stopall

命令说明

目标节点执行,类似于CLUSTER SETSLOT cleanall,停止所有搬迁任务。不同的是,通过CLUSTER SETSLOT stopall停止的任务,会保存起来,可通过CLUSTER SETSLOT restartall来重试。

例如,当前系统压力过大,暂停搬迁。当压力降下来,可以通过CLUSTER SETSLOT restartall继续这个搬迁动作。

命令返回

Simple string reply:OK 或 错误

CLUSTER SETSLOT restartall

命令说明

目标节点执行,与CLUSTER SETSLOT stopall配套使用,重启上次暂停的搬迁任务。

命令返回

Simple string reply:OK 或 错误