首页 > 数据库 >redis集群异常修复

redis集群异常修复

时间:2023-06-12 14:58:03浏览次数:49  
标签:node 修复 -- redis cluster 集群 master

概述

分析redis在异常情况在的处理流程,redis集群在正常情况下自动主从切换,前提条件master在线多于一半的情况

https://github.com/tair-opensource/RedisShake/wiki

http://www.redis.cn/commands/cluster-failover.html

 环境:

centos7.x

redis-5.x

redis-cluster(3master/3slave)

 

redis-cluster操作命令

127.0.0.1:3380> cluster help

 1) CLUSTER <subcommand> arg arg ... arg. Subcommands are:

 2) ADDSLOTS <slot> [slot ...] -- Assign slots to current node.

 3) BUMPEPOCH -- Advance the cluster config epoch.

 4) COUNT-failure-reports <node-id> -- Return number of failure reports for <node-id>.

 5) COUNTKEYSINSLOT <slot> - Return the number of keys in <slot>.

 6) DELSLOTS <slot> [slot ...] -- Delete slots information from current node.

 7) FAILOVER [force|takeover] -- Promote current replica node to being a master

http://www.redis.cn/commands/cluster-failover.html

 

 8) FORGET <node-id> -- Remove a node from the cluster.

 9) GETKEYSINSLOT <slot> <count> -- Return key names stored by current node in a slot.

10) FLUSHSLOTS -- Delete current node own slots information.

11) INFO - Return onformation about the cluster.

12) KEYSLOT <key> -- Return the hash slot for <key>.

13) MEET <ip> <port> [bus-port] -- Connect nodes into a working cluster.

14) MYID -- Return the node id.

15) NODES -- Return cluster configuration seen by node. Output format:

16)     <id> <ip:port> <flags> <master> <pings> <pongs> <epoch> <link> <slot> ... <slot>

17) REPLICATE <node-id> -- Configure current node as replica to <node-id>.

18) RESET [hard|soft] -- Reset current node (default: soft).

19) SET-config-epoch <epoch> - Set config epoch of current node.

20) SETSLOT <slot> (importing|migrating|stable|node <node-id>) -- Set slot state.

21) REPLICAS <node-id> -- Return <node-id> replicas.

22) SLOTS -- Return information about slots range mappings. Each range is made of:

23)     start, end, master and replicas IP addresses, ports and ids

127.0.0.1:3380>

 

场景

两个master在一台虚机上

查看节点信息 cluster nodes

redis-cli登录到2master在一台机器的slave节点,执行人工切换

cluster failover force

移除异常的redis id

cluster forget xxxx

检查redis集群状态 cluster nodes/cluster info

 

少于一半master在线

3主3从redis

数据目录存在(redis宿主机不存在文件丢失)

进入节点的服务器,启动redis服务,稍后观察集群是否恢复正常

cluster nodes

cluster info

数据目录丢失

01 人工提升当前redis集群中slave节点到master让集群恢复正常

在线redis的主从关系

人工提升slave->master集群恢复正常

备注:此时redis集群恢复正常,可以继续定位业务故障(抽出另外一个同事处理挂掉redis节点加入集群事宜)

02 重新初始化redis安装,然后以slave节点形式加入到集群

01 脚本初始化集群或者copy当前集群内的redis脚本、配置(修正正确),启动

脚本初始化redis(注释掉集群初始化slot)

copy其他节点修正ip/port

使用脚本启动redis

02 redis节点加入到集群中

新增slave,根据redis信息执行加入集群

./bin/redis-cli -h 172.24.20.31 -p 6379 -a xx

cluster nodes  //查看节点映射信息

./bin/redis-cli -h 172.24.20.31 -p 6379 -a xxx  --cluster add-node 172.24.20.30:3001 172.24.20.31:6379 --cluster-slave

注释:

172.24.20.30:3001   要加入集群的redis信息

172.24.20.31:6379   当前集群在线的节点任意一个

--cluster-slave  以slave身份加入到集群中自动寻找master作为依附

 

172.24.20.202:3380> cluster forget be91cd62eec29df6a95da23f59d01bb92bbd4656

OK

注释:

be91cd62eec29df6a95da23f59d01bb92bbd4656  redis节点id标识(master fail)

172.24.20.202:3380> cluster forget 6901e19a1924395bc9c3190992e1f25bbfc51577

OK

在查看集群恢复正常

cluster  info

标签:node,修复,--,redis,cluster,集群,master
From: https://www.cnblogs.com/xiaochina/p/17474991.html

相关文章

  • Redis集群-哨兵模式搭建(1主2从3哨兵节点)
    Redis集群-哨兵模式搭建(1主2从3哨兵节点)原创 北极星 运维记事 2023-04-2022:47 发表于四川收录于合集#redis8个主机规划类型IP地址端口号主192.168.77.1456379从1192.168.77.1466379从2192.168.77.1476379哨兵1192.168.77.14526379哨兵2......
  • 通过redis学网络(2)-redis网络模型
    本系列主要是为了对redis的网络模型和集群原理进行学习,我会用golang实现一个reactor网络模型,并实现对redis协议的解析。系列源码已经上传githubhttps://github.com/HobbyBear/tinyredis/tree/chapter2redis网络模型在介绍redis网络模型前,我们先来看看redis的一条命令执行......
  • 两种比较好的ES集群迁移数据的方法
    https://blog.csdn.net/yumin841931783/article/details/103092091?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-103092091-blog-110650439.235%5Ev28%5Epc_relevant_default_base1&de......
  • Redis两种持久化机制RDB和AOF详解
    redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(RedisDataBase)和AOF(AppendOnlyFile)。在这里假设你已经了解了redis的基础语法,某字母网站都有很好的教程,可以去看。基本使用的文章......
  • Navicat For Redis 的学习与使用
    NavicatForRedis的学习与使用背景周末在家看了几个公众号:说到Navicat16.2已经有了Redis的客户端.想着前段时间一直在学习Redis,但是没有GUI的工具,所以想可以试用一下.这里简单总结和记录一下最新版的下载地址#最新版的集合版本premium里面包含多种数据库的......
  • redis四种模式
    1、单机模式单机模式就是在一台服务器上安装redis,然后启动,所有业务都调用这一台redis服务器。优点:部署简单,只需要在一台服务器上安装并启动redis就行。成本低,没有备用节点,不需要其他的开支。高性能,单机不需要同步数据,数据天然一致性。缺点:可靠性较弱,一旦服务器宕机,所有业务......
  • lightdb 单机多实例集群部署
    本文章主要介绍我在部署lightdb单机多实例集群过程中开发的shell脚本,方便后续快速搭建集群。在搭建集群过程中我主要参考了以下文档。参考文档lightdbdistributedguide分布式组件canopy高可用组件ltcluster脚本node.sh该脚本运行在已经安装过lightdb单......
  • 黑马redis相关问题
    Redis相关面试题面试官:什么是缓存穿透?怎么解决?候选人:嗯~~,我想一下缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到DB去查询,可能导致DB挂掉。这种情况大概率是遭到了攻击。解决方案的话,我们通常都......
  • 5分钟打通办公网与K8S集群网络
    在K8S的使用中,我们经常有通过办公网访问K8S集群的诉求,虽然可以通过NodePort等方式访问K8S,但在访问多副本中间件等情况下NodePort就捉襟见肘了。今天我们给大家介绍一个快捷的网络打通方案,可通过域名来轻松访问K8S集群。首先跟大家介绍一个开源工具:telepresence,我们可以使用它为......
  • 2023-06-11:redis中,如何在100个亿URL中快速判断某URL是否存在?
    2023-06-11:redis中,如何在100个亿URL中快速判断某URL是否存在?答案2023-06-11:传统数据结构的不足当然有人会想,我直接将网页URL存入数据库进行查找不就好了,或者建立一个哈希表进行查找不就OK了。当数据量小的时候,这么思考是对的,确实,将值映射到HashMap的Key,可以在O(1)的时间复杂度......