Redis主从复制架构

概念

概念
主从复制,是指将一台Redis服务器的数据,复制到其他Redis的服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能从主节点到从节点。Master以写为主,Slave以读为主。

主从复制,读写分离!80%的情况下都是进行读的操作!减缓服务器压力!

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但是一个从节点有且只有一个主节点。

主从复制的作用主要包括

  • 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是写少读多的场景下,通过多个节点分担负载,可以大大提高Redis服务器的并发量。

  • 高可用(集群)基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
    一般来说呀,要将redis运用于工程项目之中,只使用一台Redis是万万不能的(宕机),原因如下:
    1、从结构上,单个redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载呀,压力较大。
    2、从容量上,单个redis服务器内存容量有限,就算一台redis服务器内存容量为256GB,也不能将所有内存用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20GB。

配置文件

只需要配置从库,不需要配置主库,因为默认情况下,每台Redis服务器都是主节点。

从节点需要修改的相关配置

# 端口
port 6380# 把pid进程号写入pidfile配置的文件
pidfile /var/run/redis_6380.pid# log文件
logfile "6380.log"# rdb文件名
dbfilename dump-6380.rdb# rdb文件存放路径
dir /usr/local/bin# 需要注释掉bind,bind绑定的是自己机器网卡的ip,
# 如果有多块网卡可以配多个ip,
# 代表允许客户端通过机器的哪些网卡ip去访问,
# 内网一般可以不配置bind,注释掉即可
# bind 127.0.0.1# aof文件名
appendfilename "appendonly-6380.aof"###主从复制配置###
# 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveof
replicaof 127.0.0.1 6379# 配置从节点只读
replica‐read‐only yes# 缓冲区大小  默认1MB
# repl-backlog-size 1mb

主从复制工作原理

  • 全量复制

1、当slave连接上master时,先会与master建立socket长连接,然后发送一个psync命令同步数据。

2、当master接受到psync命令后,会在后台通过bgsave进行数据持久化生成最新的快照文件,持久化期间,master会持续接收客户端的请求,它会把这些可能修改数据集的请求缓存在缓冲区中(repl buffer 缓冲区,配置文件中repl-backlog-size可配置缓存区大小,默认1MB)。

3、当持久化完毕后,master会把这份rdb文件发送至slave。

4、slave接收到rdb文件后,会清空所有老数据,并加载这份主节点的rdb文件。

5、然后,master再将之前存放在缓冲区的命令发送给slave。

6、slave接收到缓冲区的命令后,进行执行。

7、最后,当全量复制完毕后,master通过socket长连接持续把写命令发送给从节点,保证主从一致性。

  • 部分复制

当master和 slave断开重连之后,一般会对整份数据进行复制。但从redis2.8版本开始,redis改用可以支持部分数据复制的命令PSYNC去master同步数据,slave与master能够在网络连接断开重连后只进行部分数据复制(断点续传)。

1、master与slave连接断开

2、master会在其内存建立一个复制数据用的缓存队列(repl backlog buffer),缓存最近一段时间的数据,其实就是一些写命令

3、slave重新连接到master,建立socket长连接。

4、psync(offset),在master和它所有的slave都维护了复制的数据下标offset(偏移量)和master的进程id,因此,当网络连接重连后,slave会请求master 继续进行未完成的复制,从所记录的数据下标开始。

5、如果master进程id变化了,或者从节点数据下标 offset太旧,已经不在master的缓存队列(repl backlog buffer)里了,那么将会进行一次全量数据的复制。

6、最后,当部分/全量复制完毕后,master通过socket长连接持续把写命令发送给从节点,保证主从一致性。

主从复制风暴

如果有很多从节点,为了缓解主从复制风暴(多个从节点同时复制主节点导致主节点压力过大),可以做如下架构,让部分从节点与从节点(与主节点同步)同步数据

Redis主从复制架构相关推荐

  1. Redis主从复制架构初步探索 http://www.sxt.cn/info-1750-u-324.html#SXT_h2_11

    Redis主从复制架构初步探索 目录http://www.sxt.cn/info-1750-u-324.html#SXT_h2_11 ·  一.主从复制架构简介 ·  1.1 源于关系数据库的读写分离 ...

  2. Redis架构第二天:CenterOS集群、RDB和AOF、主从复制架构实践

    1.课程 小型电商:页面静态化 页面太多的时候,上亿,重新渲染,需要几天,不太靠谱 大型电商:异步+多级缓存+nginx本地化动态渲染 高并发.高可用,qps 总之一句话redis很重要.龙国学院很屌 ...

  3. 如果redis哨兵宕机了怎么办_Redis 主从复制架构中出现宕机怎么办?以及哨兵功能...

    如果主从复制架构中出现宕机的情况,需要分情况看: 1. 从Redis宕机 相对而言比较简单,Redis从库重新启动后会自动加入到主从架构中,自动完成同步数据: 存在的问题是,如果从库在断开期间,主库变 ...

  4. 【带你重拾Redis】Redis 主从架构

    Redis 主从架构 单机的 Redis,能够承载的 QPS 大概就在上万到几万不等.对于缓存来说,一般都是用来支撑读高并发的.因此架构做成主从(master-slave)架构,一主多从,主负责写,并 ...

  5. cxgrid主从表 点+号展开_深入理解Redis主从复制

    一.背景 前面的文章中,我们介绍过Redis的持久化机制,它可以实现Redis实例数据的crash-safe.但是这里有一个问题,就是Redis其实还存在着单点故障问题,比如说Redis的硬盘坏掉了, ...

  6. Redis 主从复制的原理及演进

    本文作者:百度基础架构部工程师,王钰 Redis 的主从复制经历了多次演进,本文将从最基本的原理和实现讲起,并层层递进,逐步呈现 Redis 主从复制的演进历史.大家将了解到 Redis 主从复制的原 ...

  7. Redis 主从复制

    Redis 主从复制 ​ 概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器.前者称为主节点(master),后者称为从节点(slave): 数据的复制是单向的,只能由主节 ...

  8. Redis的架构模式

    单机版 特点:简单 问题: 1.内存容量有限 2.处理能力有限 3.无法高可用. 主从复制 Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的 ...

  9. 配置Redis主从复制

    [构建高性能数据库缓存之redis主从复制][http://database.51cto.com/art/201407/444555.htm] 一.什么是redis主从复制? 主从复制,当用户往Mas ...

最新文章

  1. 现学现用!学完计组后,我马上在「我的世界」造了台显示器
  2. 真实临床“生态”下实效性研究的挑战和意义
  3. python3数学函数
  4. html删除一行增加一行,html怎么增加一行
  5. LeetCode Algorithm 160. 相交链表
  6. 外星人台式机无盘服务器,可以拎走的“台式机” Alienware Area-51m评测
  7. iPhone 12 Pro最新概念图:五摄相机模组也带下巴
  8. proteus数码管不亮是什么原因_人行道闸开后不关的原因是什么?速来get一下
  9. linux下内存的统计和内存泄露问题的定位-转
  10. 嵌套RecyclerView左右滑动替代自定义view
  11. macOS Monterey Finder 的新功能
  12. 1047: 对数表 ZZULIOJ
  13. 值得推荐的在线报表设计器
  14. 人工智能是否会改写商业规则
  15. 未群发消息接腾讯服务器吗,腾讯企点如何群发消息 腾讯企点群发消息方法教程...
  16. Fragstats景观分析研究
  17. 计算机组装手机app,智能手机安装软件的
  18. mac下面安装破解版UltraEdit
  19. 【GPU】Nvidia CUDA 编程基础教程——利用基本的 CUDA 内存管理技术来优化加速应用程序
  20. 利用MDK的FLM文件生成通用flash驱动

热门文章

  1. 【数据分析】5大SQL数据清洗方法!
  2. 2008 iis7 php mysql_windows2008系统IIS7配置PHP与MySQL
  3. 使用3sigma原则去除数据表中的极端值
  4. 《Cesium 基础知识点》- 天地图 WMTS
  5. python中readlines_python读文件的三个方法read()、readline()、readlines()详解
  6. Wireshark 提示和技巧 | Checksum Offload
  7. hmr webpack 不编译_webpack hmr
  8. 爬虫过程中解决html乱码和获取的文本乱码问题
  9. 【JTeam Champion NFT】怎么参与JTeam NFT项目
  10. 最长有效括号的长度问题