首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Redis 3.0.5 集群的命令、使用、维护(6)

Redis 3.0.5 集群的命令、使用、维护(6)

cluster addslots将一个或多个槽(slot)指派(assign)给当前节点。
用法是:
cluster addslots slots1 slotes2 slots3
那,我就用这个命令将上面删掉的3个槽点再加到7003上看看:127.0.0.1:7003> cluster addslots 16381 16382 16383OK127.0.0.1:7003>

OK了,看下是不是真的成功了:
127.0.0.1:7003> cluster nodes35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 myself,master - 0 0 4 connected 12288-16383

确实回来了,再看下集群状态,启动了没?
127.0.0.1:7003> cluster infocluster_statek

数据读取也正常了:
127.0.0.1:7003> get name-> Redirected to slot [5798] located at 192.168.33.13:7001"123"192.168.33.13:7001>

cluster flushslots移除当前节点的所有槽点,让当前节点变成一个没有指派任何槽的节点。
我们还是拿7003来开刀吧。谁叫它在最后呢哈哈哈哈哈哈😄
[root@web3 ~]# redis-cli -p 7003 -c127.0.0.1:7003> cluster flushslotsOK

ok了,理论上7003上的槽点应该都被移除了,它被悬空了,那么集群也应该失效了吧。看看:
127.0.0.1:7003> cluster infocluster_state:failcluster_slots_assigned:12288cluster_slots_ok:12288

果然,移除了7003的所有4006个槽点,而且集群也失败了。用redis-trib看看。
[url=][/url]
[root@web3 ~]# redis-trib.rb check 192.168.33.13:7000M: 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003slots: (0 slots) master2 additional replica(s)[ERR] Nodes don't agree about configuration!>>> Check for open slots...>>> Check slots coverage...[ERR] Not all 16384 slots are covered by nodes.[url=][/url]


可怜的7003上,已经没有任何slot了。
cluster setslot <\slot> node <\node_id>将slot 指派给 node_id指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派。
刚才7003的全部slot已经空出来了,那用这个命令试一下转移。
开始搞,把12288-16384 这中间的几个节点移动到7002上去。

127.0.0.1:7003> cluster setslot 16383 node 6f5cd78ee644c1df9756fc11b3595403f51216ccOK127.0.0.1:7003> cluster setslot 16382 node 6f5cd78ee644c1df9756fc11b3595403f51216ccOK
妈的,这个命令只能一个一个的移动,太变态了!!!
那看看。刚才移动的几个好了没?
127.0.0.1:7003> cluster nodes6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002 master - 0 1448611602575 3 connected 8192-12287 16382-16383

果然,这2个slot被移动过来了。那,再移动下,把 16382 丢给 7000看看:

127.0.0.1:7003> cluster setslot 16382 node 3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3daOK
看看好了没?
127.0.0.1:7003> cluster nodes3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 192.168.33.13:7000 master - 0 1448611827539 1 connected 0-4095 16382

嗯,已经移动过来了。

cluster setslot <\slot> migrating <\destination-node-id>将本节点的槽 slot 迁移到 node_id 指定的节点中
试一下 16382 ,把她给移会去。可怜。。。
[root@web3 7000]# redis-cli -p 7002 -c127.0.0.1:7002> cluster setslot 16383 migrating 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce(error) ERR I'm not the owner of hash slot 16383

居然出错了!!!为啥啊。说 16383 不是 7002的槽点,无法移动。我了个叉,怎么会不是呢?
我看下:
6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002 myself,master - 0 0 3 connected 8192-1228735bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 master - 0 1448619265700 4 connected 12288-16383

我了个擦的。确实不是啊。我明明已经把7003的槽点全部置空了啊,为什么这里还有啊。日了狗啊。
进 7003看看呢?
[root@web3 7000]# redis-cli -p 7003 -c

看看:
127.0.0.1:7003> cluster nodes35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 myself,master - 0 0 4 connected6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002 master - 0 1448619384580 3 connected 8192-12287 16383

哔了狗了,居然2边的信息不一样!!!我擦。这尼玛。
我退出去check看看。
[root@web3 7000]# redis-trib.rb check 192.168.33.13:7000

看看结果:
[url=][/url]
M: 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003slots: (0 slots) master2 additional replica(s)M: 6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002slots:8192-12287 (4096 slots) master1 additional replica(s)[url=][/url]


我日了,16383 和 16382 用上面的setslot <slot> node <node_id>根本没移动过去,这尼玛。无语了。。。不管了吧。继续下面的命令学习吧。
返回列表