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

Redis学习笔记——(四)Redis集群调整

2017-12-21 21:04 489 查看
参考:http://www.mamicode.com/info-detail-1866955.html

3, 集群管理

3.1 查看集群中机器ID,主从,及hash槽情况,可以查看集群中机器的情况

/usr/local/redis/bin/redis-trib.rb check IP:port

3.2 对数据重新分片:

/usr/local/redis/bin/redis-trib.rb reshard IP:port

3.3 列出集群中的所有主节点

/usr/local/redis/bin/redis-cli -h IP -p port cluster nodes | grep master

3.4 让某个主节点崩溃,测试故障转移

/usr/local/redis/bin/redis-cli -h IP -p port debug segfault

3.5 增加主节点到集群

/usr/local/redis/bin/redis-trib.rb add-node new-IP:new-port IP:port

new-IP:new-port是新节点,IP:port是一个已在集群中的节点

需要注意的是此时新节点不能成为真正的主节点,需要进行重新分片才可以

/usr/local/redis/bin/redis-trib.rb reshard new-IP:new-port

1).自动分片程序会询问移动几个hash槽,如果要保证数据的均匀,此时应该是16384/N,

N代表包括当前主机的所有希望成为主节点的数量。

2).然后会询问移动到哪个节点,输入新的主节点的id即可。

3).会询问从哪些节点移动数据,此时可以选择某些节点的ID,也可以直接选择all,从所有主节点,这样数据就会均分。

3.6 增加从节点到集群

/usr/local/redis/bin/redis-trib.rb add-node –slave new-IP:new-port IP:port

此时没有指定从节点的主节点,一般会自动选择一个,也可以指定主节点,如下:

/usr/local/redis/bin/redis-trib.rb add-node –slave –master-id 6b45acde96e4225856c8652089e8c8edeec00c79 new-IP:new-port IP:port

new-IP:new-port新加的节点,IP:port已在集群中的节点

3.7 删除一个节点(删除后redis实例会被关闭)

1).从节点删除:d598f4cf29cc4fea3616a00a0e707f71a7777cf1是指被删除的redis的ID

/usr/local/redis/bin/redis-trib.rb del-node IP:port 56cfd4a0d4631fdf046c20acac7e5f1a0fce3b39

2).主节点删除,此时应该确保主节点数据为空,如果不为空,需要将该节点的数据重新分片到其他节点上

被删除的主节点,先进行数据迁移,到其他主节点上

/usr/local/redis/bin/redis-trib.rb reshard IP:por
4000
t

/usr/local/redis/bin/redis-trib.rb del-node IP:port 791b834b1a5292bba236656c076849bb45a0ff17

3.8 集群相关命令:

CLUSTER NODES :集群信息,包括了节点ID,主从关系

CLUSTER INFO:查看集群是否健康

CLUSTER MEET 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。

CLUSTER FORGET 从集群中移除 node_id 指定的节点。

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

CLUSTER KEYSLOT 计算键 key 应该被放置在哪个槽上。

CLUSTER COUNTKEYSINSLOT 返回槽 slot 目前包含的键值对数量。

$ redis-cli -h IP -p port

CLUSTER NODES

4, FAQ

Error: /usr/bin/env: ruby: No such file or directory

Cause: redis-trib.rb 依赖 ruby

Fix: yum -y install ruby

Error: ./redis-trib.rb:24:in `require‘: no such file to load – rubygems (LoadError)

from ./redis-trib.rb:24

Cause: redis-trib.rb 依赖 rubygems

Fix: yum -y install rubygems

Error: usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
gem_original_require‘: no such file to load -- redis (LoadError)

from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
require‘

from ./redis-trib.rb:25

Cause: 缺少redis和ruby的接口

Fix: gem install redis –version 3.0.0

Error: Node IP:port is not empty. Either the nodealready knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

Cause:

Fix: 用redis-cli登录到每个节点执行flushdb。

Error: CLUSTERDOWN Hash slot not served

Cause:

Fix: 用redis-cli登录到每个节点执行flushall和cluster reset。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: