🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 主从复制的实现 1. slave 服务启动,slave 会建立和 master 的连接,发送 psync 命令。 2. master 启动一个后台进程将数据库快照保存到 RDB 文件中 > 注意:此时如果生成 RDB 文件过程中存在写数据操作会导致 RDB 文件和当前主 redis 数据不一致,所以此时 master 主进程会开始收集写命令并缓存起来。 3. master 就发送 RDB 文件给 slave 4. slave 将文件保存到磁盘上,然后加载到内存恢复 5. master 把缓存的命令转发给 slave ## 全量复制和部分复制 全量复制 1、第一次建立连接进行数据同步是全量复制 2、从节点发送 psync {runid} {offset} 时,runid 与当前主节点的 runid 不匹配则进行全量复制 3、从节点所需要同步数据的偏移量 offset 不在**复制积压缓冲区**中,也会进行全量复制 部分复制 正常情况下,offect在复制积压缓冲区的 https://mp.weixin.qq.com/s/kNrcwKPD76Pm-WyFozGw9A