【从0到1进阶Redis】主从复制

news2024/9/22 5:26:40

1、概念

主从复制,是指将一个台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能有主节点到从节点。Master以写为主,Slave以读为主。
默认情况下,每台 Redis 服务器都是主节点;且一个主节点可以有多个从节点(或者没有从节点),但一个从节点只能有一个主节点。(类似小黄人,小黄人(从节点)只会跟随一个Boss(主节点),当Boss宕机,就会寻找追随新的Boss)

2、主从复制的作用主要包括:

1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
2、故障恢复:当主节点出现问题时,可以有从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
3、负载均衡:在主从复制的基础上,配合读写分离,可以有主节点提供写服务,由从节点提供读服务(即写 Redis 数据时应用连接主节点,读 Redis 数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载。可以大大提高 Redis 服务器的并发量。
4、高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制时 Redis 高可用的基础。

一般来说,要将 Redis 运用于工程项目中,只使用一台 Redis 是万万不能的,原因如下:
1、从结构上,单个 Redis 服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;
2、从容量上,单个 Redis 服务器内容容量有限,就算一台 Redis 服务器内存容量为256G,也不能将所有内存用作 Redis 存储内存,一般来说,单台 Redis 最大使用内存不应该超过20G。
电商网站上的商品,一般都是一次上传,无数次浏览的,说专业点就是“多读少写”。
对于这种场景,我们可以使用如下这种结构:
在这里插入图片描述

3、配置

只配置从库,不用配置主库。
这里我们测试配置一主二从。

在没有配置主从复制之前,我们先看一下配置信息

info replication 查询当前库信息

### redis-6379.conf

127.0.0.1:6379> info replication	# 查询当前库信息
# Replication
role:master	# 角色 主机master
connected_slaves:0	# 当前连接从机个数 0
master_replid:89f39314020994147d9efb674b44c30c79cc1065
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

Redis 是通过配置文件启动的,我们需要配置一主二从,那么就需要启动3个 Redis 端口。

我们先复制3个配置文件
在这里插入图片描述
然后简单配置一下各配置文件

### redis-6379.conf

port 6379	# 端口
daemonize yes	# 打开后台运行
pidfile /var/run/redis/redis-server_6379.pid	# pid文件名
logfile /var/log/redis/redis-server_6379.log	# 日志文件名
dbfilename dump_6379.rdb	# rdb 文件名
### redis-6380.conf

port 6380	# 端口
daemonize yes	# 打开后台运行
pidfile /var/run/redis/redis-server_6380.pid	# pid文件名
logfile /var/log/redis/redis-server_6380.log	# 日志文件名
dbfilename dump_6380.rdb	# rdb 文件名
### redis-6381.conf

port 6381	# 端口
daemonize yes	# 打开后台运行
pidfile /var/run/redis/redis-server_6381.pid	# pid文件名
logfile /var/log/redis/redis-server_6381.log	# 日志文件名
dbfilename dump_6381.rdb	# rdb 文件名

修改完成之后,启动我们的3个 Redis 服务器。可以看到三个 Redis 进程
在这里插入图片描述

4、一主二从

默认情况下,每台Redis 服务器都是主节点;我们一般情况下只用配置从机就好了。
一主二从我们设置主库为端口6379,从库为6380和6381。所以我们去6380和6381端口上配置就好,主机不用配置。
在这里插入图片描述

测试

未配置前,各服务都为主机:
在这里插入图片描述

使用 slaveof host port 命令用80和81上连接主机

### redis-6380.conf
127.0.0.1:6380> slaveof 127.0.0.1 6379
OK

### redis-6381.conf
127.0.0.1:6381> slaveof 127.0.0.1 6379
OK

再次查看主从机配置信息:
在这里插入图片描述
我们也可以使用 slaveof no one 让自己变回主机
在这里插入图片描述
注意!!!
真实的主从配置应该在配置文件中配置,这样的话才是永久的。我们这里使用命令配置,是暂时的,关机就会失效。

配置文件中只需改如下就可以,如果主机设置了密码需要配置上:
在这里插入图片描述

细节

主机可以写,从机不能写只能读,主机中的所有信息和数据,都会自动被从机保存。

主机写:
在这里插入图片描述

从机只能读取内容,当执行写操作的时候会报错:
在这里插入图片描述

复制原理

Slave 启动成功连接到 Master 后会发送一个 sync 命令。
Master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,Master 将传送整个数据文件到 Slave,并完成一次完全同步。
全量复制:而 slave 服务在接收到数据库文件数据后,将其存盘并加载到内存中。
增量复制:Master 继续将新的所有收集到的修改命令依次传给 Slave ,完成同步。
但是只要是重新连接Master ,一次完全同步(全量复制)将被自动执行。

下一篇:【从0到1进阶Redis】主从复制 — 主从机宕机测试

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

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

相关文章

计算机网络生成树协议介绍与实践

生成树协议 1.环路 二层环路:数据链路层,交换机(二层设备)通过线路连接环状。即物理成环并且没有开启防环协议。 危害:广播风暴:交换机将未知帧广播,收到后的交换机继续广播,不断…

C语言--递归

曾经有一个段子:上大学时,我们的c语言老师说:学c时,如果有50%的同学死在了循环上面,那么就有90%的同学死在了递归上面。接下来,就来看看递归是怎么个事? 一.递归的介绍 递归是指一个函数直接或…

CV09_深度学习模块之间的缝合教学(4)--调参

深度学习就像炼丹。炉子就是模型,火候就是那些参数,材料就是数据集。 1.1 参数有哪些 调参调参,参数到底是哪些参数? 1.网络相关的参数:(1)神经网络网络层 (2)隐藏层…

偶数位的数c++

题目描述 给你两个整数 l,r,求 l∼r 范围内有多少个位数为偶数的数。 输入 一行两个整数 l,r。 输出 输出位数为偶数的数的数量。 样例输入 5 15样例输出 6 提示 样例解释 10,11,12,13,14,15 位数为偶数,都是两位数。 数据规模与约定 对于 1…

过滤器、监听器、拦截器

目录 一、 主要内容 二、 过滤器 2.1 介绍 2.2 实现 MyFilter01 MyFilter02 MyServlet01 MyServlet02 2.3 说明 2.4 执行顺序 1. 使用 web.xml 2. 使用注解和Order 3. 使用FilterRegistrationBean 2.5字符乱码 三、监听器 3.1介绍 3.2实现 3.3在线人数统计 O…

克洛托光电再度合作福晶科技,高精度光学镜头装调仪正式交付

近日,苏州东方克洛托光电技术有限公司(下称“克洛托光电”)高精度光学镜头装调仪正式交付于福建福晶科技股份有限公司,研发人员在现场完成设备安装调试并介绍使用方法。据悉,这已是双方第二次展开合作。 前沿产品力助推…

企业知识库用不起来?试一下用HelpLook同步钉钉组织架构

提升企业管理和协同效率已成为增强竞争力的关键。企业通过知识管理,搭建内部知识库,将分散的经验和知识转化为系统化流程,减少重复解释,促进业务高效运作。这为企业提供了坚实的基础。 企业知识库面临的挑战 尽管传统知识库内容丰…

银河麒麟高级服务器操作系统V10加固操作指南

1:检查系统openssh安全配置: 2:检查是否设置口令过期前警告天数: 3:检查账户认证失败次数限制: 修改/etc/pam.d/system-auth文件中deny的参数即可 4:检查是否配置SSH方式账户认证失败次数限制:

github相关命令

如果我们要从 GitHub 上拉取一个项目到本地,进行修改并上传回去,通常需要以下步骤: 1. 克隆远程仓库到本地 使用 git clone 命令将 GitHub 上的项目克隆到本地: (网址示例如下所示) git clone https://github.com/你的…

多旋翼无人机挂载多功能抛投器技术详解

多旋翼无人机,作为一种具有高效、灵活、稳定等特性的无人驾驶飞行器,在现代社会的多个领域得到了广泛应用。其中,挂载多功能抛投器技术,使得无人机在物资投送、救援等任务中发挥出更加重要的作用。以下将详细介绍多旋翼无人机挂载…

正则表达式怎么控制匹配的字符串更近的一个

http((?!http).)*m3u8 正则表达式怎么控制匹配的字符串更近的一个 正则如何匹配最近的字符 正则如何匹配最近的两个字符 怎么控制只要离字符串b匹配更近一点的字符串a 解释 a.b,它将会匹配最长的以a开始,以b结束的字符串 a.?b匹配最短的&#xff…

测试开发面经总结(三)

TCP三次握手 TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。 一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口,处于 LISTEN 状态 客户端会随机初始化序号&…

微信小程序密码 显示隐藏 真机兼容问题

之前使用type来控制&#xff0c;发现不行&#xff0c;修改为password属性即可 <van-fieldright-icon"{{passwordType password? closed-eye:eye-o}}"model:value"{{ password }}"password"{{passwordType password ? true: false}}"borde…

数仓工具—Hive语法之排除特定列

排除特定列 Apache Hive是一个基于Hadoop HDFS的数据仓库框架,用于存储和分析大量数据。Apache Hive支持大多数关系数据库功能,如对大型表进行分区和根据分区列存储值。 在本文中,我们将检查从SELECT查询中排除Hive分区列的方法。 这个在我们需要表中大量列的时候,例如一…

【python】OpenCV—European Article Number

参考学习来自&#xff1a;OpenCV基础&#xff08;25&#xff09;条码和二维码扫的生成与识别 1 条形码介绍 EAN-13是欧洲物品编码&#xff08;European Article Number&#xff09;的缩写&#xff0c;是一种广泛使用的条形码标准&#xff0c;特别是在超级市场和其它零售业中。…

第二周周日学习总结

题目总结 1. 给你一个仅由数字组成的字符串 s&#xff0c;在最多交换一次 相邻 且具有相同 奇偶性 的数字后&#xff0c;返回可以得到的 字典序最小的字符串 。 如果两个数字都是奇数或都是偶数&#xff0c;则它们具有相同的奇偶性。例如&#xff0c;5 和 9、2 和 4 奇偶性…

zookeeper基础知识学习

官网&#xff1a;Apache ZooKeeper 下载地址&#xff1a;Index of /dist/zookeeper/zookeeper-3.5.7Index of /dist/zookeeperIndex of /dist/zookeeper/zookeeper-3.5.7 ZK配置参数说明&#xff1a; 1、tickTime2000&#xff1a;通讯心跳时间&#xff0c;zookeeper服务器与客…

Reinforced Causal Explainer for GNN论文笔记

论文&#xff1a;TPAMI 2023 图神经网络的强化因果解释器 论文代码地址&#xff1a;代码 目录 Abstract Introduction PRELIMINARIES Causal Attribution of a Holistic Subgraph​ individual causal effect (ICE)​ *Causal Screening of an Edge Sequence Reinforc…

Three.js 对创建的物体进行位置旋转缩放修改。

1.在场景里面添加一个物体作为示例 // 创建一个物体&#xff08;形状&#xff09;const geometry new THREE.BoxGeometry(5, 5, 5);//创建材质&#xff08;外观&#xff09;const material2 new THREE.MeshLambertMaterial({color: 0xfff, //设置材质颜色side: THREE.DoubleS…

SpringBoot + vue 管理系统

SpringBoot vue 管理系统 文章目录 SpringBoot vue 管理系统1、成品效果展示2、项目准备3、项目开发3.1、部门管理3.1.1、前端核心代码3.1.2、后端代码实现 3.2、员工管理3.2.1、前端核心代码3.2.2、后端代码实现 3.3、班级管理3.3.1、前端核心代码3.3.2、后端代码实现 3.4、…