正文
redis集群部署及常用的操作命令(下)
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
搭建好集群之后,为了扩容需要再加入一个节点。那就再复制一个7006,改为相应的redis.conf(复制了改个port就好,如果复制的redis之前属于集群,需要把关联的node.conf之类的去掉)
[root@localhost ]# vim redis.conf
[root@localhost ]# src/redis-server redis.conf
[root@localhost ]# ps -ef | grep redis
root : pts/ :: src/redis-server *:
root : ? :: src/redis-server *: [cluster]
root : ? :: src/redis-server *: [cluster]
root : ? :: src/redis-server *: [cluster]
root : ? :: src/redis-server *: [cluster]
root : ? :: src/redis-server *: [cluster]
root : ? :: src/redis-server *: [cluster]
root : ? :: src/redis-server *: [cluster]
(1)添加节点
很简单的一句命令: 前面是地址是新加入的一台redis,后面是属于之前集群的任意一台。
[root@localhost ]# src/redis-trib.rb add-node 127.0.0.1: 127.0.0.1:
>>> Adding node 127.0.0.1: to cluster 127.0.0.1:
Connecting to node 127.0.0.1:: OK
Connecting to node 127.0.0.1:: OK
Connecting to node 127.0.0.1:: OK
Connecting to node 127.0.0.1:: OK
Connecting to node 127.0.0.1:: OK
Connecting to node 127.0.0.1:: OK
>>> Performing Cluster Check (using node 127.0.0.1:)
M: 0bbc46d087d7256fb7b71ca35871446e29926afa 127.0.0.1:
slots:- ( slots) master
additional replica(s)
S: ec376f305428afde24aa363919a863f01908c140 127.0.0.1:
slots: ( slots) slave
replicates 0bbc46d087d7256fb7b71ca35871446e29926afa
M: 0b521aa8664b2e51475470230f3a975bdd4d1909 127.0.0.1:
slots:- ( slots) master
additional replica(s)
S: d1a7c6485909a119a1c276f3972b8ae3f93e52d7 127.0.0.1:
slots: ( slots) slave
replicates 0b521aa8664b2e51475470230f3a975bdd4d1909
M: 9b7b98c4bf2517e4f172a895b5728d13bef62952 127.0.0.1:
slots:- ( slots) master
additional replica(s)
S: ee95130f0aed20c62881df8070d7690c4608a7cc 127.0.0.1:
slots: ( slots) slave
replicates 9b7b98c4bf2517e4f172a895b5728d13bef62952
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All slots covered.
Connecting to node 127.0.0.1:: OK
>>> Send CLUSTER MEET to node 127.0.0.1: to make it join the cluster.
[OK] New node added correctly.
可以任意进入一台机器来查看是否添加了新的节点,会发现刚刚添加的节点并没有托管任何的哈希槽,原因是里面还木有数据了。增加从节点只需要加上--slave参数
[root@localhost ]# src/redis-cli -c -p
127.0.0.1:> cluster nodes
0bbc46d087d7256fb7b71ca35871446e29926afa 127.0.0.1: myself,master - connected -
32cc36d5deead5d8eb3208120d6f38358c9b6a55 127.0.0.1: master - connected
ec376f305428afde24aa363919a863f01908c140 127.0.0.1: slave 0bbc46d087d7256fb7b71ca35871446e29926afa connected
0b521aa8664b2e51475470230f3a975bdd4d1909 127.0.0.1: master - connected -
d1a7c6485909a119a1c276f3972b8ae3f93e52d7 127.0.0.1: slave 0b521aa8664b2e51475470230f3a975bdd4d1909 connected
9b7b98c4bf2517e4f172a895b5728d13bef62952 127.0.0.1: master - connected -
ee95130f0aed20c62881df8070d7690c4608a7cc 127.0.0.1: slave 9b7b98c4bf2517e4f172a895b5728d13bef62952 connected
(2)删除节点
删除节点之前首先要保证节点中没有数据,如果有数据需要分片,把数据转移走。后面跟着的id用cluster nodes 就能查看到对应的啦~
删除有数据的我还需要研究研究。。。因为一些很拙计的原因~~, ./redis-trib.rb reshard 127.0.0.1: 这句是转移时讲数据分配到那些哈希槽下的命令。
[root@localhost ]# src/redis-trib.rb del-node 127.0.0.1: 'c8ed852a52863e941a6e63037e018eb2952b776a'
>>> Removing node c8ed852a52863e941a6e63037e018eb2952b776a from cluster 127.0.0.1:
Connecting to node 127.0.0.1:: OK
Connecting to node 127.0.0.1:: OK
Connecting to node 127.0.0.1:: OK
Connecting to node 127.0.0.1:: OK
Connecting to node 127.0.0.1:: OK
Connecting to node 127.0.0.1:: OK
Connecting to node 127.0.0.1:: OK
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
好的,假装他删的很顺利~~
还有需要补充的之后继续补充......