【Redis】Redis主从复制(一)————主从搭建

目录

  • 背景
  • 主从复制
    • 主从复制的工作流程
    • 主从复制的优点
  • 配置 redis 主从结构
    • 复制配置文件,修改
    • 配置主从结构
    • 启动 redis 服务
      • 备注
    • 查看复制状态

背景

单节点服务器的问题问题:

  • 可用性:如果这个机器挂了,意味着服务就中断了.
  • 性能:支持的并发量也是比较有限的.

解决思路:引入分布式系统

  • 分布式系统中,往往需要多个服务器来部署 redis 服务,从而构成 redis 集群
  • 此时就可以让这个集群给整个分布式系统中的其他服务,提供更稳定 / 更高效的数据存储功能.

主从复制

  • 主从复制是一种数据同步机制,用于在数据库之间实现数据的自动复制。
  • 在主从复制中,一个数据库(主数据库)被定义为主节点,负责接收和处理所有的写操作;
  • 而其他的数据库(从数据库)被定义为从节点,负责接收和复制主节点的数据更新。
  • 如果是挂掉了某一个从节点,没什么影响,此时继续从主节点或者其他从节点读取数据,效果是完全一样的.
  • 如果改掉的是主节点,是有一定影响的,因为主节点还负责 “写数据”

主从复制的工作流程

  1. 主节点接收到一个写操作。
  2. 主节点将该写操作记录到其日志文件(二进制日志)中。
  3. 通过网络,主节点将该写操作发送给所有的从节点。
  4. 从节点收到该写操作后,将其记录到其日志文件(中继日志)中。
  5. 从节点执行该写操作,并将执行结果返回给主节点。
  6. 主节点将该写操作及执行结果记录到其日志文件中。
  7. 从节点将执行结果发送给客户端。

通过主从复制,可以实现以下几个目的:

  1. 提高数据库的读性能:从节点可以处理读操作,减轻主节点的负载。
  2. 提高数据库的可用性:当主节点发生故障时,可以快速切换到从节点,保证系统的正常运行。
  3. 数据备份:从节点可以作为主节点的备份,以防止数据丢失。

需要注意的是,主从复制只能实现数据的单向复制,即主节点到从节点的复制。如果希望实现数据的双向同步,可以使用主主复制机制。

主从复制的优点

  1. 提高读性能:主从复制可以将读操作分发到从节点上进行处理,减轻主节点的读负载。通过增加从节点的数量,可以进一步扩展读吞吐量,提升系统的性能。

  2. 提高可用性:主从复制可以保证数据库的高可用性。当主节点发生故障时,可以将其中一个从节点提升为新的主节点,使系统继续正常运行而不会中断。

  3. 数据备份:从节点可以用作主节点的备份,保证数据的安全性。主节点的数据变更会被同步到从节点,从而实现数据的备份和恢复。

  4. 负载均衡:通过将读操作和写操作分离到不同的节点上处理,主从复制可以将负载分摊到多个节点上,提高系统的整体性能和吞吐量。

  5. 地理冗余:主从复制还可以用于实现地理冗余。通过将主节点和从节点部署在不同的地理位置上,可以保证在某个地区发生网络故障或自然灾害时,其他地区的节点可以继续提供服务。

配置 redis 主从结构

  • 配置 redis 主从结构,需要启动多个 redis 服务器,分配在一个个单独的主机上(分布式),这里使用一台设备来模拟主从结构
  • redis-server 的端口是 6379 ,此时就不能让其他节点启动时也用 6379 了,我们有一下两种方式来指定 redis-server 的端口号:
    • 启动程序时,通过命令的方式来指定端口号(–port 选项)
    • 直接在配置文件中,来设定端口(推荐,因为修改配置文件,是持久有效的).

复制配置文件,修改

  • 主节点的配置不变,只需要修改从节点的配置即可,因此我们只需要复制两份主节点的配置文件,并修改这两份文件的端口和后台运行方式即可.
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

配置主从结构

  • 在两个配置文件末尾加 slaveof 配置主从结构(绑定父节点为 6379 端口).
    在这里插入图片描述

启动 redis 服务

  • 通过 redis-server 命令来启动刚刚配置好的这两个节点.
    在这里插入图片描述

备注

如果 redis 服务启动后修改了配置文件就需要重启才能起效。

  • 如果是通过 redis-server 启动服务器,就必须搭配 kill 命令来停止.

  • 如果是通过 service redis-server start 启动服务器,必须搭配 service redis-server stop 来停止.

  • 如果使用 kill 命令停止 service redis-server start ,这个 redis-server 进程会自动启动.

  • 通过 netstat -anp 命令就可以查看从节点和主节点的绑定情况
    在这里插入图片描述

  • 在复制两个会话,启动两个从节点的 redis 客户端,此时 redis 从节点上就只能读数据,不能写入数据了在这里插入图片描述在这里插入图片描述

查看复制状态

  • 在 redis 客户端,通过 info replication 就可以查看当前节点的复制状态了.
    在这里插入图片描述
  • 在复制两个会话,启动两个从节点的 redis 客户端,此时 redis 从节点上就只能读数据,不能写入数据了
    在这里插入图片描述在这里插入图片描述
  • 值得注意的是,从节点和主节点之间的数据同步,不是瞬间完成的,并且同时主节点上也会 “源源不断” 的收到其他 “修改数据” 的请求
  • 因此这个时候就需要使用 offset 来记录当前主节点和从节点的数据同步情况,当 从节点 的 offset 等于 主节点的 offset 时,表明此时数据完全一致.

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

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

相关文章

重回1990短视频全集:成都鼎茂宏升文化传媒公司

重回1990短视频全集:时光之旅的温情回顾 在数字技术的浪潮中,短视频以其独特的魅力迅速崛起,成为我们记录生活、分享故事的新方式。而当我们回望过去,那些充满怀旧情怀的年份总是让人心生感慨。今天,就让我们一起踏上…

JavaScrip轮播图

前言 在网页设计中,轮播图(Carousel)已经成为一种常见的元素,用于展示一系列的图片或内容卡片。它们不仅能够吸引用户的注意力,还能节省空间,使得用户可以在有限的空间内获得更多的信息。今天,我…

承德露露“不进则退”的十年:毛利率持续下滑,如何实现南北通喝?

《港湾商业观察》廖紫雯 日前,承德露露发布2023年年报及2024年一季报,披露营收、净利均取得一定增长的大好局面,然而时间线拉长来看,2014年、2015年,公司营收已超27亿,小十年时间过去,公司2023…

flask_sqlalchemy时间缓存导致datetime.now()时间不变问题

问题是这样的,项目在本地没什么问题,但是部署到服务器过一阵子发现,这个时间会在某一刻定死不变。 重启uwsgi后,发现第一条数据更新到了目前最新时间,过了一会儿再次发送也变了时间,但是再过几分钟再发就会…

RE_Python

python的exe文件解包 要确保使用工具的环境是和Python version一样(我这里是需要3.11) 不然,ezpy.exe_extracted文件夹点进去,类似PYZ-00.pyz_extracted的文件夹会是空的!! pyc反编译问题 ImportError:…

如何执行VMware P2V迁移|VMware Converter和替代方案

VMware中的P2V是什么? 我们常说的VMware P2V其实指的就是“物理到虚拟”,将工作负载从物理机器转换或迁移到虚拟机(VM)的过程,能够使您无需从头开始费力地创建和配置新虚拟机。 就像您可以使用Disk2vhd执行Hyper-V物理…

关闭文件及使用with语句

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 1 关闭文件 打开文件后,需要及时关闭,以免对文件造成不必要的破坏。关闭文件可以使用文件对象的close()方法实现。close()方…

C++青少年简明教程:C++函数

C青少年简明教程:C函数 C函数是一段可重复使用的代码,用于执行特定的任务,可以提高代码的可读性和可维护性。函数可以接受参数(输入)并返回一个值(输出),也可以没有参数和返回值。 …

嵌入式Linux系统编程 — 2.4 标准I/O库:I/O缓冲详解

目录 1 I/O 缓冲简介 1.1 什么是I/O 缓冲 1.2 I/O 缓冲的目的 2 文件 I/O 的内核缓冲 3 刷新文件 I/O 的内核缓冲区 3.1 什么是刷新文件 I/O 的内核缓冲区 3.2 控制文件 I/O 内核缓冲的系统调用函数 3.3 示例程序 4 控制文件 I/O 内核缓冲的标志 4.1 O_DSYNC 和 O_SY…

(深度学习记录)第TR4周:Pytorch复现Transformer

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 🏡我的环境: 语言环境:Python3.11.4编译器:Jupyter Notebooktorcch版本:2.0.…

fastadmin/thinkPHPQueue消息队列详细教程

thinkphp-queue 是thinkphp 官方提供的一个消息队列服务,它支持消息队列的一些基本特性: 消息的发布,获取,执行,删除,重发,失败处理,延迟执行,超时控制等队列的多队列, 内存限制 ,启动,停止,守护等消息队列可降级为同步执行1、通过composer安装thinkPHP消息队列 …

Java概述 , Java环境安装 , 第一个Hello World

环境变量,HelloWorld 1.会常用的dos命令 2.会安装java所需要的环境(jdk) 3.会配置java的环境变量 4.知道java开发三步骤 5.会java的入门程序(HelloWorld) 6.会三种注释方式 7.知道Java入门程序所需要注意的地方 8.知道println和print的区别第一章 Java概述 1.1 JavaSE体系介绍…

社区服务支持

社区服务支持 原创 小王搬运工 时序课堂 2024-06-07 19:29 四川 🌟 邀请函 | 加入我们的时序数据挖掘社区 🚀 尊敬的数据爱好者们, 我们诚挚地邀请您加入我们的专业社区——时序数据挖掘社区,一个专注于时序数据分析、挖掘与应…

阿里通义千问,彻底爆了!(本地部署+实测)

点击“终码一生”,关注,置顶公众号 每日技术干货,第一时间送达! 问大家一个问题:你是否想过在自己的电脑上部署一套大模型?并用自己的知识库训练他? 阿里通义千问今天发布了最新的开源大模型系…

Docker基础篇之Docker常规软件安装

文章目录 1. 总体步骤2. 安装tomcat3. 安装Mysql4. 安装Redis 1. 总体步骤 安装软件的总体步骤如下所示: 搜索镜像拉取镜像查看镜像启动镜像停止容器移除容器 2. 安装tomcat docker hub上查找tomcat镜像 或者使用一下命令查找: docker search tomca…

Open AI又出王炸GPT-4,目测一大波人的饭碗要碎了...

前言 在科技的惊涛骇浪中,每一次技术的飞跃都预示着新时代的曙光。近日,Open AI公司再次震撼业界,推出了其最新力作——GPT-4,这款被誉为“王炸”的语言模型,以其前所未有的智能水平和创造力,不仅在技术圈…

echarts学习:如何让y轴显示为带箭头的直线

前言 在我的固有印象中折线图、柱状图等图形中的y轴,应该都是像下图一样是一条末端带箭头的直线。 然而在echarts中y轴的轴线是默认不显示的(这让我很不习惯),因此也就不会显示轴线末端的箭头。 1.让y轴的轴线显示出来 通过将yA…

wx小程序自定义tabbar

1.在app.json文件中,添加自定义tabbar配置:"custom": true "tabBar": {"custom": true,"backgroundColor": "#fafafa","borderStyle": "white","selectedColor": &quo…

5 分钟内构建一个简单的基于 Python 的 GAN

文章目录 一、说明二、代码三、训练四、后记 一、说明 生成对抗网络(GAN)因其能力而在学术界引起轩然大波。机器能够创作出新颖、富有灵感的作品,这让每个人都感到敬畏和恐惧。因此,人们开始好奇,如何构建一个这样的网…

计算机网络面试基础(一)

文章目录 一、HTTP基本概念1.HTTP是什么?2.HTTP 常见的状态码有哪些?3.http常见字段 二、GET和POST1.get和post有什么区别 三、HTTP缓存技术1.HTTP 缓存有哪些实现方式?2.什么是强制缓存?3.什么是协商缓存?(不太懂) 四…