Redis高可用之主从复制及哨兵模式

一、Redis的主从复制

1.1 Redis主从复制定义

主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用;
主从复制实现数据的多级备份,以及读写分离(主服务器负责写,从服务器只能读)

1.2 主从复制流程

(主从复制推荐使用AOF)

1)若启动一个slave机器进程,则它会向Master机器发送一个sync command命令,请求同步连接

2)无论是第一次连接还是重新连接,Master机器都会启动一个后台进程,将数据快照保存到数据文件中执行bgsave操作),同时Master还会记录修改数据的所有命令并缓存在数据文件中

3)后台进程完成缓存操作之后,Master机器就会向slave机器发送数据文件,slave端机器将数据文件保存到硬盘上,然后将其加载到内存中,接着Master机器就会将修改数据的所有操作一并发送给slave端机器若slave出现故障导致宕机,则恢复正常后会自动重新连接

4)Master机器收到slave端机器的连接后,将其完整的数据文件发送给slave端机器,如果Master同时收到多个slave发来的同步请求,则Master会在后台启动一个进程以保存数据文件,然后将其发送给所有的slave端机器,确保所有的slave端机器都正常

1.3 主从复制实操(一主二从)

主从复制架构

20.0.0.91:MASTER
20.0.0.92:SLAVE1
20.0.0.93:SLAVE2

关闭防火墙

systemctl stop firewalld
setenforce 0

修改master配置文件

vim /etc/redis/6379.conf 
--70--
bind 0.0.0.0
#修改监听地址为0.0.0.0,允许所有网段访问--137--
daemonize yes
#开启守护进程,后台启动 --172--
logfile /var/log/redis_6379.log
#指定日志文件存放目录--264--
dir /var/lib/redis/6379
#指定工作目录--700--
appendonly yes
#开启AOF持久化功能/etc/init.d/redis_6379 restart

修改slave配置文件

#salve1、slave2相同操作
vim /etc/redis/6379.conf 
--70--
bind 0.0.0.0
#修改监听地址为0.0.0.0,允许所有网段访问--137--
daemonize yes
#开启守护进程,后台启动 --172--
logfile /var/log/redis_6379.log
#指定日志文件存放目录--264--
dir /var/lib/redis/6379
#指定工作目录--288--
replicaof 20.0.0.91 6379
#指定要同步的Master节点的IP和端口--700--
appendonly yes
#开启AOF持久化功能
​​
/etc/init.d/redis_6379 restart  #重启redis
ss -natp | grep redis      #查看主从服务器是否已建立连接

测试

测试主从复制以及读写分离

 

测试slave断开时,master写入数据,slave恢复正常后能否复制

二、Rdis的哨兵模式

在主从复制的基础上,哨兵引入了主节点的自动故障转移。

2.1 哨兵模式的组成

哨兵节点: 哨兵系统由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据。

数据节点: 主节点和从节点都是数据节点。

2.2 哨兵模式的原理

哨兵是一个分布式系统,部署在每一个redis的节点之上,用于在主从结构之间,对每一台redis的服务进行监控。

1).监控: 哨兵会不断地检查主节点和从节点是否运作正常。
每个哨兵节点每隔一秒,通过ping命令方式,检测主从之间的心跳线。
主节点在一定时间内没有回复或者回复了错误的消息,此时哨兵就会主观地认为主节点下线,
超过半数的哨兵节点认为主节点下线时,才会将主节点认为客观下线。

2).自动故障转移: 当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其它从节点改为复制新的主节点。
主节点的选举原则:
已经下线的从节点不会被选为主节点;
选择配置文件当中优先级最高的从节点作为主节点(replica-priority 100);
选择一个复制数据最完整的从节点作为主节点。
(如何实现切换:主节点出现故障时,从节点通过投票的方式选择一个新的master )

3).通知(提醒): 哨兵可以将故障转移的结果发送给客户端。

2.3 哨兵模式实操

修改哨兵节点配置文件

#所有节点相同操作
vim /opt/redis-5.0.7/sentinel.conf
--17--
protected-mode no
#取消注释,关闭保护模式--21--
port 26379
#Redis哨兵默认的监听端口--26--
daemonize yes
#指定sentinel为后台启动--36--
logfile "/var/log/sentinel.log"
#指定日志文件存放路径--65--
dir "/var/lib/redis/6379"
#指定数据库存放路径--84--
sentinel monitor mymaster 20.0.0.91 6379 2 
#指定该哨兵节点监控20.0.0.91:6379这个主节点,该主节点的名称是mymaster。
#最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
​
--113--
sentinel down-after-milliseconds mymaster 30000
#判定服务器down掉的时间周期,默认30000毫秒(30秒)--146--
sentinel failover-timeout mymaster 180000
#同一个sentinel对同一个master两次failover之间的间隔时间(180秒)

启动哨兵模式并查看哨兵状态

#启动三台节点上的哨兵模式
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &#在哨兵节点查看监控状态
[root@localhost ~]# redis-cli -p 26379 info Sentinel

模拟故障测试

#Master
ps -elf | grep redis
kill -9 pid号  #Master节点上redis-server的进程号
netstat -natp | grep redis

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

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

相关文章

学习Python和深度学习基础

1. Python基础知识 学习Python的基本语法、数据类型、控制流等基础知识。掌握常用的Python库,如NumPy和Pandas,它们在深度学习中经常被使用。 2. 深度学习基础 了解深度学习的基本概念,包括神经网络、前向传播、反向传播等。学习深度学习框…

Disasm 示例程序改写和适配

Disasm 示例程序改写和适配 简介 用途 可用于反汇编x86的二进制汇编文件&#xff0c;展示出来内部的反汇编原理和流程。原由 最近在看<<C 反汇编与逆向分析技术揭秘>>这本书籍&#xff0c;在第一张的简介中我们可以看到ProViem这个反汇编开源工具的内容&#x…

无线收发器芯片Si24R1 兼容替代NRF24L01

Si24R1是一款工作在2.4-2.5GHz世界通用ISM频段的单片无线收发器芯片。无线收发器包括&#xff1a;频率发生器、集成嵌入式ARQ基带协议引擎、功率放大器、晶体振荡器调制器、解调器。输出功率频道选择和协议的设置可以通过SPI接口进行设置。是目前2.4G无线射频芯片中&#xff0c…

Java 文件处理工具类详解

在软件开发中,文件处理是一个常见的任务,我们经常需要读取、写入和管理文件。为了更便捷地处理文件相关操作,我们编写了一个 FileUtils 工具类,提供了一些有用的文件处理方法。 工具类介绍 FileUtils 工具类包含了一些常用的文件处理方法,主要功能如下: 获取统一的文件…

Git本地库操作

对本地库的操作很少&#xff0c;我们学习1~6节即可&#xff0c;其他了解下。我们可以在idea中完成对本地库还有远程库的操作&#xff0c;可视化界面用起来更加舒适而且也不会混淆。 1. Git概述 Git 是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小…

[个人笔记] Windows配置OpenSSH免密连接

Windows - 运维篇 第七章 Windows配置OpenSSH免密连接 Windows - 运维篇系列文章回顾Windows配置OpenSSH免密连接参考来源 系列文章回顾 第一章 迁移WinSrv系统到虚拟机 第二章 本地安全策略xcopy实现实时备份文件夹内容 第三章 利用cmd自带的icacls命令导出文件的ACL权限 第四…

JavaScript启动本地应用程序

JavaScript调起本地应用程序 以下内容&#xff0c;自定义部分我也还未经过实际验证&#xff0c;酌情查看。 文章目录 JavaScript调起本地应用程序确定协议调用协议传参自定义写入协议获取参数 在浏览器中通过 JavaScript调起本地应用程序的一个可行方法就是 通过协议调起。 …

git 文件被莫名其妙的或略且无论如何都查不到哪个.gitignore文件忽略的

先说解决办法&#xff1a;git check-ignore -v [文件路径] 这个命令会返回一个忽略规则&#xff0c;以及该规则在哪个文件中定义的&#xff0c;该规则使得指定的文件被忽略。 1.遇到的问题 同项目组&#xff0c;其他同学都可以正常的提交.meta文件&#xff0c;我的提交就出现以…

Oracle通过MyBatis执行批量插入与更新问题

最近看一个老项目&#xff0c;使用的Oracle数据库&#xff0c;发现要使用MyBatis执行批量操作还是不太一样。 下面我们来看一下&#xff0c;Oracle数据库&#xff0c;如何使用MyBatis来批量插入和更新。 批量插入 因为Oracle和MySQL的insert还不太一样&#xff0c;Oracle不能…

canal本地安装和使用

1、组件版本 canal.deployer-1.1.7 kafka_2.13-2.6.0 jdk8 apache-zookeeper-3.6.0-bin mysql5.7 2、解压canal.deployer-1.1.7 2.1、修改canal.properties配置文件 ##改为kafka canal.serverModekafka## 改为instance canal.destinations instance## 改为true&#x…

STM32——独立看门狗

文章目录 一、看门狗基础介绍&#xff08;一&#xff09;看门狗概述&#xff1a;&#xff08;二&#xff09;看门狗的作用&#xff1a;&#xff08;三&#xff09;看门狗的原理&#xff1a;&#xff08;四&#xff09;为什么需要使用看门狗来提高系统的可靠性&#xff1a;&…

Linux 中的 rm 命令及示例

Linux 中的 rm 命令及示例 rm命令是Linux中最常见、最基础的命令之一。即使您对 Linux 的使用经验有限&#xff0c;您也很可能听说过它。该命令的主要目的是删除文件和目录。使用此命令删除文件和目录无法撤消。 这意味着您应该谨慎使用此命令&#xff0c;因为如果没有备份&am…

振南技术干货集:制冷设备大型IoT监测项目研发纪实(5)

注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 &#xff08;制冷设备对于便利店为何如何重要&#xff1f;了解一下你所不知道的便利店和新零售行业。关 于电力线载波通信的论战。&#xff09; 2、电路设计 2.1 防护电路 2.1.1 强电防护…

Colmap三维重建详解与使用方法

图片捕获过程&#xff0c;请遵循以下指导方针以获得最佳重建结果: 1 捕捉具有良好纹理的图像。避免使用完全没有质感的图片(例如&#xff0c;白色的墙或空桌子)。如果场景本身没有足够的纹理&#xff0c;你可以放置额外的背景对象&#xff0c;如海报等。 2 在相似的照明条件下…

@Value和@Scheduled注解简介

&#xff08;1&#xff09;SpringBoot读取配置文件&#xff0c;使用Value注解获取数据&#xff0c;中文乱码问题解决办法 new String(xxx.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8) &#xff08;2&#xff09;Scheduled注解 例如&#xff0c;Scheduled(…

前端处理返回数据为数组对象且对象嵌套数组并重名的数据,合并名称并叠加数据

前端处理返回数据为数组对象且对象嵌套数组并重名的数据&#xff0c;合并名称并叠加数据 var newList[]; var table{}; var dataObj{}; var finalList[]; var tableData[{brName:营业部,dateStr:2023-11-23,tacheArr:[{dealCnt:20,tacheName:奔驰}]},{brName:营业部,dateStr:2…

TypeError: Cannot read property ‘sendpost‘ of undefined

箭头函数指向问题&#xff0c;定义let that this 解决

大宽带服务器有什么优势?

大宽带服务器有什么优势&#xff1f; 什么是大带宽服务器&#xff1f;从属性上看&#xff0c;大宽带可以分为G口大带宽、万兆大带宽等&#xff0c;从线路上看&#xff0c;可以分为电信、移动、联通等&#xff0c;从地域属性看&#xff0c;可以分为国内宽带、国际宽带。大宽带是…

如何活跃谷歌开发者账号,增加账号的权重和真实性,从而延长应用在线时长?

众所周知&#xff0c;每个谷歌开发者账号都有一个初始权重&#xff0c;而权重的高低会影响到账号的稳定性和真实性&#xff0c;从而影响应用上架的成功率和应用在线时长。 关于提高谷歌账号权重、活跃度及稳定性&#xff0c;以下的方法和建议可供参考&#xff1a; 1、社区活动…

外设——CAN总线收发器TJA1043

目录 1. 引脚 2. 工作模式 3. 5种模式和7种状态标识的理解和使用 1. 引脚 2. 工作模式 该收发器相较于普通收发器&#xff0c;引脚多了几个&#xff0c;就是功能等多了。TJA1043支持五种操作模式&#xff0c;就是通过控制引脚STB_N和EN来原则。五种模式&#xff1a; 正常模式…