redis集群维护常用命令

redis-cli参数说明

常用操作示例

示例中redis-cli及集群版本都为5.0.10

创建集群

redis-cli --cluster create 172.21.205.85:8001 172.21.205.85:8101 172.21.205.85:8201 172.21.205.85:8301 172.21.205.85:8401 172.21.205.85:8501 --cluster-replicas 1

#Redis-cli将展示默认配置。输入yes接受建议的配置。集群将被配置并创建,cluster-replicas 指定每个主节点分配多少个从节点。

查看集群节点

redis-cli -h 172.21.205.85 -p 8001 cluster nodes
节点ID:服务启动时自动创建得一个40字节的随机字符串,一般不会改变
ip:port: 服务通信使用的ip及端口
flags: 逗号分割的标记位,可能的值有: myself, master, slave等
master: 如果节点是slave,则这里列出master节点ID,否则的话这里列出”-“。
ping-sent::最近一次发送ping的时间,这个时间是一个unix毫秒时间戳,0代表没有发送过.
pong-recv:最近一次收到pong的时间,使用unix时间戳表示。
config-epoch: 节点的epoch值,每当节点发生失败切换时,都会创建一个新的,独特的,递增的epoch。如果多个节点竞争同一个哈希槽时,epoch值更高的节点会抢夺到。
link-state:集群节点间的链接状态,值为 connected 或 disconnected.。
slot:哈希槽值或者一个哈希槽范围,可以有多个范围和不连续槽位。在这里插入图片描述

检查和查看槽位分布

redis-cli --cluster check 172.21.205.85:8001
该命令列出节点key数量,槽位数量及分布,主从关系,槽位状态是否异常
在这里插入图片描述

迁移槽位

redis-cli --cluster reshard 172.21.205.85:8001
#本次操作后有2个节点分别迁移250个槽位至指定节点。

How many slots do you want to move (from 1 to 16384)? 500#输入迁移数量
What is the receiving node ID? 5d772d83ddb9d2ac8b55ec5064aa0f1ee99f8cd5
#输入接收ID
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#选择500槽位来源
Ready to move 500 slots. Source nodes:
M: a56b7ef6fbd832398cca527f50029e6efe500e5c 172.21.205.85:8001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: af827010c2a54715eeae34b1649f4b20c6b677e2 172.21.205.85:8101
slots:[5461-10922] (5462 slots) master
1 additional replica(s) Destination node:
M: 5d772d83ddb9d2ac8b55ec5064aa0f1ee99f8cd5 172.21.205.85:8201
slots:[10923-16383] (5461 slots) master
1 additional replica(s)*

在这里插入图片描述

非交互式迁移槽位

redis-cli --cluster reshard <host>:<port> --cluster-from <node-id> --cluster-to <node-id> --cluster-slots <number of slots> --cluster-yes
<host>:<port>指定集群任意节点
–cluster-from 来源
–cluster-to 接收节点
–cluster-slots 迁移多少salts
redis-cli --cluster reshard 172.21.205.85:8001 --cluster-from a56b7ef6fbd832398cca527f50029e6efe500e5c --cluster-to 5d772d83ddb9d2ac8b55ec5064aa0f1ee99f8cd5 --cluster-slots 500 --cluster-yes
#上例迁移后(500 + 前例中的250)
在这里插入图片描述

接收指定槽位

该命令将一组hash slots分配给接收命令的节点。 如果命令执行成功,节点将将获得指定的hash slots。
#CLUSTER ADDSLOTS
redis-cli -c -h 172.21.205.85 -p 8201 CLUSTER ADDSLOTS 1 2 3
因为slots已经被分配了,报错
在这里插入图片描述

删除指定槽位

redis-cli -c -h 172.21.205.85 -p 8201 cluster delslots 747
#删除指定槽位747
在这里插入图片描述在这里插入图片描述

平衡集群节点slot数量

redis-cli --cluster rebalance 172.21.205.85:8001
#执行后slot被平衡迁移,节点为0的master没有slot。
在这里插入图片描述
redis-cli --cluster rebalance --cluster-threshold 1 --cluster-use-empty-masters 172.21.205.85:8001
#redis-cli --cluster rebalance --cluster-threshold 1 --cluster-use-empty-masters –cluster-simulate 172.21.205.85:8001只模拟
#新增节点也分配slot
在这里插入图片描述

查看指定节点错误数

返回指定节点的故障报告个数,故障报告是Redis Cluster用来使节点的PFAIL状态(这意味着节点不可达)晋升到FAIL状态而的方式,这意味着集群中大多数的主节点在一个事件 窗口内同意该节点不可达

错误报告来源:
一个节点不可达时间超过 Redis Cluster 配置中的超时时间,这个节点会被其他节点用PFAIL标记。每当一个节点处理来自其他节点的流言(gossip)包时,这个个节点都会建立故障报告(如果需要会刷新TTL),并且会记住发送消息包的节点所认为处于PFAIL状态下的其他节点。每个故障报告的生存时间是节点超时时间的两倍。如果在一段给定的事件内,一个节点被另一个节点标记为PFAIL状态,并且在相同的时间内收到了其他大多数主节点关于该节点的故障报告(如果该节点是主节点包括它自己),那么该节点的故障状态会从PFAIL晋升为FAIL,并且会广播一个消息,强制所有可达的节点将该节点标记为FAIL。

#CLUSTER COUNT-FAILURE-REPORTS
redis-cli -c -h 172.21.205.85 -p 8201 cluster count-failure-reports a56b7ef6fbd832398cca527f50029e6efe500e5c
在这里插入图片描述

添加新节点

#redis-cli --cluster add-node 新节点ip:端口 任意集群节点ip:端口
redis-cli --cluster add-node 172.21.205.85:8601 172.21.205.85:8001
在这里插入图片描述

添加新节点作为slave

#redis-cli --cluster add-node 新节点ip:端口 任意集群节点ip:端口 --cluster-slave
#新节点将被添加为最少master节点的从节点,本例中自动添加为8601的从节点
redis-cli --cluster add-node 172.21.205.85:8701 172.21.205.85:8001 --cluster-slave
在这里插入图片描述

删除从节点

#redis-cli --cluster del-node 任意集群节点ip:端口 要删除的节点id
#删除之后, 该节点会被shutdown。当删除掉的节点重新起来之后不能自动的加入到集群中, 但其和主的复制是正常的, 如果想要再次加入集群, 需要先在该节点执行cluster reset, 在使用add-node进行添加
redis-cli --cluster del-node 172.21.205.85:8001 30b5526f8724f767ab05d48d0a4b360a0e1ef94d
在这里插入图片描述

添加新节点至指定master

#redis-cli --cluster add-node 新节点ip:端口 任意集群节点ip:端口 --cluster-slave --cluster-master-id 指定masterid
#必须为master id,本例中8701节点被添加后删除, nodes.conf中已有集群信息,加入会报错,需停止服务,清除文件后重启服务,或登录该服务 reset 。
redis-cli --cluster add-node 172.21.205.85:8701 172.21.205.85:8001 --cluster-slave --cluster-master-id af827010c2a54715eeae34b1649f4b20c6b677e2
在这里插入图片描述

查看集群信息

redis-cli --cluster info 172.21.205.85:8001
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis 集群中初始化命令如下: 1. 首先,需要安装 Redis 集群包。可以通过以下命令安装: ``` $ wget http://download.redis.io/releases/redis-6.2.4.tar.gz $ tar xzf redis-6.2.4.tar.gz $ cd redis-6.2.4 $ make ``` 2. 在 Redis 集群中,需要至少有 3 个节点。在每个节点上,需要创建一个配置文件。可以通过以下命令创建配置文件: ``` $ mkdir /opt/redis-cluster $ cd /opt/redis-cluster $ touch redis-7000.conf $ touch redis-7001.conf $ touch redis-7002.conf ``` 3. 在每个节点的配置文件中,需要进行以下配置: ``` port 7000 cluster-enabled yes cluster-config-file nodes-7000.conf cluster-node-timeout 5000 daemonize yes pidfile /var/run/redis_7000.pid logfile /var/log/redis_7000.log dir /var/lib/redis/7000 ``` 其中,port 表示节点的端口号,cluster-enabled 表示开启集群模式,cluster-config-file 表示节点的配置文件,cluster-node-timeout 表示节点之间的超时时间,daemonize 表示将 Redis 作为后台进程运行,pidfile 表示 Redis 进程的 PID 文件,logfile 表示 Redis 运行日志文件,dir 表示 Redis 的工作目录。 4. 启动每个节点: ``` $ ./src/redis-server redis-7000.conf $ ./src/redis-server redis-7001.conf $ ./src/redis-server redis-7002.conf ``` 5. 在任一节点上执行以下命令,创建 Redis 集群: ``` $ ./src/redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 ``` 其中,127.0.0.1 表示节点的 IP 地址,7000、7001、7002 表示节点的端口号。执行完毕后,Redis 集群就初始化完成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值