美文网首页中间件
redis日常运维

redis日常运维

作者: lockdreamer | 来源:发表于2019-01-16 20:41 被阅读14次

1.启动redis

cd ~/redis/bin

./redis-server  ../config/redis-27100.conf

2.停止reids

./redis-cli -h ip -p port shutdown

redis启动通过redis-server加载指定配置文件启动,所以redis只需编译一次,将工具拷贝到bin目录下,若同一台主机需要启动多个redis实例,只需增加几个配置文件,启动时指定加载不同配置文件来启动多个实例。

3.Redis集群手动配置

设置master节点

./bin/redis-trib.rb create ip1:port1 ip2:port2 … …

为master节点添加slave:./bin/redis-trib.rb add-node --slave --master-id mastered slaveip:port masterip:port

如果集群添加错误,将redis停止服务,清空data目录,重新添加。或者登录进入从节点,使用如下命令修改该从节点的主节点。

添加主节点

./redis-trib.rb add-node ip:port新添加的主从节点,需要向主节点分配一定的槽。分配槽点./redis-trib.rb reshard ip:port根据提示输入想分配的槽点的个数即可,接下来会提示是根据所有的槽作为源点进行分配还是从特点的node进行槽的重新分配。

删除节点

/redis-trib.rb del-node ip:port idps:这时候需要首先将该节点的存在的数据,也就是槽点进行删除才能够进行移除节点操作

4.查看集群状态

./redis-trib.rb check ip:port

5.登陆redis

cd ~/redis/bin

./redis-cli -c -h 192.168.***.***  -p 27100

-c 指定集群模式

-h 指定主机ip

-p 指定redis端口

登陆之后常用命令:

Info:可以查看节点状态,以下为部分信息。

INFO commandstats:通过这个工具可以查看所有命令统计的快照,比如命令执行了多少次,执行命令所耗费的毫秒数(每个命令的总时间和平均时间)

CLUSTER NODES:查看集群中各节点状态信息

slowlog get:查看执行慢的命令,假如只需要查看最后10个慢命令,输入slowlog get 10即可。

图中字段分别意思是:

1=日志的唯一标识符

2=被记录命令的执行时间点,以 UNIX 时间戳格式表示

3=查询执行时间,以微秒为单位。例子中命令使用54毫秒。

4= 执行的命令,以数组的形式排列。

集群扩缩容

在主机192.168.100.77上演示

1.扩容集群

扩容集群分为如下步骤:

(1)准备新节点

(2)加入集群

(3)迁移槽和数据

(1)准备新节点

新增两个redis节点,redis-6385和redis-6386

启动新节点

新增加的节点作为孤儿节点运行,并没有与其他节点通信

(2)加入集群

使用cluster meet命令将新节点加入集群

新节点刚开始都是主节点,但是由于没有负责的槽,所以不能接收任何读写操作,对于新增节点,后续操作一般有两种选择:

为他迁移槽和数据实现扩容

作为其他主节点的从节点负责故障转移。

redis-trib.rb也实现了为现有集群添加新节点的命令

redis-trib.rb add-node 192.168.100.77:6385 192.168.100.77:6379

redis-trib.rb add-node 192.168.100.77:6386 192.168.100.77:6379

(3)迁移槽和数据

加入集群后需要为新节点迁移槽和相关数据,槽在迁移过程中集群可以正常提供读写服务。

槽迁移计划

槽是redis集群管理数据的基本单元,在扩容节点时应首先制定槽的迁移计划,确定原有节点的那些槽可以迁移到新节点。迁移计划需要确保每个节点负责相似数量的槽,从而保证个节点数据的均匀性。新加入节点后,集群每个主节点负责的槽数将由5460变为4096

迁移数据

数据迁移过程是逐个槽开始进行的,实际操作肯定会涉及大量槽并且每个槽对应大量的键值对,因此redis-trib提供了槽重新分片的功能。

需要安装ruby依赖工具

./redis-trib.tb 192.168.100.77:6379

确认需要迁移的槽数量,本文为4096

输入接收迁移槽的目标节点ID,本文输入6385的节点ID,目标节点只能有一个。

分别输入源节点的ID,本文输入6379,6380,6381的节点ID,最后用done表示结束。

Enter后数据迁移之前会打印出所有的槽从源节点到目标节点的计划,确认无误后输入yes执行迁移工作。

redis-trib工具会打印出每个槽迁移的进度,如下所示:

执行cluster nodes命令检查节点和槽映射的关系

可以看到6385负责的槽位为10923-12287,执行redis-trib.rb rebalance检测节点之间槽的均衡性

可以看到槽差异在2%以内,因此集群节点数据相对均匀,无需调整。

(4)添加从节点

2.收缩集群

(1)槽迁移

收缩集群意味着缩小规模,需要从现有集群中安全下线部分节点。流程说明:

确认下线节点是否有负责的槽,如果有,需要把槽迁移到其他节点,保证节点下线后整个集群槽节点映射的完整性。

当下线节点不在负责槽或本身是从节点时,可以通知其他节点忘记下线节点,当所有节点忘记下线节点后该节点可以正常关闭。

例:下线6381和6384节点

6381节点负责槽位12288-16383,下线之前需要迁移槽位,源节点需要把自身负责的槽位均匀的迁移到其他主节点上,直接使用redis-trib.tb reshard命令完成槽迁移,每次迁移只能有一个目标节点。

./redis-trib.rb reshard 192.168.100.77:6381

输入迁移目的节点6379的ID

输入迁移源节点6381的ID,输入done确认

确认无误后输入yes开始迁移

cluster nodes可以看到6379接管了1365个槽12288-13652

把槽迁移到6380,重复上述过程

把槽迁移到6385,重复上述过程

可以看到,6381不在负责槽

(2)忘记节点

使用redis-trib.rb + del-node + 集群ip:port + 下线节点ID 命令忘记节点

对6381和6384节点进行下线操作

192.168.100.77:6379> cluster nodes查看节点已下线

高危风险操作

生产上禁止Key *操作。

flushall操作需要项目册评估影响范围,负责人进行审核。

RDB和aof文件根据项目需要进行配置。

Key删除与垃圾键清理需要负责人审核确认影响范围后进行删除。

相关文章

网友评论

    本文标题:redis日常运维

    本文链接:https://www.haomeiwen.com/subject/xdujdqtx.html