(进阶篇)Redis6.2.0 集群 哨兵模式_故障转移_03

文章目录

          • 一、前置准备
            • 启动redis服务
            • 启动sentinel服务
            • 查看sentiel启动日志
          • 二、实战故障转移
            • 2.1. 主节点停止
            • 2.2. Sentienl监控日志
            • 2.3. 节点信息监控
            • 2.4. 故障转移后变化
            • 2.5. 重新启动
            • 2.6. sentine日志
            • 2.7. 节点信息监控
            • 2.8. 配置文件变化
            • 2.9. 读写验证

一、前置准备
启动redis服务
# 查看redis进程
ps -ef |grep redis# 启动redis服务
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf#查看主从节点信息
/usr/local/redis/bin/redis-cli -a 123456
info replication
启动sentinel服务

声明:在启动3个redis服务的前提下,再依次启动3个sentinel服务

/usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/sentiel.conf
查看sentiel启动日志
tail -f /usr/local/redis/log/sentinel.log
二、实战故障转移
2.1. 主节点停止
[root@bigdata01 redis-6.2.0]# /usr/local/redis/bin/redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> info replcation
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=xxx.xxx.92.101,port=6379,state=online,offset=3xxx,lag=1
slave1:ip=xxx.xxx.92.102,port=6379,state=online,offset=3xxx,lag=1
master_failover_state:no-failover
master_replid:4f07bacde969998356194ad698c6dd7e2f6f7da2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3xxx
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1391
repl_backlog_histlen:1778
127.0.0.1:6379> SHUTDOWN
not connected> 
2.2. Sentienl监控日志

mymaster 主节点 xxx.xxx.92.100 6379 被添加主观下线标记,其他的sentinel每秒一次和xxx.xxx.92.100 6379的通信
# +sdown master mymaster xxx.xxx.92.100 6379
启动一个新选举流程,记录当前选举的次数
# +new-epoch 1
投票选举一个sentinel去做故障转移这件事
# +vote-for-leader a20913bfcbeb3a5d8d58ce1bd372cc40455xxx10 1
客观下线:当前环境内多个sentinel节点对我们的某一个服务器标记为主观下线,满足quorum 仲裁的选项值之后,标记为客观下线
# +odown master mymaster xxx.xxx.92.100 6379 #quorum 3/2
# Next failover delay: I will not start a failover before Sun Jul  4 22:39:56 2021
# +config-update-from sentinel a20913bfcbeb3a5d8d58ce1bd372cc40455xxx10 xxx.xxx.92.1026379
# +switch-master mymaster xxx.xxx.92.100 6379 xxx.xxx.92.101 6379
* +slave slave xxx.xxx.92.102:6379 xxx.xxx.92.102 6379 @ mymaster xxx.xxx.92.101 6379
* +slave slave xxx.xxx.92.100:6379 xxx.xxx.92.100 6379 @ mymaster xxx.xxx.92.101 6379
# +sdown slave xxx.xxx.92.100:6379 xxx.xxx.92.100 6379 @ mymaster xxx.xxx.92.101 6379
2.3. 节点信息监控

查看故障转移后的节点信息
01节点信息

[root@bigdata02 ~]# /usr/local/redis/bin/redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:xxx.xxx.92.100
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:3196
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:4f07bacde969998356194ad698c6dd7e2f6f7da2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3196
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1391
repl_backlog_histlen:1806# 故障转移后 -------------------------------------------------------------------
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=xxx.xxx.92.102,port=6379,state=online,offset=380674,lag=1
master_failover_state:no-failover
master_replid:424069affa171e62af3e2c65a2ee1cb27ecb6c2f
master_replid2:4f07bacde969998356194ad698c6dd7e2f6f7da2
master_repl_offset:380674
second_repl_offset:156702
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1391
repl_backlog_histlen:379284
127.0.0.1:6379> 

02节点信息

[root@bigdata03 ~]# /usr/local/redis/bin/redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:xxx.xxx.92.100
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:3210
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:4f07bacde969998356194ad698c6dd7e2f6f7da2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3210
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1433
repl_backlog_histlen:1778# 故障转移后 -------------------------------------------------------------------
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:xxx.xxx.92.101
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:381546
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:424069affa171e62af3e2c65a2ee1cb27ecb6c2f
master_replid2:4f07bacde969998356194ad698c6dd7e2f6f7da2
master_repl_offset:381546
second_repl_offset:156702
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1433
repl_backlog_histlen:380114
127.0.0.1:6379> 
2.4. 故障转移后变化

01节点由slave节点变成了master节点,02仍然后slave节点

2.5. 重新启动

故障的 100节点(原主节点)重新启动

/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
2.6. sentine日志
* +convert-to-slave slave xxx.xxx.92.100:6379 xxx.xxx.92.100 6379 @ mymaster xxx.xxx.92.101 6379
2.7. 节点信息监控
[root@bigdata01 redis-6.2.0]# /usr/local/redis/bin/redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:xxx.xxx.92.101
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:528510
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:424069affa171e62af3e2c65a2ee1cb27ecb6c2f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:528510
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:518136
repl_backlog_histlen:10375
127.0.0.1:6379>

01节点信息

[root@bigdata02 ~]# /usr/local/redis/bin/redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:xxx.xxx.92.100
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:3196
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:4f07bacde969998356194ad698c6dd7e2f6f7da2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3196
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1391
repl_backlog_histlen:1806# 故障转移后 -------------------------------------------------------------------
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=xxx.xxx.92.102,port=6379,state=online,offset=380674,lag=1
master_failover_state:no-failover
master_replid:424069affa171e62af3e2c65a2ee1cb27ecb6c2f
master_replid2:4f07bacde969998356194ad698c6dd7e2f6f7da2
master_repl_offset:380674
second_repl_offset:156702
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1391
repl_backlog_histlen:379284#原主节点重新启动后 -------------------------------------------------------------------
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=xxx.xxx.92.102,port=6379,state=online,offset=537589,lag=1
slave1:ip=xxx.xxx.92.100,port=6379,state=online,offset=537732,lag=0
master_failover_state:no-failover
master_replid:424069affa171e62af3e2c65a2ee1cb27ecb6c2f
master_replid2:4f07bacde969998356194ad698c6dd7e2f6f7da2
master_repl_offset:537875
second_repl_offset:156702
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1391
repl_backlog_histlen:536485
127.0.0.1:6379> 

02节点信息

[root@bigdata03 ~]# /usr/local/redis/bin/redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:xxx.xxx.92.100
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:3210
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:4f07bacde969998356194ad698c6dd7e2f6f7da2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3210
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1433
repl_backlog_histlen:1778# 故障转移后 -------------------------------------------------------------------
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:xxx.xxx.92.101
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:381546
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:424069affa171e62af3e2c65a2ee1cb27ecb6c2f
master_replid2:4f07bacde969998356194ad698c6dd7e2f6f7da2
master_repl_offset:381546
second_repl_offset:156702
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1433
repl_backlog_histlen:380114#原主节点重新启动后 -------------------------------------------------------------------
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:xxx.xxx.92.101
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:556005
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:424069affa171e62af3e2c65a2ee1cb27ecb6c2f
master_replid2:4f07bacde969998356194ad698c6dd7e2f6f7da2
master_repl_offset:556005
second_repl_offset:156702
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1433
repl_backlog_histlen:554573
127.0.0.1:6379> 
2.8. 配置文件变化

原100主节点

# 放行访问IP的限制 多个用空格隔开
# 0.0.0.0 代表无限制
bind 0.0.0.0# 后台启动开启
daemonize yes# 日志存储目录以及日志文件名
logfile "/usr/local/redis/log/redis.log"# rdb数据文件名
dbfilename "dump.rdb"# aof模式开启
appendonly no# aof数据文件名
appendfilename "appendonly.aof"#rdb数据文件和aof数据文件存储目录
dir "/usr/local/redis/data"# 设置密码
requirepass 123456# 从节点访问主节点的密码(必须和requirepass 一致)
masterauth "123456"#从节点只读模式
replica-read-only yes
# Generated by CONFIG REWRITE
pidfile "/var/run/redis.pid"
save 3600 1
save 300 100
save 60 10000
user default on #8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 ~* &* +@all
replicaof xxx.xxx.92.101 6379

变化:最下面添加了主节点信息

原01节点

# 放行访问IP的限制 多个用空格隔开
# 0.0.0.0 代表无限制
bind 0.0.0.0# 后台启动开启
daemonize yes# 日志存储目录以及日志文件名
logfile "/usr/local/redis/log/redis.log"# rdb数据文件名
dbfilename "dump.rdb"# aof模式开启
appendonly no# aof数据文件名
appendfilename "appendonly.aof"#rdb数据文件和aof数据文件存储目录
dir "/usr/local/redis/data"# 设置密码
requirepass 123456# 从节点访问主节点的密码(必须和requirepass 一致)
masterauth "123456"#从节点只读模式
replica-read-only yes# 从节点从属于那个主节点# Generated by CONFIG REWRITE
pidfile "/var/run/redis.pid"
save 3600 1
save 300 100
save 60 10000
user default on #8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 ~* &* +@all

变化:原来配置的主节点信息没了

02节点信息

# 放行访问IP的限制 多个用空格隔开
# 0.0.0.0 代表无限制
bind 0.0.0.0# 后台启动开启
daemonize yes# 日志存储目录以及日志文件名
logfile "/usr/local/redis/log/redis.log"# rdb数据文件名
dbfilename "dump.rdb"# aof模式开启
appendonly no# aof数据文件名
appendfilename "appendonly.aof"#rdb数据文件和aof数据文件存储目录
dir "/usr/local/redis/data"# 设置密码
requirepass 123456# 从节点访问主节点的密码(必须和requirepass 一致)
masterauth "123456"#从节点只读模式
replica-read-only yes# 从节点从属于那个主节点
replicaof xxx.xxx.92.101 6379
# Generated by CONFIG REWRITE
pidfile "/var/run/redis.pid"
save 3600 1
save 300 100
save 60 10000
user default on #8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 ~* &* +@all
2.9. 读写验证
# 登陆redis客户端
/usr/local/redis/bin/redis-cli --user default --pass 123456
#故障转移后的100机器现在为slave节点,可读不可写
[root@bigdata01 redis-6.2.0]# /usr/local/redis/bin/redis-cli --user default --pass 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> set name lisi
(error) READONLY You can't write against a read only replica.
127.0.0.1:6379>
#故障转移后的101机器现在为master节点,可以读写
[root@bigdata02 ~]# /usr/local/redis/bin/redis-cli --user default --pass 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> set name lisi
OK
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> 
#故障转移后的102机器现在为slave节点,可读不可写
[root@bigdata03 ~]# /usr/local/redis/bin/redis-cli --user default --pass 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> set name wangwu 
(error) READONLY You can't write against a read only replica.
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语雀携手Teambition,玩转项目协作与知识管理

在数字化转型的大浪潮中,大量企业都有项目协作与知识管理诉求。Teambition 是一款优秀的项目协作产品,深受众多企业的青睐。语雀则是来自阿里巴巴的一款新品,是知识管理领域里冉冉升起的新星。今年夏天,语雀携手Teambition&#x…

支付宝小程序“开闸放粮”,亿级流量扶持中小商家!

街边小店也有机会登上支付宝首页推荐位了! 9月17日消息,在支付宝开放日活动中,支付宝宣布向小程序商家开放包括主搜热搜榜、首页腰封、首页惠支付频道、首页生活服务频道、花呗频道、会员频道等六大中心化入口,商家通过引导用户扫…

idea 编译Java heap space 内存溢出

解决方案 根据自身的实际情况设置参数大小,我调整到4096就好使了

【PostgreSQL】从零开始:(二十八)数据类型-XML类型

XML XML(可扩展标记语言)是一种用于描述数据的标记语言。它被设计用于传输和存储数据,以及作为不同系统之间进行数据交换的通用格式。XML使用标记来标识数据元素,并使用嵌套的结构来表示数据之间的层次关系。XML具有以下特点&…

避坑!使用 Kubernetes 最易犯的 10 个错误

Kubernetes 作为大规模企业级应用容器编排的首推工具,其为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,本文作者 Marek Bartik 深入分享了 K8s 的避坑宝典,相信会对开发者们大有裨益。作者 | Marek Bartik&…

当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?

本文主要介绍阿里巴巴在大规模生产环境中落地 Kubernetes 的过程中,在集群规模上遇到的典型问题以及对应的解决方案,内容包含对 etcd、kube-apiserver、kube-controller 的若干性能及稳定性增强,这些关键的增强是阿里巴巴内部上万节点的 Kube…

Super详解(重点)

Super详解(重点) super注意点; 1. super调用父类的方法,必须在构造方法的第一个2. super必须只能出现在子类的方法或者构造方法中!3. super和this 不能同时调用构造方法!Vs this: ​ 代表的对象不同: ​…

来了!云栖大会都能看到什么?

盼望着 盼望着 一年一度科技盛宴2019杭州云栖大会 来了! 欢迎你 来自远方的开发者们 今天小云为你偷偷潜入会场 带来一大波“谍照” 一起看云栖 在这儿,感受科技带来的巨大惊喜 平头哥放大招! 人工智能整体性突破! 更有三位男神…

美国 AI 博士一针见血:Python 这样学最容易成为高手!

我见过市面上很多的 Python 讲解教程和书籍,他们大都这样讲 Python 的:先从 Python 的发展历史开始,介绍 Python 的基本语法规则,Python 的 list, dict, tuple 等数据结构,然后再介绍字符串处理和正则表达式&#xff0…

【物联网开发实战】- 设备上云方案详解?

【物联网开发实战】- 如何让设备上云? 物联网开发过程中遇到的第一个棘手问题就是:如何让设备连接上云? 我们以智能洗衣机为例,至少包含:温度/水位等传感器,主控MCU(Microcontroller Unit&…

bash: mysqldump: command not found

文章目录一、问题分析定位二、解决方案2.1. 解决方案12.2. 解决方案22.3. 解决方案3一、问题分析定位 由于mysqldump在mysql/bin目录下面,直接执行此命令,环境变量中没有,找不到的情况 二、解决方案 2.1. 解决方案1 # 进入到mysql的bin目…

方法重写(重点)-->多态

方法重写(重点)–>多态 总结 重写:需要有继承关系,子类重写父类的方法! 1. 方法名必须相同2. 参数列表必须相同3. 修饰符:范围可以扩大:public>Protected>Default>private4. 抛出…

深入解析 Kubebuilder:让编写 CRD 变得更简单

导读:自定义资源 CRD(Custom Resource Definition)可以扩展 Kubernetes API,掌握 CRD 是成为 Kubernetes 高级玩家的必备技能,本文将介绍 CRD 和 Controller 的概念,并对 CRD 编写框架 Kubebuilder 进行深入…

“编程能力差,90%输在了选择上!”CTO:多数程序员都是瞎努力!

在编程的世界里,编程语言就像橱窗里的衣服,琳琅满目。 编程语言实在是太多啦,如C、C、Java、Python、Objective-C和PHP等。这让不少的小白程序员产生选择困难症,到底应该学哪一门编程语言呢?大部分人在面对“你为什么要学这个编…

mysql Slave is not configured or failed to initialize properly. You must at least set --server-id

文章目录1. 问题背景2. 解决方案1. 问题背景 在创建mysql从节点复制链路时,由于虚拟机我是从一个模板复制而来的因此,server-id是一样的。 2. 解决方案 # 编辑/etc/my.cnf vi /etc/my.cnf# 添加如下2行代码 # 此处的server-id,只要不一样即…

Fun 3.0 发布——资源部署、依赖下载、代码编译等功能又又又增强啦!

Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个模板文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考。 3.0 带来的新特性 1.…

sqlite事务模型、性能优化tips、常见误区

0,前言 本文主要介绍sqlite的事务模型,以及基于事务模型的一些性能优化tips,包括事务封装、WAL读写分离、分库分表、page size优化等。并基于手淘sqlite的使用现状总结了部分常见问题及误区,主要集中在多线程的设置、多线程下性能…

企业实战_07_MyCat 搭建Mysql 一主一从复制环境

接上一篇:企业实战_06_MyCat 常用的分片算法 https://gblfy.blog.csdn.net/article/details/118770261 文章目录一、 环境准备1. 主从复制搭建流程2. 服务器分布二、 MySql 主机节点操作如下2.1. 创建数据库2.2. 初始化表结构及数据2.3. 验证2.4. 数据备份2.5. 脚本…

实操来了!一文告诉你如何用 Streamlit 和 Heroku 开发 Web

作者 | AJ Gordon责编 | Carol头图 | CSDN 付费下载于视觉中国出品 | CSDN云计算(ID:CSDNcloud)本文主要介绍如何利用Python的Streamlit库和Heroku云平台来做一个交互式数据分析Web应用。开发环境如下:Windows10系统Anaconda3&am…

instanceof和类型转换

instanceof和类型转换 instanceof:判断一个对象是什么类型 public class Person {public void run(){System.out.println("ss");} }public class Student extends Person {public void go(){System.out.println("gg");}}public class Teacher…