Redis集群master节点挂掉之后的处理方式
大家好,今天分享Redis集群master节点挂掉之后的处理方式
我们前面做的主从复制
是这样的一个结构
要改成这样
将6303的主节点接到6302
127.0.0.1:6303> SLAVEOF 127.0.0.1 6302
OK
127.0.0.1:6303>
在6303上看,它的主节点变成了6302
127.0.0.1:6303> INFO replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6302
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:4397
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:d41907987e0a9dd87fa62e7f54b6d2ce27740621
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4397
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:4397
在原先的主节点上看,他只有6302这个从节点了
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6302,state=online,offset=4523,lag=0
master_replid:d41907987e0a9dd87fa62e7f54b6d2ce27740621
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4523
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:4523
127.0.0.1:6379>
我们发现6302 还是一个从节点(它是不可以写入数据的)
127.0.0.1:6302> INFO replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:4747
slave_priority:100
slave_read_only:1
connected_slaves:1
slave0:ip=127.0.0.1,port=6303,state=online,offset=4747,lag=1
master_replid:d41907987e0a9dd87fa62e7f54b6d2ce27740621
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4747
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1626
repl_backlog_histlen:3122
在原先的主节点上写点数据
127.0.0.1:6379> set gw jiao
OK
在6302上获取数据
127.0.0.1:6302> get gw
"jiao"
127.0.0.1:6302>
在6303上获取数据
127.0.0.1:6303> get gw
"jiao"
这样也可以完成主从复制
断掉主节点
127.0.0.1:6379> SHUTDOWN
not connected> exit
[root@localhost bin]#
这时我们已经没有主节点了
这时,在从节点上使用这个命令
可以让这个从节点变成主节点
127.0.0.1:6302> SLAVEOF no one
OK
127.0.0.1:6302>
6302这个从节点已经变成了主节点
127.0.0.1:6302> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6303,state=online,offset=5669,lag=0 //注意这一行(6303成为了6302的从节点)
master_replid:fe8fffc61e1c21c0892bffb64d51c8224ad5ec93
master_replid2:d41907987e0a9dd87fa62e7f54b6d2ce27740621
master_repl_offset:5669
second_repl_offset:5432
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1626
repl_backlog_histlen:4044
127.0.0.1:6302>
之后,我们使用命令行的方式让其它的从节点(除了原先的主节点以外)连接上这个主节点
连接原先的主节点(即: 6379)
[root@localhost bin]# redis-server redistest/redis01.conf
[root@localhost bin]# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
它现在还是主节点(但是它的下面已经从节点了
)
因为6302已经取代了它主节点(就是老大的意思)的地位
它再次开启也没有用了
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:0
master_replid:d4f9a27b0db5279fa847cc95488bf9a9fbe04045
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>
如果想让原先的主节点再度成为主节点(master),在命令行上加上去就可以了
这样做
127.0.0.1:6302> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6302>
这样做
127.0.0.1:6303> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6303>
这样它的主节点地位就又回来了(即:6379 又变成了master)
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6302,state=online,offset=98,lag=0
slave1:ip=127.0.0.1,port=6303,state=online,offset=98,lag=1
master_replid:5c4f2e117c26c9a1c1d1310e327f166dc7a88c2e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98
127.0.0.1:6379>
好了,有关于Redis集群master节点挂掉之后的处理方式就到这里了,谢谢大家
Redis集群master节点挂掉之后的处理方式相关推荐
- redis集群添加节点报错Either the node already knows other nodes (check with CLUSTER NODES) or contains some k
[README] redis集群添加节点报错 [ERR] Node 192.168.163.202:6380 is not empty. Either the node already knows o ...
- Redis集群添加节点
Redis集群添加节点 1:首先把需要添加的节点启动 cd /usr/local/cluster/ mkdir 7006 cp /usr/local/cluster/redis.conf /usr/ ...
- shell脚本遍历redis集群所有节点日志,并入库到hadoop中,进行数据分析
shell脚本遍历redis集群所有节点,并入库到hadoop中的数据库中,进行数据分析,在此留存,以备他用 [AAAAAAnilRedis@FXYY-FS-redis2 ~]$ cat /home/ ...
- springboot整合redis集群master宕机后连接超时
前提: # 本文是在确保redis集群配置正确的情况下,连接超时的解决方案. 项目登录认证使用的是sa-token(这个不重要,主要说的是springboot和redis集群),最近应甲 ...
- 通过cluster reshard实现Redis集群缩减节点实战【详细步骤】
今年由于新冠疫情的影响,可能很多同学都被公司要求压缩服务器成本.这两天,公司领导把小眼睛瞟到笔者开发环境里那个可怜的redis集群上.好吧,那么我们就来操作一下缩减redis集群. 查看cluster ...
- redis集群增加节点和删除节点、或者reshard时报 migrating 错误
目录 redis安装和创建集群看这里 redis安装 redis集群 Redis集群节点增加 添加节点 节点的 redis.conf 配置 端口 6307 启动新的redis实例 2.添加节点到集群 ...
- redis 集群master slave飘逸,造成订阅消息失败问题解决
一.问题 之前的代码,通过redis消息订阅发布功能,来获取最新的设备信息,运行一段时间后发现,从某个点开始,无法订阅新发布的消息 二.调研 1.在本地debug模式启动功能,连接到redis集群订阅 ...
- Redis高可用架构-Redis集群,一文get三种方式
前言 容量不够,redis如何进行扩容? 并发写操作, redis如何分摊? 另外,主从模式,薪火相传模式,主机宕机,导致ip地址发生变化,应用程序中配置需要修改对应的主机地址.端口等信息. 之前通过 ...
- 查看Redis集群所有节点内存工具
指定集群中任意一个节点,查看集群中所有节点当前已用物理内存.配置的最大物理内存和系统物理内存. 源码(可从https://github.com/eyjian/redis-tools下载): #! ...
最新文章
- 分布式通信框架 - rmi
- mac os10.11上使用proxychains
- Linux产生随机数的几种常见方法
- 学生用计算机怎么用视频,19.使用ZOOM作为上课视频、语音和屏幕分享工具,具体对学生的电脑和宽带有什么软件和硬件要求?...
- 网络通信程序做个瞬间的扫描判断
- LeetCode 605 种花问题
- Google Chrome调试js代码
- 模拟退火算法从原理到实战【基础篇】
- js动态加载css文件和js文件的方法
- Kotlin — 协程简介与使用
- python时间处理,datetime中的strftime/strptime
- visual studio 2012 密钥
- 数据结构算法——1006. 线性链表的插入与删除
- 用html制作ps,ps制作图片的步骤
- 项目管理四要素是什么?
- python爬虫大作业
- gtx660 linux驱动下载,Ubuntu 16.04安装GTX660显卡驱动——解决谷歌浏览器卡死桌面的问题...
- mysql表别名不加as_数据库别名AS区别
- Axway API Management以及移动互联技术实现价值型
- 电子科技大学-高级计算机系统结构
热门文章
- iOS Quartz2D使用教程之【自定义控件】(案例:横屏电子签名)
- 公式文字识别神器---mathpix
- php hyper-v,win10自带播放器 rmvb_win 配置php_win 10 hyper-v
- 开源论坛软件Flarum的安装
- php7安装flarum,如何在Ubuntu 18.04上安装Flarum社区软件
- 京东店铺人群标签如何优化?
- TeeChart.v8.01安装
- 自考笔记-创业学01(小白编写)
- Hacknet 游戏笔记记录
- AD(altium designer)15原理图与PCB设计教程(一)——封装总结