Redis 主从数据同步
Redis 数据同步
全量同步
redis 从节点第一次连接主节点采用的是全量同步,包括两个阶段:
第一阶段:
- 从节点执行slaveof命令和主节点建立了连接,然后发送同步请求;
- 主节点收到消息判断是否是第一次请求,如果是,将数据版本信息发送给从节点;
- 从节点存储存储数据版本信息;
第二阶段:
- 主节点后台 fork 子进程生成 RDB;
- 将生产的 RDB 文件发送给从节点;
- 由于在记录 RDB 的同时会生成指令,主节点将这部分指令存储到repl_baklog;
- 将 repl_baklog 的指令发送到从节点;从节点进行存储;
数据同步原理
全量同步过程有一个问题:主节点如何判断一个从节点是第一次同步数据?
实际上每一个 redis 节点都会有一个 replication id ,称为数据集ID。从节点第一次请求主节点,会带上 replication id,主节点收到从节点 replication id,和自己的 replication id 对比,如果不相同说明是第一次请求同步数据,主节点将自己的 replication id 发送给从节点,从节点存储主节点的 replication id,从节点后续请求再带上该 replication id。
此外,主节点如何知道每次从 repl_baklog 中获取哪部分数据同步从节点?
实际上主节点向从节点同步数据时,会带上两个个参数:replication id 和 offset, offset 标记每次复制数据的偏移量。往后同步从节点带上 replication id 和 offset 即可。
增量同步
增量同步一般发生在重启阶段:
- 从节点带上 replication id 和 offset 向主节点请求同步;
- 主节点根据 replication id 判断是否和自己的一致;如果一直则回复继续;
- 主节点从 repl_baklog 中取出数据,同步到从节点;
- 从节点接收之后存储指令;
增量同步过程中需要注意一个问题:repl_baklog 是一个循环数组,offset 是主节点和从节点同步内容的偏移量。由于 repl_baklog 是一个循环数组,当从节点停止过长时间,旧数据会被新数据覆盖,这时候只能做全量同步。
主从同步优化
可以从这几个方面来优化主从集群:
- 在 master 中配置 repl-diskless-sync yes 启动无磁盘复制,避免全量同步时的磁盘IO;
- Redis 单节点的内存占用不要太大,减少 RDB 导致的过多磁盘IO;
- 适当提高repl_baklog的大小,发现slave宕机时尽快实现故障恢复,尽可能避免全量同步;
- 限制一个 master 的 slave 节点,如果需要较多的 slave,可以采用主-从-从链接模式;
Redis 主从数据同步相关推荐
- 生产环境主从数据同步不了?
生产环境主从数据同步不了? 经历过程: 一般我们常常在做主从复制的时候,可能是很少遇到到错误,那都是因为,你做主从基本用的是,本地虚拟机做,或者一些测试环境做.但是当我们把主从复制部署到生成环境就出问 ...
- mysql主从同步默认延迟_减少mysql主从数据同步延迟问题的详解
基于局域网的master/slave机制在通常情况下已经可以满足'实时'备份的要求了.如果延迟比较大,就先确认以下几个因素: 1. 网络延迟 2. master负载 3. slave负载 一般的做法是 ...
- 减少mysql主从数据同步延迟问题的详解
基于局域网的master/slave机制在通常情况下已经可以满足'实时'备份的要求了.如果延迟比较大,就先确认以下几个因素: 1. 网络延迟 2. master负载 3. slave负载 一般的做法 ...
- DNS服务器(DNS服务器构建,特殊的解析记录,多域名DNS服务器架构,DNF主从架构,DNS主从数据同步)
学前提示: 需要两台虚拟机 虚拟机A:主机名位svr7 IP:192.168.4.7 虚拟机B:主机名pc207 IP:192.168.207 一.进行环境的设置 1.修改两台虚拟机的SELinux ...
- Postgres主从数据同步
目录 Postgres数据备份的三种方式及比较... 1 ① Archive. 1 ② 流复制... 1 ③ 逻辑复制... 1 流复制... 1 ① 原理... 1 ② 配置... 3 1. 修改主 ...
- Redis主从数据不一致及读取过期数据问题的解决方案
主从数据不一致问题 因为主从库间的命令复制是异步进行的,所以有可能客户端从从库中读取到的值和主库中的最新值并不一致. 具体来说,在主从库命令传播阶段,主库收到新的写命令后,会发送给从库.但是,主库并不 ...
- Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步
目录 1, 环境 2, Redis简介 3, Gearman简介 4, MySQL - Redis配合使用方案 4, 软件安装 5, MySQL UDF + Trigger同步数据到Gearman 6 ...
- windows配置mysql8.0主从数据库,主从数据同步。
本地配置两个mysql8.0数据库用作主从数据库,同一个服务器安装多个mysql服务,只要端口不一样. 1.下载安装包 mysql下载地址:https://dev.mysql.com/download ...
- gearman mysql redis_gearman redis mysql 数据同步
一.mysql数据库操作: [root@localhost html]# mysql -u root -p mysql> create database mytest; mysql> CR ...
最新文章
- javascript tab切换类LixTabs最新版
- 观点 | 医疗AI:新瓶装旧酒VS新瓶装新酒?——道彤投资创始合伙人孙琦
- SAP SD基础知识之SD常见流程概述
- IBatis手动刷新缓存
- 博士在淘宝“扫垃圾”
- C#之foreach语句
- 读《我们应当怎样做需求分析》后
- hashcode值一样对象一定相同吗_硬核问题,为什么重写equals()就要重写hashCode()?
- ORL 人脸库 BP神经网络人脸识别
- WindowsBuilder安装使用
- PDF复制文本快速去除换行,解决段落错乱
- UE4 蓝图 循环调用
- 博思得标签打印机驱动_博思得打印机驱动
- python如何取消上一步操作的快捷键_ai返回上一步的快捷键是什么
- vivado仿真无法运行,停滞,跑不下去的一种解决办法
- h5调用Android、ios的方法
- html图片怎么做成链接,HTML的链接代码怎么做?HTML的图片链接怎么制作?
- php检测wifi,WFilter插件 - 随身wifi和私接路由检测
- java获得对象类名_获取Java中各种对象的类名
- 记录微信获取平台证书支付错误 错误的签名,验签失败
热门文章
- 图像传感器噪声建模与分析
- 360极速浏览器安装谷歌浏览器插件.CRX报CRX_VERSION_NUMBER_INVALID问题的解决
- 商业世界的革新,数字化转型的“顶层设计”
- 半导体材料 MOOC学习记录 第十四章 新型半导体材料SiC
- 企业架构治理指什么,如何做?
- ios h5 长按放大镜效果关闭
- Wireless Image Transmission Using Deep SourceChannel Coding With Attention Modules 阅读2021
- EPICS记录参考--Histogram记录(histogram)
- Word基础(七)文字添加拼音
- python 工具变量回归_stata工具变量法一例:使用2SLS进行ivreg2估计及其检验