美文网首页中间件
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