Redis:主从复制_通过此功能实现对内存上的数据更好的保护
什么是主从复制?
简单的意义上来讲就是一个主人带着几个奴隶,奴隶的全部都是主人给他的,刚开始的时候奴隶是一无所有,是主人将自己的一部分给到奴隶了。因此奴隶翻身了,变得有钱了,也就是有一定价值了,但是主人能够控制奴隶。能让变得很有money,也能让它变得一无所有。
主从复制,是指将一台 Redis 服务器(主人)的数据,复制到其他的 Redis 服务器(奴隶)
主人服务器被称为主节点(英文名叫:master / leader),奴隶称为从节点(slave / follower)。
注意:这里的复制是单向的,只能够从主节点复制数据到子节点
主节点master主要是以写为主,子节点slave主要一读为主
主页点可以拥有多个子节点,但是子节点却只能拥有一个主节点
在通常的情况下,每个Redis服务器都是主节点
为什么要使用主从复制?
1:数据冗余:它可以实现数据的热备份,是持久化的一种数据方式
2:故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复。这也是一种服务的冗余。
3:负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务,分担服务器负载。尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高 Redis 服务器的并发量。
4:高可用:主从复制是哨兵和集群能够实施的基础,因此说主从复制是 Redis 高可用的基础。
一般来说,要将 Redis 运用于工程项目中,只使用一台 Redis 是万万不能的,原因如下:
-
结构上:单个 Redis 服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大。
-
容量上:单个 Redis 服务器内存容量有限,一般来说,单台 Redis 最大使用内存不应该超过 20G。
环境搭建
搭建集群环境
复制几个配置文件
[root@localhost myc]# ls
redis79.conf redis80.conf redis81.conf redis82.conf
这四个文件,一个是主三个是从
每个几点都有自己端口号和配置
修改配置文件
redis79.conf
一:端口号
2: 开启后台运行
3:修改持久化RDB文件名称
4:修改日志文件名称
5:修改pid文件名称
其他的三个配置文件也是如此
redis6380.conf
daemonize yes
port 6380
pidfile /var/run/redis_6380.pid
logfile "6380.log"
dbfilename dump6380.rdb
redis6381.conf
daemonize yes
port 6381
pidfile /var/run/redis_6381.pid
logfile "6381.log"
dbfilename dump6381.rdb
redis6382.conf
daemonize yes
port 6382
pidfile /var/run/redis_6381.pid
logfile "6382.log"
dbfilename dump6382.rdb
打开4个客户端分
在各个客户端界面,通过4个配置文件启动redis服务
页面一:
[root@localhost redis]# ./bin/redis-server ./myc/redis79.conf
页面二:
[root@localhost redis]# ./bin/redis-server ./myc/redis80.conf
页面三:
[root@localhost redis]# ./bin/redis-server ./myc/redis81.conf
页面四:
[root@localhost redis]# ./bin/redis-server ./myc/redis82.conf
看一下是否生成日志文件
查看开启的服务
环境搭建完成
前面有一句话提到过每台redis服务器都是主节点
登录不同端口的客户端,查看一下信息是否为主节点
79端口:主节点
代码含义:
127.0.0.1:6379> info replication 查看主从复制信息
# Replication
role:master 角色为主节点
connected_slaves:0 连接的子节点个数为0
master_failover_state:no-failover //剩下的都是一些配置信息
master_replid:aacf4caa93481ac43819eebbb266d8230b85d34f
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
查看其他节点的主从复制信息,都与79端口配置相同
一主三从
默认的配置为一主三从
主节点不需要进行配置,只需要配置子节点即可,子节点配置也很简单,只需要找到靠山就行
对安装的配置进行配置,一主(79端口号)三从(80,81,82)端口号
认主:
127.0.0.1:6380> SLAVEOF 127.0.0.1 6379 80端口认主成功
OK
127.0.0.1:6380>
查看主从复制配置信息
80端口:
127.0.0.1:6380> INFO replication
# Replication
role:slave 角色为从机
master_host:127.0.0.1 主节点的ip
master_port:6379 主节点的端口号
master_link_status:up
master_last_io_seconds_ago:8
master_sync_in_progress:0
slave_read_repl_offset:84
slave_repl_offset:84
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:a2634fdf22a44fd46f3e73f78f0abed72b78b35e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:84
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:15
repl_backlog_histlen:70
127.0.0.1:6380>
查看主节点配置信息:
127.0.0.1:6379> INFO replication
# Replication
role:master 角色为主节点
connected_slaves:1 一个子节点
slave0:ip=127.0.0.1,port=6380,state=online,offset=350,lag=1 子节点配置信息
master_failover_state:no-failover
master_replid:a2634fdf22a44fd46f3e73f78f0abed72b78b35e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:350
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:350
127.0.0.1:6379>
接下来将其他的两个子节点进行认主
127.0.0.1:6381> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6381>127.0.0.1:6382> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6382>
查看主节点主从复制配置信息
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:3 三个子节点
slave0:ip=127.0.0.1,port=6380,state=online,offset=588,lag=1 子节点配置信息
slave1:ip=127.0.0.1,port=6381,state=online,offset=588,lag=1
slave2:ip=127.0.0.1,port=6382,state=online,offset=588,lag=0
master_failover_state:no-failover
master_replid:a2634fdf22a44fd46f3e73f78f0abed72b78b35e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:588
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:588
127.0.0.1:6379>
这里的主从复制配置是通过命令行进行配置的,这只是暂时的,具体的配置是通过配置文件进行配置的。
打开redis80.conf配置文件
配置修改为
replicaof 127.0.0.1 6379
只需要将三个从节点的配置文件配置成这样即可。
在主节点的进行写的操作:创建一个key
通过从机是否能够查看主节点创建的key?
前面就提到过,主节点的主要功能为写操作,而子节点的主要的功能为读操作,所以子节点是一定义访问主节点创建的内容,如果子节点没有访问到主节点创建的内容,说明您的配置出现了问题。
子节点1:能够访问到主节点创建的key值,但是子节点的权限只有读的权限,却没有写的权限,,所以当子节点创建key时;就会报错read only 只有读的权限。
其他的节点也是如此,这里就不进行一一展示了。
如果当主机出现了问题(宕机)等问题,导致主节点断掉了,会出现什么状况???
断掉主节点
子节点:正常使用,与主节点没断掉一样,对他没有任何的影响
查看配置:显示主节点关机,关于主从复制的配置并没有发生任何的变化
主节点重连:保留宕机前创建的key值,因为子节点保留主节点的内容,并且能够正常使用
重连后,关于主从复制的内容,并没有发生任何改变。正常使用
那如果子节点宕机了呢?
1:保留之前主节点创建的内容
2:重新启动后,身份发生了变化,不在是从机,而变成主机,与前面的主机没有了任何的关系
3:宕机后,如果主机创建了新的内容,宕机的子节点不会获取到,原因为2
4:身份转变为主机拥有主节点的所有权限
层层链路
按照下图进行配置
79端口号:只有一个子节点,本身角色为主节点
80端口号:它的主节点为79端口号,并且它拥有一个端口号为81的子节点,它的身份为子节点
81端口号:与80端口的配置差不多,除了主节点和子节点不同,剩下的都差不多
82端口号:本身角色为字节点,拥有一个主节点
如果其中一个,假设80端口号闹独立,想要当老大不想依附在任何人身上,通过命令该怎么实现?
127.0.0.1:6380> SLAVEOF no one
OK
80端口号独立,要当老大
角色为主节点,连接的子节点还是之前的那一个,小弟还是那个小弟
查看一下79端口的配置:
小弟给别人走了,光杆司令
当然也可以重新认主,还是给初次认主一样即可。
注意:上面关于主从复制的命令行代码都是暂时的,重新启动,所有的配置的都会丢失,如果想要永久的配置,从开启服务的配置文件进行配置,前面提到过。
相关文章:

Redis:主从复制_通过此功能实现对内存上的数据更好的保护
什么是主从复制? 简单的意义上来讲就是一个主人带着几个奴隶,奴隶的全部都是主人给他的,刚开始的时候奴隶是一无所有,是主人将自己的一部分给到奴隶了。因此奴隶翻身了,变得有钱了,也就是有一定价值了&…...

LoRA:大模型的低秩自适应微调模型
对于大型模型来说,重新训练所有模型参数的全微调变得不可行。比如GPT-3 175B,模型包含175B个参数吗,无论是微调训练和模型部署,都是不可能的事。所以Microsoft 提出了低秩自适应(Low-Rank Adaptation, LoRA),它冻结了预…...

拼多多买家如何导出“个人中心”订单信息
经常在拼多多买东西,有时候需要把订单的物流信息导出来,方便记录和统计。现介绍如何使用dumuz工具来实现批量下载拼多多订单。 应用功能描述 模拟人工操作拼多多"个人中心-我的订单”订单网页,批量查询获取拼多多自己买的商品的订单数…...

11.计算机基础-计算机网络面试题—基础知识
本文目录如下: 计算机基础-计算机网络 面试题一、基础知识简述 TCP 和 UDP 的区别?http 与 https的区别?Session 和 Cookie 有什么区别?详细描述一下 HTTP 访问一个网站的过程?https 是如何实现加密的?URL是什么&…...
cs109-energy+哈佛大学能源探索项目 Part-1(项目背景)
1、项目概况 1.1 背景和动机 建筑能源性能的问题现在已经成为建筑业主极为关注的问题,因为这直接转化为成本。根据美国能源部的数据,建筑物消耗了美国全部能源的约40%。一些州和市政府采取了建筑节能目标,以减少城市及区域乃至全球的空气污…...
ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用
ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用 1. 摄像头传感器与数据采集(Camera Sensor and Data Acquisition)1.1 数字摄像头传感器基础(Basics of Digital Camera Sensors)1.1.1 传感器类型&am…...
Fixed Function Shader
Properties 属性 Shader语法不区分大小写 基础的数据类型 如何定义一个属性 属性要在"Properties{}"代码块中定义 Properties{_Color("Main Color",Color) (1,1,1,1)_Shininess("Shininess",range(0,8)) 4_MainTex("MainTex",2D…...

HTML- 标签学习之- 列表、表格
无序列表/有序列表: 标签组成( 无序ul 有序 ol ) -> li 父子级标签, ul只能包含li标签, li标签可以包含任意内容。 自定义列表 dl :自定义列表的整体,用于包裹dt/dd 标签dt:自定义列表主题dd:自定义列表的针对主题的…...

Canal搭建 idea设置及采集数据到kafka
Canal GitHub:https://github.com/alibaba/canal#readme 实时采集工具canal:利用mysql主从复制的原理,slave定期读取master的binarylog对binarylog进行解析。 canal工作原理 canal模拟MySQL slave的交互协议,伪装自己为MySQL slav…...

CentOS7搭建伪分布式Hadoop(全过程2023)
##具体操作目录## 1.配置静态ip2.关闭防火墙3.修改主机名为 *master* ,并重启虚拟机vi /etc/hostname 4.修改主机名与ip映射5.设置SSH免密登录6.安装配置java环境----------------------正式Hadoop配置1.移动安装包到合适位置2.解压安装包并重命名3.配置环境变量4.修…...

Linux中文件描述符fd和文件指针filp的理解
简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。 文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件…...
CSS color中常用英文色值
常用颜色英文 red green blue magenta yellow chocolate black aquamarine lime fuchsia brass azure brown bronze deeppink aliceblue gray copper coral feldspar orange orchid pink plum quartz purple aliceblue antiquewith blanchedalmond…...

Springboot idea 中 maven配置问题,找不到依赖:Could not find artifact xxxx
现象:当我们从代码仓拉取新项目时,从该项目的开发同事拿到其maven的settings文件,作为项目的maven配置,为了是能找到工程中所依赖的包,能从远程仓下载下来。 然后本地仓的包,也从同事那边拷贝一份过来&…...

编译原理笔记(一)引论
文章目录 1.什么是编译程序2.编译过程和编译程序的结构2.1.编译过程概述2.2.编译程序的结构2.3.编译阶段的组合 3.解释程序和一些软件工具3.1.解释程序3.2.处理源程序的软件工具 4.PL/0语言编译系统 学习总结:这一部分是编译原理的绪论部分内容,对编译程…...

C++ 类和对象下 [补充]
文章目录 友元内部类内部类是外部类的天生友元 匿名对象匿名对象的特性 拷贝对象时的一些编译器优化函数返回值临时空间的存储位置返回值临时空间具有常性 标题相同和不同类型 需要 临时空间 友元 友元函数 重载operator<< 输出自定义类型 比如日期类的这个重载ÿ…...

[CTF/网络安全] 攻防世界 PHP2 解题详析
[CTF/网络安全] 攻防世界 PHP2 解题详析 index.php.phps扩展名姿势 翻译:你能给这个网站进行身份验证吗? index.php index.php是一个常见的文件名,通常用于Web服务器中的网站根目录下。它是默认的主页文件名,在访问一个网站时&am…...

图神经网络:(节点分类)在Cora数据集上动手实现图神经网络
文章说明: 1)参考资料:PYG官方文档。超链。 2)博主水平不高,如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook。超链。提取码8888。 文章目录 代码实操1:GCN的复杂实现代码实操2:GCN的简单实现…...

RabbitMQ应用问题——消息补偿机制以及代码示例
RabbitMQ应用问题——消息补偿机制以及代码示例 RabbitMQ应用问题 消息可靠性的保障 消息补偿机制 详细说明 这里使用了简单的代码进行演示,订单的消费者没有写,在订单的消费同时,发送一条增加积分消息到积分队列。 详细流程途中都有注明…...
量化特征贡献度函数:feature_importances_函数/LGBMClassifier/XGBClassifier
feature_importances_是scikit-learn机器学习库中许多模型对象的属性,在训练模型之后调用该属性可以输出各个特征在模型中的重要性。 示例代码: from sklearn.ensemble import RandomForestRegressor from sklearn.datasets import make_regression# 生…...

总结JVM重要知识点
一.类加载和创建对象的过程 1.类加载 1.编译 : 将源码文件(.java)编译成JVM可以解释的.class文件 . 语法分析>语义分析>注解处理 , 生成class文件 2.加载 : 装载 : 字节码本来存储在硬盘上 , 需要运行时 , 有类加载系统负责将类的信息加载到内存中(方法区) , 使用的是类…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...