
Redis主从复制原理
发布日期:2021-05-06 23:31:01
浏览次数:11
分类:技术文章
本文共 885 字,大约阅读时间需要 2 分钟。
文章目录
1.主从复制原理
开始full resynchronization的时候,master会启动一个后台线程,开始生成一份RDB快照文件,同时还会将从客户端收到的所有写命令缓存在内存中。RDB文件生成完毕之后,master会将这个RDB发送给slave,slave会先写入本地磁盘,然后再从本地磁盘加载到内存中。然后master会将内存中缓存的写命令发送给slave,slave也会同步这些数据。
slave node如果跟master node有网络故障,断开了连接,会自动重连。master如果发现有多个slave node都来重新连接,仅仅会启动一个rdb save操作,用一份数据服务所有slave node。
2.断点续传
从redis 2.8开始,就支持主从复制的断点续传,如果主从复制过程中,网络连接断掉了,那么可以接着上次复制的地方,继续复制下去,而不是从头开始复制一份
master node会在内存中创建维护一个backlog,master和slave都会保存一个replica offset还有一个master id,offset就是保存在backlog中的。如果master和slave网络连接断掉了,slave会让master从上次的replica offset开始继续复制
但是如果没有找到对应的offset,那么就会执行一次resynchronization
3.无磁盘化复制
master在内存中直接创建rdb,然后发送给slave,不会在自己本地落地磁盘了
# yes要先在master落盘,再传给slave。no不需要落盘,直接传repl-diskless-sync no # 等待5s后再开始复制,因为要等更多slave重新连接过来,再把rdb复制给所有slaverepl-diskless-sync-delay 5
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月05日 03时32分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vue爬坑之 父组件向子组件异步传参 子组件中拿不到值的解决方法
2019-03-04
js基础复习5-原型链与js的成员查找机制
2019-03-04
js基础复习8-call方法简单使用以及javascript继承
2019-03-04
【游记】被吊打DAY2
2019-03-04
6.docker迁移与备份
2019-03-04
ThinkCMF报错未定义变量vo
2019-03-04
微信公众号开发之素材管理
2019-03-04
修改dynamic web module的版本大小
2019-03-04
IDEA 成功在tomcat上部署项目
2019-03-04
Node.js response 页面中文乱码
2019-03-04
谷歌浏览器 禁用JavaScript
2019-03-04
gitee 修改个人域名 个人空间地址 URL
2019-03-04
C++11中bind的使用错误
2019-03-04
Android中CMake的使用之一初步总结
2019-03-04
一起学智能合约之四表达式和控制结构
2019-03-04
futex同步机制分析之三内核实现
2019-03-04
多线程的伪共享
2019-03-04
flink分析使用之五工作图的生成和分发
2019-03-04
基于OpenCV的路面质量检测
2019-03-04