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

Redis高级-主从复制相关操作

2.1 主从复制简介

2.1.1 高可用

首先我们要理解互联网应用因为其独有的特性我们演化出的三高架构

  • 高并发

    应用要提供某一业务要能支持很多客户端同时访问的能力,我们称为并发,高并发意思就很明确了

  • 高性能

    性能带给我们最直观的感受就是:速度快,时间短

  • 高可用

可用性:一年中应用服务正常运行的时间占全年时间的百分比,如下图:表示了应用服务在全年宕机的时间

在这里插入图片描述

我们把这些时间加在一起就是全年应用服务不可用的时间,然后我们可以得到应用服务全年可用的时间

4小时27分15秒+11分36秒+2分16秒=4小时41分7秒=16867秒

1年=3652460*60=31536000秒

可用性=(31536000-16867)/31536000*100%=99.9465151%

业界可用性目标5个9,即99.999%,即服务器年宕机时长低于315秒,约5.25分钟

2.1.2 主从复制概念

知道了三高的概念之后,我们想:你的“Redis”是否高可用?那我们要来分析单机redis的风险与问题

问题1.机器故障

  • 现象:硬盘故障、系统崩溃
  • 本质:数据丢失,很可能对业务造成灾难性打击
  • 结论:基本上会放弃使用redis.

问题2.容量瓶颈

  • 现象:内存不足,从16G升级到64G,从64G升级到128G,无限升级内存
  • 本质:穷,硬件条件跟不上
  • 结论:放弃使用redis

结论:

为了避免单点Redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服务器上,连接在一起,并保证数据是同步的。即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现Redis的高可用,同时实现数据冗余备份。

多台服务器连接方案:
在这里插入图片描述

  • 提供数据方:master

主服务器,主节点,主库主客户端

  • 接收数据方:slave

从服务器,从节点,从库

从客户端

  • 需要解决的问题:

数据同步(master的数据复制到slave中)

这里我们可以来解释主从复制的概念:

概念:主从复制即将master中的数据即时、有效的复制到slave中

特征:一个master可以拥有多个slave,一个slave只对应一个master

职责:master和slave各自的职责不一样

master:

写数据执行写操作时,将出现变化的数据自动同步到slave读数据(可忽略)

slave:

读数据写数据(禁止)

2.1.3 主从复制的作用

  • 读写分离:master写、slave读,提高服务器的读写负载能力
  • 负载均衡:基于主从结构,配合读写分离,由slave分担master负载,并根据需求的变化,改变slave的数 量,通过多个从节点分担数据读取负载,大大提高Redis服务器并发量与数据吞吐量
  • 故障恢复:当master出现问题时,由slave提供服务,实现快速的故障恢复
  • 数据冗余:实现数据热备份,是持久化之外的一种数据冗余方式
  • 高可用基石:基于主从复制,构建哨兵模式与集群,实现Redis的高可用方案

2.2 主从复制工作流程

主从复制过程大体可以分为3个阶段

  • 建立连接阶段(即准备阶段)
  • 数据同步阶段
  • 命令传播阶段(反复同步)

在这里插入图片描述

而命令的传播其实有4种,分别如下:

在这里插入图片描述

2.2.1 主从复制的工作流程(三个阶段)

2.2.1.1 阶段一:建立连接

建立slave到master的连接,使master能够识别slave,并保存slave端口号

流程如下:

  1. 步骤1:设置master的地址和端口,保存master信息
  2. 步骤2:建立socket连接
  3. 步骤3:发送ping命令(定时器任务)
  4. 步骤4:身份验证
  5. 步骤5:发送slave端口信息

至此,主从连接成功!

当前状态:

slave:保存master的地址与端口

master:保存slave的端口

总体:之间创建了连接的socket
在这里插入图片描述
master和slave互联

接下来就要通过某种方式将master和slave连接到一起

方式一:客户端发送命令

slaveof masterip masterport

方式二:启动服务器参数

redis-server --slaveof masterip masterport

方式三:服务器配置(主流方式

slaveof masterip masterport

slave系统信息

master_link_down_since_seconds
masterhost & masterport

master系统信息

uslave_listening_port(多个)

主从断开连接

断开slave与master的连接,slave断开连接后,不会删除已有数据,只是不再接受master发送的数据

slaveof no one

授权访问

master客户端发送命令设置密码

requirepass password

master配置文件设置密码

config set requirepass password
config get requirepass

slave客户端发送命令设置密码

auth password

slave配置文件设置密码

masterauth password

slave启动服务器设置密码

redis-server –a password
http://www.lryc.cn/news/21528.html

相关文章:

  • SPI总线设备驱动模型
  • 开发同事辞职,接手到垃圾代码怎么办?
  • gRPC简介
  • 《MySQL系列-InnoDB引擎25》表-InnoDB逻辑存储结构
  • YOLOv8之C2f模块——与YOLOv5的C3模块对比
  • 动态规划实例——换零钱的方法数(C++详解版)
  • linux c
  • 第十三章 系统错误消息 - 一般系统错误消息 S - Z
  • 移动web基础
  • MyBatis和MyBatis_Plus有什么区别【面试常考题】
  • 华为OD机试用Python实现 -【统一限载货物数最小值】(2023-Q1 新题)
  • Vue入门小练习
  • Oracle-09-集合运算符篇
  • 获取浏览器(服务端)请求中特定的Cookie
  • c++11 标准模板(STL)(std::unordered_set)(九)
  • python实战应用讲解-【实战应用篇】文件操作(附python示例代码)
  • OpenCV-Python系列(二)—— 图像处理(灰度图、二值化、边缘检测、高斯模糊、轮廓检测)
  • ccc-台大林轩田机器学习基石-hw1
  • hadoop03-MapReduce【尚硅谷】
  • 测牛学堂:软件测试python学习之异常处理
  • 图神经网络--图神经网络
  • React useCallback如何使其性能最大化?
  • 长尾关键词使用方法,通过什么方式挖掘长尾关键词?
  • 【网络编程套接字(一)】
  • shell脚本入门
  • 【经典蓝牙】 蓝牙HFP层协议分析
  • 互联网摸鱼日报(2023-02-26)
  • 关于程序员中年危机的一个真实案例
  • 【fly-iot飞凡物联】(2):如何从0打造自己的物联网平台,使用开源的技术栈搭建一个高性能的物联网平台,目前在设计阶段。
  • Hadoop MapReduce