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
127.0.0.1:12345> cluster setslot importing $uuid_2 {6001..8000} {9000..10000}
"58bc041e06d52913e416fb5579fcb872ee003b53-0"
CLUSTER SETSLOT RESTART nodeID slotlist
命令说明
类似CLUSTER SETSLOT importing
,在目标节点
执行,但并不会严格检查slotlist
的归属。
一般用于CLUSTER SETSLOT importing
执行部分失败后,需要重试整个搬迁任务。
命令返回
Simple string reply: 用于唯一标识一个搬迁任务的字符串taskid
Examples
127.0.0.1:12345> cluster setslot importing $uuid_2 {6001..8000} {9000..10000}
"58bc041e06d52913e416fb5579fcb872ee003b53-0"
# some errors fail, we want to retry the task
127.0.0.1:12345> cluster setslot restart $uuid_2 {6001..8000} {9000..10000}
"58bc041e06d52913e416fb5579fcb872ee003b53-1"
CLUSTER SETSLOT info
命令说明
可在源节点
和目标节点
执行,查看搬迁的总体状态信息,显示正在搬迁,已成功或失败的slot信息。
命令返回
在接收方执行后会返回下面字段:
1) "importing taskid:" 该节点正在进行的父taskid,以及开始时间展示
2) "importing slots: " 该节点正在接收的slot列表(运行中)
3) "success import slots: " 该节点已经完成接收的slot列表(已结束)
4) "fail import slots: " 该节点接收失败的slot列表(已结束)
5) "running receiver task num:" 改节点正在运行的task数目
6) "success receiver task num:" 改节点成功完成的task数目
7) "fail receiver task num:0" 改节点最终失败的task数目
在发送方执行后会返回下面字段:
1) "migrating taskid:" 该节点正在进行的父taskid,以及开始时间展示
2) "migrating slots: " 该节点正在发送的slot列表(运行中)
3) "success migrate slots:" 该节点已经完成发送的slot列表(已结束)
4) "fail migrate slots: " 该节点发送失败的slot列表(已结束)
5) "running sender task num:" 改节点正在运行的task数目
6) "success sender task num:200" 改节点成功完成的task数目
7) "fail sender task num:0"改节点最终失败的task数目
Examples
redis-cli -p 51002 cluster setslot info
1) "importing taskid:f4dc03dbfdb067b649070d086b9f436bb4483de0-0 [Wed Dec 9 21:26:47 2020 migrateTime:2s] "
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 "
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 "
4) "fail import slots: "
5) "running receiver task num:15"
6) "success receiver task num:15"
7) "fail receiver task num:0"
CLUSTER SETSLOT TASKINFO state taskid
命令说明
可在源节点
和目标节点
执行,得到任务视角的搬迁状态信息。在源节点
执行可以获得更多信息。其中,taskid
是可选,如果指定,只显示taskid
的信息。否则,显示所有信息。
state参数默认的值为running, 可以输入下面几种字符串:
"running": 展示正在运行的task的信息
"waiting": 展示正在等待调度的task信息
"succ": 展示已经完成搬迁的task信息
"fail": 展示搬迁失败的task信息
"all": 展示包括正在运行和等待调度两种状态的task信息
命令返回
展示的字段说明如下:
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
redis-cli -p 51006 cluster setslot taskinfo succ
1) 1) "PTASK ID:30da13330530704e60915e12eb6edbbd0b22d328-1"
2) 1) "PTASK ID:30da13330530704e60915e12eb6edbbd0b22d328-0"
2) 1) "taskid:30da13330530704e60915e12eb6edbbd0b22d328-0-0"
2) "beginTime: 20-12-09 20:49:3"
3) "runTime: 1445ms "
4) "snapShotTime: 1415ms "
5) "binlogTime: 8ms "
6) "lockTime: 15ms "
7) "binlogDelay: 31ms "
8) "State:SUCC"
9) "RunningState: NONE"
10) "slots: 6010 6020 6030 6040 6050 6060 6070 6080 6090 6100 "
3) 1) "taskid:30da13330530704e60915e12eb6edbbd0b22d328-0-1"
2) "beginTime: 20-12-09 20:49:3"
3) "runTime: 1381ms "
4) "snapShotTime: 1345ms "
5) "binlogTime: 9ms "
6) "lockTime: 17ms "
7) "binlogDelay: 28ms "
8) "State:SUCC"
9) "RunningState: NONE"
10) "slots: 6110 6120 6130 6140 6150 6160 6170 6180 6190 6200 "
指定某个父taskid, 直接在 running/succ/waiting/fail 等参数后 后加上父taskid
127.0.0.1:51006> redis-cli -p 51006 cluster setslot taskinfo running 30da13330530704e60915e12eb6edbbd0b22d328-1
1) 1) "taskid:30da13330530704e60915e12eb6edbbd0b22d328-1-134"
2) "beginTime: 20-12-09 20:50:3"
3) "runTime: 632ms "
4) "snapShotTime: 632ms "
5) "binlogTime: 0ms "
6) "lockTime: -1ms "
7) "binlogDelay: -1ms "
8) "State:RUNNING"
9) "RunningState: SNAPSHOT SENDING:1685 time:632ms"
10) "slots: 8407 8417 8427 8437 8447 8457 8467 8477 8487 8497 "
2) 1) "taskid:30da13330530704e60915e12eb6edbbd0b22d328-1-135"
2) "beginTime: 20-12-09 20:50:3"
3) "runTime: 564ms "
4) "snapShotTime: 564ms "
5) "binlogTime: 0ms "
6) "lockTime: -1ms "
7) "binlogDelay: -1ms "
8) "State:RUNNING"
9) "RunningState: SNAPSHOT SENDING:1758 time:564ms"
10) "slots: 8507 8517 8527 8537 8547 8557 8567 8577 8587 8597 "
CLUSTER SETSLOT STOP taskid
命令说明
在目标节点
执行,终止指定taskid
的任务,taskid
是CLUSTER SETSLOT importing
或CLUSTER SETSLOT restart
的返回值。
命令返回
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 或 错误