Redis(三)集群

四、集群

###################################################

构建

Redis集群一般由多个节点组成。

一开始的时候,每个节点都是独立的,通过使用cluster meet命令来连接其他节点,构成了多个节点的集群,cluster meet命令格式:

cluster meet <redis_ip> <redis_port>


比如,
A节点127.0.0.1 6379
B节点127.0.0.1 6378
向A节点发送命令
cluster meet 127.0.0.1 6378

A节点通过执行meet命令与B节点进行握手,握手成功后,A节点会将B节点加入A节点所在的集群中。


Redis默认是不打开集群功能的,如果想构建集群,则需要打开Redis的集群功能,通过配置conf文件:
cluster-enabled yes


可以通过cluster nodes命令查看集群的节点情况

127.0.0.1:6379> cluster nodes
618464343dd90e7e5d353619b71163a8e4f5ea6c :6379 myself,master - 0 0 0 connected
以上是节点不是独立的情况,执行cluster meet命令,就可以将节点构建成集群。
127.0.0.1:6379> cluster meet 127.0.0.1 6378
OK
执行了cluster meet命令之后,在A,B节点的日志都打印出:
2743:M 30 Dec 07:54:18.102 # IP address for this node updated to 127.0.0.1
当然了,这是由于我们IP都是127.0.0.1所以看到一样的IP。
日志表示执行cluster meety命令之后,A,B节点握手成功后,各自将自己的ip和端口上传给对方的,


在A,B节点我们可以看到生成了节点的集群文件nodes.conf(也可以在redis.conf配置文件中配置集群文件名字,比如配置cluster-config-file nodes-6379.conf,则集群文件生成nodes-6379.conf),打开nodes.conf,

A(6379)节点内容:
618464343dd90e7e5d353619b71163a8e4f5ea6c 127.0.0.1:6379 myself,master - 0 0 0 connected
450c8b7b607d8a623fbd14a645209e80925e7d22 127.0.0.1:6378 master - 0 1483113258905 1 connected
vars currentEpoch 1 lastVoteEpoch 0
B(6378)节点内容:
618464343dd90e7e5d353619b71163a8e4f5ea6c 127.0.0.1:6379 master - 0 1483113258900 0 connected
450c8b7b607d8a623fbd14a645209e80925e7d22 127.0.0.1:6378 myself,master - 0 0 1 connected
vars currentEpoch 1 lastVoteEpoch 0
通过,A,B节点的集群文件,可以看到双方已经知道了对方的存在。
这里,我们通过cluster nodes就可以查看集群的节点列表
127.0.0.1:6379> cluster nodes
618464343dd90e7e5d353619b71163a8e4f5ea6c 127.0.0.1:6379 myself,master - 0 0 0 connected

450c8b7b607d8a623fbd14a645209e80925e7d22 127.0.0.1:6378 master - 0 1483114051144 1 connected


通过命令cluster info查看集群状态。
127.0.0.1:6379> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:2
cluster_size:0
cluster_current_epoch:1
cluster_my_epoch:0
cluster_stats_messages_sent:1625
cluster_stats_messages_received:1625

从上面看出,cluster_state:fail,说明集群还是下线状态,因为集群通过分片的方式来保存数据库的键值的,

Redis集群将整个数据库分为16384个槽(slot),只有16384个槽都有节点处理时,集群才会变为上线状态。

分槽

Redis有16384个槽,需要有一个分槽的过程,即将一个槽分派一个节点。
Redis集群将整个数据库分为16384个槽(slot),只有16384个槽都有节点处理时,集群才会变为上线状态。
Redis可以通过cluster addslots命令,将一个或者多个槽指派给某个节点负责处理
cluster addslots [slots0 slots1 ... slotsn]
比如我将0 1 ... 9999 前10000个槽指定给A节点处理
127.0.0.1:6379> cluster addslots 0 1 ... 9999
当然了,0 1 ... 9999只是我这里的省略写法,实际是需要一个一个槽列出来的。
A节点除了自己记录下槽记录之外,还会将自己负责的槽记录通过消息发送给集群的其他节点,
这样以来,集群的每个节点都知道每个槽是哪个节点负责处理。

待把剩下的6384个槽全部指派完节点处理后,集群则可以处于上线状态。

查看key的所属槽
使用cluster keyslot <key>命令可以查看键是属于哪个槽
比如:
127.0.0.1:6378> cluster keyslot mykey
(integer) 14687
也可以使用以下算法来计算键所属槽
CRC16(key) & 16383
其中
CRC16(key)用于计算key的CRC-16校验和;
& 16383用于计算出来介于0 - 16383之间的整数作为槽号

当节点发现key的所属槽不是由自己来负责处理时,会返回MOVED错误(单机模式下会返回)
比如键"mykey"的槽是在B节点处理的,当向A节点发送键"mykey"的命令时,会返回
MOVED 14687 127.0.0.1:6378
如果客户端以集群的模式连接节点时,在客户端接收到MOVED错误时,会将命令转向MOVED错误返回的正确节点。
单机模式
./redis-cli -h 127.0.0.1 -p 6379
>get mykey
(error) MOVED 14687 127.0.0.1:6378

集群模式
./redis-cli -c -h 127.0.0.1 -p 6379
其中,选项-c
-c                 Enable cluster mode (follow -ASK and -MOVED redirections).
开户了ASK和MOVED的转向功能
>get mykey
-> Redirected to slot[14687] located at 127.0.0.1:6378

集群和单机的数据库区别

//==================================
集群节点的Redis只能使用0号数据库;
而单机节点的Redis则没有这个限制。

集群的重新分片

//==================================
Redis的集群重新分片,可以将本来就某个节点(源节点)负责的槽位指派给另一个节点(目标节点)。
重新分片,可以在节点在线状态进行,而无需下线,并且在重新分片的过程中,源节点和目标节点都可以继续处理客户端的命令。

##重新分片是由Redis的集群管理软件redis-trib负责执行的,Redis提供了重新分片所需要的命令,而redis-trib则向源节点和目标节点
##发送命令来进行重新分片操作。
##redis官方提供redis-trib软件重新分片,读者可以额外去其他地方查看,网上比较多关于redis-trib的分片。

集群里的每个槽其实就是对应着一组key集合,那么对槽的重新分片,其实就是对一组key集合的重新迁移,从一个Redis节点上迁移到另一个Redis节点。
在每个集群节点上,cluster命令的子命令都只可以用来对槽位变化的操作:

   1.CLUSTER ADDSLOTS slot1 [slot2] ... [slotN]
   2.CLUSTER DELSLOTS slot1 [slot2] ... [slotN]
   3.CLUSTER SETSLOT <slot> NODE <node id>
   4.CLUSTER SETSLOT <slot> IMPORTING <node id>
   5.CLUSTER SETSLOT <slot> MIGRATING <node id>

对于以上命令,
第1,2条命令,只是简单地将slot1 [slot2] ... [slotN]指派给集群节点,或者从集群节点删除这些槽位。
第3条命令,用来给特定节点(<node id>指定了集群节点的id)指派某个槽位<slot>。
第4,5条命令的MIGRATING,IMPORTING,这两条命令是用来将一个槽位从一个节点迁移到另一个节点。
第4条命令IMPORTING,比如,客户端连上了T节点,发送CLUSTER SETSLOT <slot> IMPORTING <node_id> 命令,
则表示让T节点准备好从节点id为node_id的源节点导入属于槽<slot>的键值对
第5条命令MIGRATING,比如,客户端连上了S节点,发送CLUSTER SETSLOT <slot> MIGRATING <node_id> 命令,
则表示让S节点准备好将属于槽<slot>的键值对迁移到节点id为node_id的目标节点

重新分片过程
现假设:
源节点id:sourceNodeId
目标节点 host:targetHost, port: targetProt, id:targetNodeId
(每个集群节点都有个节点id)
现需要将源节点的槽位slot1迁移到目标节点。

当然了,目标节点必须是已经加入到集群中的前提下才能重新分片(CLUSTER MEET命令来将节点加入集群)。

第1步.向目标节点发送命令:CLUSTER SETSLOT slot1 IMPORTING sourceNodeId,
      表示让目标节点做好准备导入源节点槽位slot1的键值对数据,命令执行成功则返回:OK
第2步.向源节点发送命令:CLUSTER SETSLOT slot1 MIGRATING targetNodeId,
      表示让源节点做好准备将槽位slot1的键值对数据迁移到目标节点,命令执行成功则返回:OK
第3步.向源节点发送命令:CLUSTER GETKEYSINSLOT slot1 100,
      表示从源节点槽位slot1上的键值对的键名列表,命令执行返回至多100个键名,当然,你还可以根据实际情况返回200或者其他数量。
第4步.如果第3步返回的键名列表数量为0,即是命令执行结果返回结果空了,那么跳到第5步,
      否则,向源节点发送命令:MIGRATE targetHost targetPort key1 0 timeout

      命令表示将源节点的key1(key1是根据第3步执行结果得到的键名列表中的)迁移到目标节点的0号数据库(因为集群只会0号数据库)上,

      超时时间timeout(可以根据实际设置时间,比如10000,10秒),命令执行成功返回OK或者NOKEY,这样循环地将第3步的键名列表迁移完,再回到第3步。

第5步.向源节点发送命令:CLUSTER DELSLOTS slot1,命令返回OK,因为要源节点的槽位删除,这样才能给目标节点添加新槽位
第6步.先后向目标节点、源节点发送命令:CLUSTER SETSLOT slot1 NODE targetNodeId,命令返回OK


如果确认源节点没有了任何一个槽位,而且想从集群中删除源节点,可以向其他任一节点发送命令CLUSTER FORGET sourceNodeId

此外
===================================================================================
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。  
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。  

CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。


redis-trib创建redis集群

====================================
修改实例的配置
#redis后台运行
daemonize yes

#3.2.0版本才增加配置项protected-mode
#protected-mode no

#开启集群
cluster-enabled yes

#时间单位:毫秒,检查实例超时时间10秒,默认是15秒
cluster-node-timeout 10000

先启动6个实例
[root@localhost 7005]# ps -ef | grep redis
root      4915     1  0 21:43 ?        00:00:00 /home/redis-3.0.7-6379/src/redis-server *:7002 [cluster]
root      4924     1  0 21:43 ?        00:00:00 /home/redis-3.0.7-6379/src/redis-server *:7001 [cluster]
root      4933     1  0 21:44 ?        00:00:00 /home/redis-3.0.7-6379/src/redis-server *:7000 [cluster]
root      5033     1  0 21:55 ?        00:00:00 /home/redis-3.0.7-6379/src/redis-server *:7003 [cluster]
root      5047     1  0 21:56 ?        00:00:00 /home/redis-3.0.7-6379/src/redis-server *:7004 [cluster]
root      5062     1  0 21:58 ?        00:00:00 /home/redis-3.0.7-6379/src/redis-server *:7005 [cluster]

1.安装ruby

>yum -y install ruby ruby-devel rubygems rpm-build

2.安装redis接口

(用gem 这个命令安装redis接口,gem是ruby的一个工具包)

>gem install redis

3.创建集群

>./redis-trib.rb create --replicas 1 192.168.204.127:7000 192.168.204.127:7001 192.168.204.127:7002 192.168.204.127:7003 192.168.204.127:7004 192.168.204.127:7005
其中
--replicas 1,表示为每个master实例分配一个slave
执行命令后,打印出如下信息:
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.204.127:7000
192.168.204.127:7001
192.168.204.127:7002
Adding replica 192.168.204.127:7003 to 192.168.204.127:7000
Adding replica 192.168.204.127:7004 to 192.168.204.127:7001
Adding replica 192.168.204.127:7005 to 192.168.204.127:7002
M: e2fa27373959b3f3c33faa4c67884ae11089b997 192.168.204.127:7000
   slots:0-5460 (5461 slots) master
M: 2b8008607fd8d9b99fbab4248850f4eec1c56fed 192.168.204.127:7001
   slots:5461-10922 (5462 slots) master
M: 343d4313c6eec3966cb60a37d831254223a5adf4 192.168.204.127:7002
   slots:10923-16383 (5461 slots) master
S: 8288d015fb5f6d277fbc131b6bd569696e2eeaa3 192.168.204.127:7003
   replicates e2fa27373959b3f3c33faa4c67884ae11089b997
S: 5daa10e7967037c707cd642ec1c71f0f56d4f491 192.168.204.127:7004
   replicates 2b8008607fd8d9b99fbab4248850f4eec1c56fed
S: cceab98101f502e5141558c21ff44da338db1da1 192.168.204.127:7005
   replicates 343d4313c6eec3966cb60a37d831254223a5adf4
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 192.168.204.127:7000)
M: e2fa27373959b3f3c33faa4c67884ae11089b997 192.168.204.127:7000
   slots:0-5460 (5461 slots) master
M: 2b8008607fd8d9b99fbab4248850f4eec1c56fed 192.168.204.127:7001
   slots:5461-10922 (5462 slots) master
M: 343d4313c6eec3966cb60a37d831254223a5adf4 192.168.204.127:7002
   slots:10923-16383 (5461 slots) master
M: 8288d015fb5f6d277fbc131b6bd569696e2eeaa3 192.168.204.127:7003
   slots: (0 slots) master
   replicates e2fa27373959b3f3c33faa4c67884ae11089b997
M: 5daa10e7967037c707cd642ec1c71f0f56d4f491 192.168.204.127:7004
   slots: (0 slots) master
   replicates 2b8008607fd8d9b99fbab4248850f4eec1c56fed
M: cceab98101f502e5141558c21ff44da338db1da1 192.168.204.127:7005
   slots: (0 slots) master
   replicates 343d4313c6eec3966cb60a37d831254223a5adf4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
其中,
master节点:7000,7001,7002
slave节点:7003,7004,7005
而且16384个槽都分配完毕,则集群创建完成,集群已经是上线状态了,可以使用。
[root@localhost src]# ./redis-cli -p 7000
127.0.0.1:7000> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_sent:769
cluster_stats_messages_received:769
其中,
cluster_state:ok,说明集群OK
cluster_slots_assigned:16384,16384个槽都全部分配。
127.0.0.1:7000> cluster nodes
8288d015fb5f6d277fbc131b6bd569696e2eeaa3 192.168.204.127:7003 slave e2fa27373959b3f3c33faa4c67884ae11089b997 0 1486131360128 4 connected
2b8008607fd8d9b99fbab4248850f4eec1c56fed 192.168.204.127:7001 master - 0 1486131362140 2 connected 5461-10922
343d4313c6eec3966cb60a37d831254223a5adf4 192.168.204.127:7002 master - 0 1486131362140 3 connected 10923-16383
e2fa27373959b3f3c33faa4c67884ae11089b997 192.168.204.127:7000 myself,master - 0 0 1 connected 0-5460
5daa10e7967037c707cd642ec1c71f0f56d4f491 192.168.204.127:7004 slave 2b8008607fd8d9b99fbab4248850f4eec1c56fed 0 1486131361135 5 connected
cceab98101f502e5141558c21ff44da338db1da1 192.168.204.127:7005 slave 343d4313c6eec3966cb60a37d831254223a5adf4 0 1486131359123 6 connected
通过cluster nodes命令可以查看每个节点负责的槽值

测试集群
[root@localhost src]# ./redis-cli -p 7000 -c
127.0.0.1:7000> set mykey myvalue
-> Redirected to slot [14687] located at 192.168.204.127:7002
OK
自动计算key:mykey的槽值的所属节点,并转发过去。

4.新增master节点

先启动7006节后,执行以下命令
[root@localhost src]# ./redis-trib.rb add-node 192.168.204.127:7006 192.168.204.127:7000
其中,
7000是已经存在的节点(master或slave),7006是新增的master节点
执行命令后,打印出以下信息:
>>> Adding node 192.168.204.127:7006 to cluster 192.168.204.127:7000
>>> Performing Cluster Check (using node 192.168.204.127:7000)
M: e2fa27373959b3f3c33faa4c67884ae11089b997 192.168.204.127:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 8288d015fb5f6d277fbc131b6bd569696e2eeaa3 192.168.204.127:7003
   slots: (0 slots) slave
   replicates e2fa27373959b3f3c33faa4c67884ae11089b997
M: 2b8008607fd8d9b99fbab4248850f4eec1c56fed 192.168.204.127:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: 343d4313c6eec3966cb60a37d831254223a5adf4 192.168.204.127:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 5daa10e7967037c707cd642ec1c71f0f56d4f491 192.168.204.127:7004
   slots: (0 slots) slave
   replicates 2b8008607fd8d9b99fbab4248850f4eec1c56fed
S: cceab98101f502e5141558c21ff44da338db1da1 192.168.204.127:7005
   slots: (0 slots) slave
   replicates 343d4313c6eec3966cb60a37d831254223a5adf4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.204.127:7006 to make it join the cluster.
[OK] New node added correctly.

5.新增slave节点

先启动slave节点,后执行以下命令:
[root@localhost src]# ./redis-trib.rb add-node --slave --master-id 5132e3c834d7a2a9576fb18f59271983c8bbb4c5 192.168.204.127:7007 192.168.204.127:7006
其中,
--master-id 5132e3c834d7a2a9576fb18f59271983c8bbb4c5,指定master的节点id,集群的节点都会有个id
192.168.204.127:7007,指定新增的slave节点
192.168.204.127:7006,指定已存在的master节点
执行命令后,打印以下信息:
>>> Adding node 192.168.204.127:7007 to cluster 192.168.204.127:7006
>>> Performing Cluster Check (using node 192.168.204.127:7006)
M: 5132e3c834d7a2a9576fb18f59271983c8bbb4c5 192.168.204.127:7006
   slots: (0 slots) master
   0 additional replica(s)
S: 8288d015fb5f6d277fbc131b6bd569696e2eeaa3 192.168.204.127:7003
   slots: (0 slots) slave
   replicates e2fa27373959b3f3c33faa4c67884ae11089b997
M: 343d4313c6eec3966cb60a37d831254223a5adf4 192.168.204.127:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 2b8008607fd8d9b99fbab4248850f4eec1c56fed 192.168.204.127:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: cceab98101f502e5141558c21ff44da338db1da1 192.168.204.127:7005
   slots: (0 slots) slave
   replicates 343d4313c6eec3966cb60a37d831254223a5adf4
M: e2fa27373959b3f3c33faa4c67884ae11089b997 192.168.204.127:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 5daa10e7967037c707cd642ec1c71f0f56d4f491 192.168.204.127:7004
   slots: (0 slots) slave
   replicates 2b8008607fd8d9b99fbab4248850f4eec1c56fed
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.204.127:7007 to make it join the cluster.
Waiting for the cluster to join.
>>> Configure node as replica of 192.168.204.127:7006.
[OK] New node added correctly.


6.删除集群节点

只有节点没有被分配槽,才能从集群中删除节点
[root@localhost src]# ./redis-trib.rb del-node 192.168.204.127:7000 e4594c9aa403bf1ba490bd559e86ae26de264dcd
>>> Removing node e4594c9aa403bf1ba490bd559e86ae26de264dcd from cluster 192.168.204.127:7000
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
其中,
192.168.204.127:7000,从该节点获取集群的节点信息,以便从每个节点中删除节点e4594c9aa403bf1ba490bd559e86ae26de264dcd
4594c9aa403bf1ba490bd559e86ae26de264dcd,要删除节点的ID
如果删除节点是master,则master的slave会复制其他节点。
最后删除节点会被shutdown了,实例被关闭了。

7.在线迁移槽位(slot)

reshard命令可以在线把集群的一些slot从集群原来slot负责节点迁移到新的节点,利用reshard可以完成集群的在线横向扩容和缩容。
reshard命令参数选项:
reshard         host:port
                --from <arg>
                --to <arg>
                --slots <arg>
                --yes
                --timeout <arg>
                --pipeline <arg>
host:port:这个是必传参数,用来从一个节点获取整个集群信息,相当于获取集群信息的入口。
--from <arg>:需要从哪些源节点上迁移slot,可从多个源节点完成迁移,以逗号隔开,传递的是节点的node id,还可以直接传递--from all,

                          这样源节点就是集群的所有节点,不传递该参数的话,则会在迁移过程中提示用户输入。
--to <arg>:slot需要迁移的目的节点的node id,目的节点只能填写一个,不传递该参数的话,则会在迁移过程中提示用户输入。
--slots <arg>:需要迁移的slot数量,不传递该参数的话,则会在迁移过程中提示用户输入。
--yes:设置该参数,可以在打印执行reshard计划的时候,提示用户输入yes确认后再执行reshard。
--timeout <arg>:设置migrate命令的超时时间,单位毫秒。
--pipeline <arg>:定义cluster getkeysinslot命令一次取出的key数量,不传的话使用默认值为10。

迁移100个槽位

[root@localhost src]# ./redis-trib.rb reshard --from 343d4313c6eec3966cb60a37d831254223a5adf4 --to 5132e3c834d7a2a9576fb18f59271983c8bbb4c5 --slots 100 --pipeline 10 192.168.204.127:7000
注意:
参数host:port要放在命令的最后面

或者,只传参数host:port,会有提示一步一步执行。

./redis-trib.rb reshard 192.168.204.127:7000
>>> Performing Cluster Check (using node 192.168.204.127:7000)
M: e2fa27373959b3f3c33faa4c67884ae11089b997 192.168.204.127:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 8288d015fb5f6d277fbc131b6bd569696e2eeaa3 192.168.204.127:7003
   slots: (0 slots) slave
   replicates e2fa27373959b3f3c33faa4c67884ae11089b997
M: 2b8008607fd8d9b99fbab4248850f4eec1c56fed 192.168.204.127:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: 343d4313c6eec3966cb60a37d831254223a5adf4 192.168.204.127:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 5132e3c834d7a2a9576fb18f59271983c8bbb4c5 192.168.204.127:7006
   slots: (0 slots) master
   0 additional replica(s)
S: 5daa10e7967037c707cd642ec1c71f0f56d4f491 192.168.204.127:7004
   slots: (0 slots) slave
   replicates 2b8008607fd8d9b99fbab4248850f4eec1c56fed
S: cceab98101f502e5141558c21ff44da338db1da1 192.168.204.127:7005
   slots: (0 slots) slave
   replicates 343d4313c6eec3966cb60a37d831254223a5adf4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 100
What is the receiving node ID? 5132e3c834d7a2a9576fb18f59271983c8bbb4c5
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1:343d4313c6eec3966cb60a37d831254223a5adf4
Source node #2:done

Ready to move 100 slots.
  Source nodes:
    M: 343d4313c6eec3966cb60a37d831254223a5adf4 192.168.204.127:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
  Destination node:
    M: 5132e3c834d7a2a9576fb18f59271983c8bbb4c5 192.168.204.127:7006
   slots: (0 slots) master
   0 additional replica(s)
  Resharding plan:
    Moving slot 10923 from 343d4313c6eec3966cb60a37d831254223a5adf4
    ...
    Moving slot 11022 from 343d4313c6eec3966cb60a37d831254223a5adf4
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot 10923 from 192.168.204.127:7002 to 192.168.204.127:7006:
...
Moving slot 11022 from 192.168.204.127:7002 to 192.168.204.127:7006:

参考

使用redis-trib操作redis集群,
http://blog.csdn.net/huwei2003/article/details/50973967

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值