Redis 7.2.x 主从复制+哨兵模式

news2024/11/20 11:38:26
IP操作系统服务版本
192.168.140.153CentOS 7redis-master,sentinel7.2.5
192.168.140.156CentOS 7redis-slave,sentinel7.2.5
192.168.140.159CentOS 7redis-slave,sentinel7.2.5

一、安装Redis + 配置主从复制

参考下面文档:

Redis 7.2.x 主从复制-CSDN博客文章浏览阅读59次。搭建 Redis 7.2.x 主从复制,一主一从https://blog.csdn.net/weixin_44295677/article/details/139475019?spm=1001.2014.3001.5502

二、配置哨兵

1、修改内核参数
vi /etc/sysctl.conf

vm.overcommit_memory = 1

# 0 (默认值): 启发式内存提交策略。内核会尝试猜测进程是否会真正使用它们请求的所有内存。是一个很好的默认设置,允许进程请求大量内存,而实际上可能并不需要这么多。
# 1: 总是允许内存提交。无论物理内存和交换空间是否足够,内核都会允许进程提交内存。会导致在内存不足时,系统无法分配更多的内存,并导致OOM(Out-Of-Memory)被激活,杀死一些进程以释放内存。
# 2: 使用/proc/meminfo中的CommitLimit值来决定是否允许内存提交。如果请求的内存加上当前已提交的内存超过了CommitLimit,那么内存提交会被拒绝。
2、修改配置
cp /opt/redis-7.2.5/sentinel.conf /opt/redis/
vi /opt/redis/sentinel.conf

# 修改内容如下
## 端口
port 26379
## 允许后台运行
daemonize yes
## 进程号存放位置
pidfile "/opt/redis/redis-sentinel.pid"
## 日志级别,如果想要更详细的可以设置成debug
loglevel notice
## 日志存放路径
logfile "/opt/redis/logs/redis-sentinel.log"
## 工作目录
dir "/opt/redis"
## 监听的主节点信息
sentinel monitor mymaster 192.168.140.153 6379 2
## sentinel判断redis主服务器下线所需要的时间,单位毫秒
sentinel down-after-milliseconds mymaster 10000
## redis主服务器故障转移的最大超时时间
sentinel failover-timeout mymaster 60000
## 故障转移时,最多允许几个从服务器同时向新的主服务器转移数据
sentinel parallel-syncs mymaster 2
## 向主服务器认证所需要的密码
sentinel auth-pass mymaster final123
3、创建服务脚本
vi /etc/systemd/system/sentinel.service

[Unit]
Description=Sentinel service
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/redis/bin/redis-sentinel /opt/redis/sentinel.conf --sentinel --daemonize no
PrivateTmp=true
Restart=always

[Install]
WantedBy=multi-user.target
4、启动服务
systemctl daemon-reload

systemctl start sentinel.service

systemctl enable sentinel.service

三、测试

1、主服务器查看 主从复制相关信息

可以看到当前master是192.168.140.153

[root@localhost redis]# redis-cli -h 192.168.140.153
192.168.140.153:6379> auth final123
OK
192.168.140.153:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.140.156,port=6379,state=online,offset=957428,lag=1
slave1:ip=192.168.140.159,port=6379,state=online,offset=957283,lag=1
master_failover_state:no-failover
master_replid:9ec1820323cd826f2955176a75e99dbdfde51f30
master_replid2:2840abf8606e7ea7237bfa1f03225898e634d2a4
master_repl_offset:957428
second_repl_offset:396279
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:97903
repl_backlog_histlen:859526
2、启停主服务器的redis服务
# 停止主服务器的redis服务
systemctl stop redis.service

# 间隔10秒,等待故障转移完成,启动服务
systemctl start redis.service
3、查看sentinel日志

可以看到当前主节点已经转移到192.168.140.159机器上

[root@localhost redis]# tail -f logs/redis-sentinel.log
1460:X 05 Jun 2024 23:17:20.936 # +sdown slave 192.168.140.153:6379 192.168.140.153 6379 @ mymaster 192.168.140.159 6379
4、查看主节点是否转移

在159服务器查看redis主从信息,发现159的角色已经变为master,故障转移成功

[root@localhost redis]# redis-cli -h 192.168.140.159
192.168.140.159:6379> auth final123
OK
192.168.140.159:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.140.156,port=6379,state=online,offset=1074384,lag=0
slave1:ip=192.168.140.153,port=6379,state=online,offset=1074384,lag=0
master_failover_state:no-failover
master_replid:401449cc3f667d6032124da09b2002dbd1a36a52
master_replid2:9ec1820323cd826f2955176a75e99dbdfde51f30
master_repl_offset:1074384
second_repl_offset:967527
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:408285
repl_backlog_histlen:666100

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

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

相关文章

时间处理基础:Rust 的 chrono 库教程

在开发过程中,我们经常有对时间和日期处理的需求。不论是日历应用、日程安排、还是时间戳记录,准确的时间数据处理都是必不可少的。Rust 社区提供的 chrono 库以其强大的功能和灵活的接口,在 Rust 开发者中广受欢迎。本文将简单介绍 chrono 库…

Nature | 百年未变?博士评定机制该改改了!

19世纪初,德国和法国先后开始授予现代科研博士学位。时至今日,大学的科研与教学早已不同于往昔。但惊人的是,获得和评定博士学位的流程却几乎没变。但改革势在必行。 博士生导师可以从其他教育阶段的创新中学到很多东西。 Innovation in PhD…

成功学为何如此迷人……上瘾……

做自己才是唯一的解药,无需在意他人的看法。 写博客8年与人生第一个502万-CSDN博客 题记:我们并非生来强大,但依然可以不负青春。 原本想好好写一下如何制定一个目标并通过一点一滴的努力去实现,这三年反思发现其实写自己的经历并…

计量校准证书和检定证书区别,企业仪器校准要哪种证书好?

很多企业做校准,会要求校准机构出具相关证书,而有时候也会被机构询问,是要做检定还是校准,出具的证书是要校准证书还是检定证书?那么两者有什么区别呢? 1-检测方式不同 首先两种证书是不同检测方式所给的证…

【Java】解决Java报错:UnsupportedOperationException

文章目录 引言1. 错误详解2. 常见的出错场景2.1 不可修改的集合2.2 抽象类和接口的默认实现2.3 不支持的操作 3. 解决方案3.1 使用支持操作的集合3.2 提供具体实现3.3 检查对象类型和能力 4. 预防措施4.1 使用接口而非实现类4.2 编写防御性代码4.3 使用工厂方法创建集合 5. 示例…

如何快速掌握 Java 枚举类型的定义和使用场景!

Java枚举类型(Enum)是一种特殊的类,用于表示一组固定的常量。枚举类型在Java 5中引入,通过 enum 关键字来定义。枚举类型不仅可以使代码更具可读性,还能增加类型安全性并减少错误。 一、枚举类型的定义 枚举类型通过…

大模型训练的10个调试技巧

几年前,Andrej Karpathy 写了一篇关于训练神经网络的很棒的文章。以下是我在实施过程中遵循的一些额外事项,侧重于调试大型语言模型。 NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 -…

程序猿大战Python——流程控制——其他控制语句

for循环 目标:掌握for循环的使用。 与while循环功能类似,for语句也能完成反复多次的执行。 for语法: for 临时变量 in 序列:满足条件时,执行的代码1满足条件时,执行的代码2…… [else:当for循环正常执行结束后&#…

基于PHP+MySQL组合开发的商城小程序源码系统 附带完整的安装代码包以及搭建教程

系统概述 该商城小程序源码系统采用PHP作为后端开发语言,MySQL作为数据库存储引擎,这是一套成熟且广泛应用的技术组合,能够确保系统的稳定性和扩展性。前端部分则利用Vue.js等现代前端框架实现动态交互,保证用户体验的流畅性。 …

Java | Leetcode Java题解之第141题环形链表

题目: 题解: public class Solution {public boolean hasCycle(ListNode head) {if (head null || head.next null) {return false;}ListNode slow head;ListNode fast head.next;while (slow ! fast) {if (fast null || fast.next null) {return…

人工智能对聊天机器人训练数据的“淘金热”可能会耗尽人类编写的文本

人工智能对聊天机器人训练数据的“淘金热”可能会耗尽人类编写的文本 像ChatGPT这样的人工智能系统可能很快就会耗尽让它们变得更聪明的东西——人们在网上写下和分享的数万亿字。 Epoch AI研究集团发布的一项新研究预计,科技公司将在大约十年之交——2026年至203…

SpringBoot + Maven

文章目录 1、Maven2、SpringBoot3、二者之间的联系4、项目的创建 在创建项目之前,肯定要知道他们之间的区别 1、Maven maven是一个跨平台的项目管理工具。它是Apache的一个开源项目,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。 比如说…

cordic IP核中,sin and cos的使用

参考视频:FPGA IP之CORDIC_哔哩哔哩_bilibili FPGA IP之CORDIC使用与仿真_哔哩哔哩_bilibili 一、参数说明 functional selection rotate是旋转,sin and cos是计算这两个三角函数,sinh和cosh是计算双曲正弦和双曲余弦 phase format 对于…

Databricks超10亿美元收购Tabular;Zilliz 推出 Milvus Lite ; 腾讯云支持Redis 7.0

重要更新 1. Databricks超10亿美元收购Tabular,Databricks将增强 Delta Lake 和 Iceberg 社区合作,以实现 Lakehouse 底层格式的开放与兼容([1] [2])。 2. Zilliz 推出 Milvus Lite 轻量级向量数据库,支持本地运行;Milvus Lite 复…

【Go语言】面向对象编程(一):类的定义、初始化和成员方法

面向对象编程(一):类的定义、初始化和成员方法 1 类的定义和初始化 Go 语言的面向对象编程没有 class 、 extends 、implements 之类的关键字和相应的概念,而是借助结构体来实现类的声明,如下是定义一个学生类的方法…

2024年【危险化学品经营单位主要负责人】免费试题及危险化学品经营单位主要负责人证考试

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品经营单位主要负责人免费试题根据新危险化学品经营单位主要负责人考试大纲要求,安全生产模拟考试一点通将危险化学品经营单位主要负责人模拟考试试题进行汇编,组成一套危险化学品经营…

镜舟科技与喆塔科技签署战略合作协议,共拓工业领域数据应用

近日,镜舟科技与喆塔科技正式签署战略合作协议,旨在通过双方的深度合作,共同推动工业领域企业级数据分析与智能制造的融合创新,携手为行业客户提供更加精准、高效的数据驱动解决方案。 镜舟科技 CEO 孙文现与喆塔科技 CEO 赵文政出…

12.文件

知识点一:文件的存取过程 缓冲区的目的:提高存储效率磁盘使用寿命 知识点二:磁盘文件分类 物理上所有的磁盘文件都是二进制存储,以字节为单位顺序存储 逻辑上的文件分类: 文本文件:基于字符编码的文件,如ASCII、UNICO…

04. fastLED像素参考(颜色设置详解)

fastLED像素参考 原文 Overview 概述 There’s two main pixel types in the library - the CRGB class and the CHSV class. CHSV objects have to be converted to CRGB objects before they can be written out. You can also write CHSV objects into the CRGB array an…

QT6 学生管理系统以及登录(QSQLITE数据库)

一、准备工具以及环境 本文采用的是QT Creator6.5.3版本,代码基于C语言,文中所用到的数据库是QSQLITE库。 因为做的是一个简单的学生管理系统,所以只是做到了简单的对数据库进行增删改查等操作,以及一个简单的登录界面。 二、U…