replication_buffer 与 replication_backlog_buffer 之间的区别
replication_buffer 复制缓冲区
作用:主节点开始和一个从节点进行全量同步时,会为从节点创建一个输出缓冲区,这个缓冲区就是复制缓冲区。当主节点向从节点发送 RDB 文件时,如果又接收到了写命令操作,就会把它们暂存在复制缓冲区中。等 RDB 文件传输完成,并且在从节点加载完成后,主节点再把复制缓冲区中的写命令发给从节点,进行同步。对主从同步的影响:如果主库传输 RDB 文件以及从库加载 RDB 文件耗时长,同时主库接收的写命令操作较多,就会导致复制缓冲区被写满而溢出。一旦溢出,主库就会关闭和从库的网络连接,重新开始全量同步。所以,我们可以通过调整 client-output-buffer-limit slave 这个配置项,来增加复制缓冲区的大小,以免复制缓冲区溢出。
replication_buffer是在全量复制阶段和增量复制阶段都会出现,主节点会给每个新连接的从节点,分配一个replication_buffer;- 当
replication_buffer满了,会导致连接断开,删除缓存,从节点重新连接,重新开始全量复制。
replication_backlog_buffer复制积压缓冲区
作用:主节点和从节点进行常规同步时,会把写命令也暂存在复制积压缓冲区中。如果从节点和主节点间发生了网络断连,等从节点再次连接后,可以从复制积压缓冲区中同步尚未复制的命令操作。对主从同步的影响:如果从节点和主节点间的网络断连时间过长,复制积压缓冲区可能被新写入的命令覆盖。此时,从节点就没有办法和主节点进行增量复制了,而是只能进行全量复制。针对这个问题,应对的方法是调大复制积压缓冲区的大小
repl_backlog_buffer是在增量复制阶段出现,一个主节点只分配一个repl_backlog_buffer;repl_backlog_buffer, 是一个环形缓冲区,用于主从服务器断连后,从中找到差异的数据- 当
repl_backlog_buffer满了,因为是环形结构,会直接覆盖起始位置数据; replication offset,标记上面那个缓冲区的同步进度,主从服务器都有各自的偏移量,主服务器使用master_repl_offset来记录自己写到的位置,从服务器使用slave_repl_offset来记录自己读到的位置。
4354

被折叠的 条评论
为什么被折叠?



