当前位置:Gxlcms > 数据库问题 > [redis读书笔记] 第三部分 多机数据库的实现 复制

[redis读书笔记] 第三部分 多机数据库的实现 复制

时间:2021-07-01 10:21:17 帮助过:26人阅读

1. 首先,主从服务器都会记下同步的字节数,所谓复制偏移量,主服务器上记录 同步多少字节给从服务器,从服务器记录接收到主服务器同步多少个字节,下图15-7中同步了10086字节的数据

如果断链后恢复,从服务器发送PSYNC给主服务器,带上本地的复制偏移量,主服务器比较后发现和本地的不一样,就意味着主从数据不一致,需要进行数据同步。

技术分享技术分享

2. 主服务发现本地的offset和从服务器的offset不一致,意味着要进行数据同步,怎么同步呢?

主服务器中会有一个固定长度(1MB)的FIFO的复制积压缓冲区,每个复制到从服务器的字节,都会储存在这个缓冲区中,每个字节都对应到一个offset.

当从服务器发送PSYNC,带来自己的offset,主服务器会在复制积压缓冲区中查找,如果offset+1依然在缓冲区中,没有被挤压出队列(固定长度FIFO,存储最新的命令,如果队列满,最老的命令会被挤压出队列),就可以执行部分复制。否则就要进行全部复制,即SYNC

技术分享

 

 技术分享

2.服务器运行ID,从服务器会存储主服务器的运行ID,此ID是全局唯一的。如果断链再建联,主服务器发现从服务器发来的主服务器运行ID(伴随PSYNC命令)和自己的不一样,那么就要进行完整的复制,如果ID一致,可以选择进行部分复制。

 

技术分享

 

[redis读书笔记] 第三部分 多机数据库的实现 复制

标签:没有   logs   com   读书笔记   需要   全局   主从   接收   时间   

人气教程排行