您的位置:首页 > 数据库 > Redis

redis集群管理

2016-09-14 10:03 260 查看
1.查看Redis集群状态:

[root@test1 6378]# redis-trib.rb check 127.0.0.1:6378

[root@test1 6378]# redis-trib.rb check 127.0.0.1:6378

>>> Performing Cluster Check (using node 127.0.0.1:6378)

M: 0f338b0b42d33bab3dc7bb28fce83610ec90501e 127.0.0.1:6378

slots:0-5460 (5461 slots) master

1 additional replica(s)

S: 973ef5ab79e5aee5894d1d396d07df7fef4a181d 192.168.56.92:6379

slots: (0 slots) slave

replicates 0f338b0b42d33bab3dc7bb28fce83610ec90501e

S: 9898fcd2957c810a66206414dc82953eb95cb967 192.168.56.93:6379

slots: (0 slots) slave

replicates 7069403f367e515043bfe5a2f968e9a85fc02fc4

M: 7069403f367e515043bfe5a2f968e9a85fc02fc4 192.168.56.93:6378

slots:10923-16383 (5461 slots) master

1 additional replica(s)

S: 690199aef0a3176cd80050909a79e8a40827298d 192.168.56.91:6379

slots: (0 slots) slave

replicates c42ec13effd255603e7a36a86be45ec517121e2c

M: c42ec13effd255603e7a36a86be45ec517121e2c 192.168.56.92:6378

slots:5461-10922 (5462 slots) master

1 additional replica(s)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.


2.重分配节点
使用reshard参数来重新分配节点的slot.
$ ./redis-trib.rb reshard 127.0.0.1:7000

其中要回答以下几个问题
...
How many slots do you want to move (from 1 to 16384)? 1000          --我们打算移动的slot的个数

...
What is the receiving node ID? 9991306f0e50640a5684f1958fd754b38fa034c9    --我们打算由哪个节点接受这些slot

...

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:all       --我们希望从哪个节点取出这些的slot.如果是all则是其它所有的节点.如果想指定那么输入指定的ID,每输入一个回车一次,结束后输入done.

并按下回车之后, redis-trib 将打印出哈希槽的移动计划, 如果你觉得没问题的话, 就可以输入 yes 并再次按下回车

3.添加节点
将节点添加到Redis集群,首先需要启动一个空的redis实例,然后使用下面语句添加.

./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000

上面的语句是添加的一个主节点.其中最后随便写一个当前集群中的一个连接即可.

如果要添加一个从节点有两种方法:

第一种:

同样使用上面的语句,先添加一个主节点.然后连接这个主节点,使用语句:

127.0.0.1:7000> cluster replicate 7069403f367e515043bfe5a2f968e9a85fc02fc4
OK
上面的语句的意思是将这个主节点转换成id为7069403f367e515043bfe5a2f968e9a85fc02fc4的从节点

第二种:

在添加节点的时候直接将节点添加为从节点,使用下面语句

./redis-trib.rb add-node --slave 127.0.0.1:7007 127.0.0.1:7000

./redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 127.0.0.1:7006 127.0.0.1:7000

如果不指定master-id那么随机选择一个master-id,如果指定master-id则指定为其从节点.

4.删除节点

只要使用 del-node 命令即可:
./redis-trib del-node 127.0.0.1:7000 `<node-id>`
第一个参数是任意一个节点的地址,第二个节点是你想要移除的节点地址。
使用同样的方法移除主节点,不过在移除主节点前,需要确保这个主节点是空的. 如果不是空的,需要将这个节点的数据重新分片到其他主节点上.
替代移除主节点的方法是手动执行故障恢复,被移除的主节点会作为一个从节点存在,不过这种情况下不会减少集群节点的数量,也需要重新分片数据.

5.从节点的迁移
在Redis集群中会存在改变一个从节点的主节点的情况,需要执行如下命令 :
CLUSTER REPLICATE <master-node-id>
在特定的场景下,不需要系统管理员的协助下,自动将一个从节点从当前的主节点切换到另一个主节 的自动重新配置的过程叫做复制迁移(从节点迁移),从节点的迁移能够提高整个Redis集群的可用性.

//集群(cluster)  
CLUSTER INFO 打印集群的信息  
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。   
  
//节点(node)  
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。  
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。  
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。  
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。   
  
//槽(slot)  
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。  
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。  
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。  
CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。  
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。 
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。  
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。   
  
//键 (key)  
CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。  
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。  
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。  
这些命令是集群所独有的。执行上述命令要先登录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: