当前位置: 首页 > news >正文

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<< 输出自定义类型 比如日期类的这个重载&#xff…...

[CTF/网络安全] 攻防世界 PHP2 解题详析

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

图神经网络:(节点分类)在Cora数据集上动手实现图神经网络

文章说明&#xff1a; 1)参考资料&#xff1a;PYG官方文档。超链。 2)博主水平不高&#xff0c;如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook。超链。提取码8888。 文章目录 代码实操1&#xff1a;GCN的复杂实现代码实操2&#xff1a;GCN的简单实现…...

RabbitMQ应用问题——消息补偿机制以及代码示例

RabbitMQ应用问题——消息补偿机制以及代码示例 RabbitMQ应用问题 消息可靠性的保障 消息补偿机制 详细说明 这里使用了简单的代码进行演示&#xff0c;订单的消费者没有写&#xff0c;在订单的消费同时&#xff0c;发送一条增加积分消息到积分队列。 详细流程途中都有注明…...

量化特征贡献度函数:feature_importances_函数/LGBMClassifier/XGBClassifier

feature_importances_是scikit-learn机器学习库中许多模型对象的属性&#xff0c;在训练模型之后调用该属性可以输出各个特征在模型中的重要性。 示例代码&#xff1a; from sklearn.ensemble import RandomForestRegressor from sklearn.datasets import make_regression# 生…...

总结JVM重要知识点

一.类加载和创建对象的过程 1.类加载 1.编译 : 将源码文件(.java)编译成JVM可以解释的.class文件 . 语法分析>语义分析>注解处理 , 生成class文件 2.加载 : 装载 : 字节码本来存储在硬盘上 , 需要运行时 , 有类加载系统负责将类的信息加载到内存中(方法区) , 使用的是类…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理&#xff1a;检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目&#xff1a;RankRAG&#xff1a;Unifying Context Ranking…...