Redis主从复制架构
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主从复制架构相关推荐
- 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 源于关系数据库的读写分离 ...
- Redis架构第二天:CenterOS集群、RDB和AOF、主从复制架构实践
1.课程 小型电商:页面静态化 页面太多的时候,上亿,重新渲染,需要几天,不太靠谱 大型电商:异步+多级缓存+nginx本地化动态渲染 高并发.高可用,qps 总之一句话redis很重要.龙国学院很屌 ...
- 如果redis哨兵宕机了怎么办_Redis 主从复制架构中出现宕机怎么办?以及哨兵功能...
如果主从复制架构中出现宕机的情况,需要分情况看: 1. 从Redis宕机 相对而言比较简单,Redis从库重新启动后会自动加入到主从架构中,自动完成同步数据: 存在的问题是,如果从库在断开期间,主库变 ...
- 【带你重拾Redis】Redis 主从架构
Redis 主从架构 单机的 Redis,能够承载的 QPS 大概就在上万到几万不等.对于缓存来说,一般都是用来支撑读高并发的.因此架构做成主从(master-slave)架构,一主多从,主负责写,并 ...
- cxgrid主从表 点+号展开_深入理解Redis主从复制
一.背景 前面的文章中,我们介绍过Redis的持久化机制,它可以实现Redis实例数据的crash-safe.但是这里有一个问题,就是Redis其实还存在着单点故障问题,比如说Redis的硬盘坏掉了, ...
- Redis 主从复制的原理及演进
本文作者:百度基础架构部工程师,王钰 Redis 的主从复制经历了多次演进,本文将从最基本的原理和实现讲起,并层层递进,逐步呈现 Redis 主从复制的演进历史.大家将了解到 Redis 主从复制的原 ...
- Redis 主从复制
Redis 主从复制 概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器.前者称为主节点(master),后者称为从节点(slave): 数据的复制是单向的,只能由主节 ...
- Redis的架构模式
单机版 特点:简单 问题: 1.内存容量有限 2.处理能力有限 3.无法高可用. 主从复制 Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的 ...
- 配置Redis主从复制
[构建高性能数据库缓存之redis主从复制][http://database.51cto.com/art/201407/444555.htm] 一.什么是redis主从复制? 主从复制,当用户往Mas ...
最新文章
- 现学现用!学完计组后,我马上在「我的世界」造了台显示器
- 真实临床“生态”下实效性研究的挑战和意义
- python3数学函数
- html删除一行增加一行,html怎么增加一行
- LeetCode Algorithm 160. 相交链表
- 外星人台式机无盘服务器,可以拎走的“台式机” Alienware Area-51m评测
- iPhone 12 Pro最新概念图:五摄相机模组也带下巴
- proteus数码管不亮是什么原因_人行道闸开后不关的原因是什么?速来get一下
- linux下内存的统计和内存泄露问题的定位-转
- 嵌套RecyclerView左右滑动替代自定义view
- macOS Monterey Finder 的新功能
- 1047: 对数表 ZZULIOJ
- 值得推荐的在线报表设计器
- 人工智能是否会改写商业规则
- 未群发消息接腾讯服务器吗,腾讯企点如何群发消息 腾讯企点群发消息方法教程...
- Fragstats景观分析研究
- 计算机组装手机app,智能手机安装软件的
- mac下面安装破解版UltraEdit
- 【GPU】Nvidia CUDA 编程基础教程——利用基本的 CUDA 内存管理技术来优化加速应用程序
- 利用MDK的FLM文件生成通用flash驱动
热门文章
- 【数据分析】5大SQL数据清洗方法!
- 2008 iis7 php mysql_windows2008系统IIS7配置PHP与MySQL
- 使用3sigma原则去除数据表中的极端值
- 《Cesium 基础知识点》- 天地图 WMTS
- python中readlines_python读文件的三个方法read()、readline()、readlines()详解
- Wireshark 提示和技巧 | Checksum Offload
- hmr webpack 不编译_webpack hmr
- 爬虫过程中解决html乱码和获取的文本乱码问题
- 【JTeam Champion NFT】怎么参与JTeam NFT项目
- 最长有效括号的长度问题