四十五、Redis主从

目录

 1、数据同步原理

(1)全量同步

(2)增量同步

(3)优化Redis主从集群

(4)什么时候执行全量同步

(5)什么时候执行增量同步

2、流程


 1、数据同步原理

(1)全量同步

•全量同步:master将完整内存数据生成RDB,发送RDB到slave。后续命令则记录在repl_baklog,逐个发送给slave。

(2)增量同步

•增量同步:slave提交自己的offset到master,master获取repl_baklog中从offset之后的命令给slave

repl_baklog大小有上限,写满后会覆盖最早的数据。如果slave断开时间过久,导致尚未备份的数据被覆盖,则无法基于log做增量同步,只能再次全量同步。

(3)优化Redis主从集群

•在master中配置repl-diskless-sync yes启用无磁盘复制,避免全量同步时的磁盘IO。

•Redis单节点上的内存占用不要太大,减少RDB导致的过多磁盘IO

•适当提高repl_baklog的大小,发现slave宕机时尽快实现故障恢复,尽可能避免全量同步

•限制一个master上的slave节点数量,如果实在是太多slave,则可以采用主-从-从链式结构,减少master压力

(4)什么时候执行全量同步

•slave节点第一次连接master节点时

•slave节点断开时间太久,repl_baklog中的offset已经被覆盖时

(5)什么时候执行增量同步

•slave节点断开又恢复,并且在repl_baklog中能找到offset时

master如何判断slave是不是第一次来同步数据?这里会用到两个很重要的概念:

•Replication Id:简称replid,是数据集的标记,id一致则说明是同一数据集。每一个master都有唯一的replid,slave则会继承master节点的replid

•offset:偏移量,随着记录在repl_baklog中的数据增多而逐渐增大。slave完成同步时也会记录当前同步的offset。如果slave的offset小于master的offset,说明slave数据落后于master,需要更新。

因此slave做数据同步,必须向master声明自己的replication id 和offset,master才可以判断到底需要同步哪些数据

2、流程

  1. slave节点请求增量同步
  2. master节点判断replid,发现不一致,拒绝增量同步
  3. master将完整内存数据生成RDB,发送RDB到slave
  4. slave清空本地数据,加载master的RDB
  5. master将RDB期间的命令记录在repl_baklog,并持续将log中的命令发送给slave
  6. slave执行接收到的命令,保持与master之间的同步

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

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

相关文章

代码阅读次数多于编写次数

代码阅读次数多于编写次数 维护者 > 作者 如今这已是程序员的共识,提醒我们初次编写代码不应该为了追求方便而牺牲将来阅读和修改此段代码的人。 “代码的阅读次数多于编写次数”传达的意思是,通过保持代码简单、编写测试和文档等方式来降低维护代…

Salesforce“卷土重来”:对中国CRM市场影响在哪?

于本土CRM而言,Salesforce是一面镜子,也更是催化剂。 长期来看,Salesforce的加入,从某种程度上将会加速中国CRM赛道的合理价值曲线的走向,通过带动外界对于CRM整个赛道的关注和热度,进而加速本土CRM的成长…

在vue项目中,数据已经在页面渲染,但在后续操作时获取不到数据

如下图 产生这个问题的原因 异步问题 如何解决 方法一:可以将其存放在一个setTimeout里面(利用一个极小的延迟来获取数据),如下图 效果 方法二:将操作放入axios里面,如下图

心理学效应

条柠檬心理马太效应飞轮效应酸葡萄效应凡勃伦效应登门槛效应糖果效应南风效应野马效应聚光灯效应毛毛虫效应曝光效应

【Matlab】如何使用MATLAB可视化二重积分(附完整MATLAB代码)

可视化二重积分 前言正文完整代码代码实现可视化结果 前言 二重积分是指在二维空间中对函数进行积分。二重积分的公式如下: ∫ a b ∫ c d f ( x , y ) d x d y ∫_a^b ∫_c^d f(x, y) dx dy ∫ab​∫cd​f(x,y)dxdy 其中, a a a 和 b b b 是 x x x…

Docker-consule 服务发现与注册

consul服务更新和服务发现 什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&…

7-8 报销

年底,报销都挤在一堆,财务忙得不可开交。每个报销表包括姓名,各项费用的金额。对于每个报销单,这里规定按如下要求处理: 金额高的优先处理;若金额相等时,则姓名字典序小的优先处理;…

java发起http、https请求,并携带cookie、header,post参数放body并可选关闭ssl证书验证,高可用版

公司有个需求是发起https请求对接国家数据接口,需要带header、cookie,并关闭ssl证书验证,搜了很多文章,都说用HttpsURLConnection发起请求,但不知为啥在封装body参数的时候一直报400封装出错,也欢迎指出不足…

Linux出击之网络环境设置

Linux中如果想要设置静态IP,这就需要我们进行自己去设置。 首先想知道是否有网络,我们就可以查看我们的网卡信息呀,ping 外网地址试试。 比如, ping www.baidu.com ip addr show, 这两个命令都可以让我们对网络有一个了解。 …

【AHK】设置esc为退格键但又可以通过ctrl+esc保留原来esc的退出的功能

该需求为68键本人自用常用习惯。通过奖罚esc设置为backspace键,开始的习惯思维是通过send实现,导致一直陷入死循环,最后经过多次尝试得出以下方案。 还可以用于 键位对调的思路,即直接对调esc和backspace 方案1 esc::backspace ^e…

【DFS】200.岛屿数量

题目 法1&#xff1a;岛屿数量 class Solution {public int numIslands(char[][] grid) {int m grid.length, n grid[0].length;int[][] used new int[m][n];int res 0;for (int i 0; i < m; i) {for (int j 0; j < n; j) {if (grid[i][j] 0 || used[i][j] 1) …

豪腾四海×实在RPA丨最懂财务的数字员工,为企业节省人天2000+

企业数字化转型&#xff0c;财务是一个重要的切入点。随着豪腾四海数字化业务不断展开&#xff0c;新的系统、流程和数据源被不断引入&#xff0c;财务部门面临的是不断暴增的对账、数电票处理、审计等日常工作。 “如此大的工作量&#xff0c;即使是经验丰富的资深财务&#…

设置一个vue文件的全局模板

VsCode在新建一个.vue文件的时候是空白的&#xff0c;需要我们自己输入片段&#xff0c;可这些在每次新建.vue文件都需要自己手敲&#xff0c;所以创建一个模板方便使用 设置vue模板 导入 {"生成 vue 模板": {"prefix": "vue","body"…

浅谈EC防御技术

两种常见的时效校验机制&#xff1a;TTS三重时间戳、EC计数 小菜最近接触的是EC计数&#xff0c;后续有机会的话有也会介绍哦TSS防御 某一层中&#xff0c;通信实体将数据加上EC计数&#xff0c;发送给对等实体&#xff0c;对等实体根据此进行接收信息间隔预期&#xff0c;通过…

柯桥西班牙语里最“好用”的脏话:一些关于cojones的表达

Creo que una de las palabras con ms contextos donde se puede utilizar y que adems pronto es conocida por los estudiantes de espaol es esta que est en el ttulo. 相信标题中的这个单词“cojones”&#xff0c;使用时总是包含很多含义&#xff0c;同时也是西语学习者最…

Power BI - 5分钟学习增加索引列

每天5分钟&#xff0c;今天介绍Power BI增加索引列。 什么是增加索引列&#xff1f; 增加索引列就是向表中添加一个具有显式位置值的新列&#xff0c;一般从0或者从1开始。 举例&#xff1a; 首先&#xff0c;导入一张【Sales】样例表(Excel数据源导入请参考每天5分钟第一天)…

SuperMap iManager 11i(2023) SP1新特性汇总

作者&#xff1a;ls 【目录】 &#xff08;一&#xff09;GIS云套件支持发布聚合服务&#xff08;二&#xff09;GIS云套件支持自定义/修改服务接口信息&#xff08;三&#xff09;GIS云套件管理界面支持批量修改镜像&#xff08;四&#xff09;GIS云套件管理界面可调整服务节点…

浏览器同时渲染多个高频率更新图表问题分析及解决方案

需求点&#xff1a;一个页面同时渲染十余个刷新频率为100ms的图表 问题分析 首先&#xff0c;我们知道根据浏览器运行原理&#xff08;不知道可以参考-浏览器运行原理&#xff09;&#xff0c;渲染进程是无法实现如此多图表同时高频率渲染的。造成的后果就是&#xff0c;1. 后…

【ChatGLM3】第三代大语言模型多GPU部署指南

关于ChatGLM3 ChatGLM3是智谱AI与清华大学KEG实验室联合发布的新一代对话预训练模型。在第二代ChatGLM的基础之上&#xff0c; 更强大的基础模型&#xff1a; ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、…

vue 数据更新了,但在页面上没有展示出来

这是因为有时候 vue 无法监听到数据的变化&#xff0c;导致数据变化但是视图没有变化&#xff0c;也就是数据更新了&#xff0c;但在页面上没有显示出来。 方法一&#xff1a;使用 this.$set() 进行数据更新 this.$set(target, key, value); target&#xff1a;要更改的数据源…