Redis之主从复制原理 详解

2022/2/23 19:26:03

本文主要是介绍Redis之主从复制原理 详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Redis 主从复制

 主要用来实现 redis 数据的可靠性;防止主 redis 所在磁盘损坏,造成数据永久丢失;
 主从之间采用异步复制的方式;从数据库只读不能写
在这里插入图片描述

命令

命令: redis-server --replicaof 127.0.0.1 7001
在 redis 5.0 以前使用 slaveof ;redis 5.0 之后使用 replicaof ;

# redis.conf
replicaof 127.0.0.1 7002
info replication

数据同步

全量数据同步

在这里插入图片描述

增量数据同步

 因为网络抖动,导致主从连接不正常,但是主数据库不断在更新,这时可以将更新的数据放入到环形缓冲区,等到从数据库重连之后,再将环形缓冲区的数据更新到从数据库中。
在这里插入图片描述

服务器 RUN ID

 无论主库还是从库都有自己的 RUN ID,RUN ID 启动时自动产生,RUN ID 由40个随机的十六进制字符组成;
 当从库对主库初次复制时,主库将自身的 RUN ID 传送给从库,从库会将 RUN ID 保存;

 当从库断线重连主库时,从库将向主库发送之前保存的 RUN ID;
  从库 RUN ID 和主库 RUN ID 一致,说明从库断线前复制的就是当前的主库;主库尝试执行增量同步操作;
  若不一致,说明从库断线前复制的主库并不时当前的主库,则主库将对从库执行全量同步操作;

环形缓冲区(复制积压缓冲区)

本质:固定长度先进先出队列;
存储内容:如下图;
当因某些原因(网络抖动或从库宕机)从库与主库断开连接,避免重新连接后开始全量同步,在主库设置了一个环形缓冲区;该缓冲区会在从库失联期间累计主库的写操作;当从库重连,会发送自身的复制偏移量到主库,主库会比较主从的复制偏移量:
若从库offset还在复制积压缓冲区中,则进行增量同步;否则,主库将对从库执行全量同步;

# redis.conf
repl-backlog-size 1mb
# 如果所有从库断开连接 3600 秒后没有从库连接,则释放环形缓冲区
repl-backlog-ttl 3600

大小确定: disconnect_time * write_size_per_second
disconnect_time :从库断线后重连主库所需的平均时间(以秒为单位);
write_size_per_second :主库平均每秒产生的写命令数据量;
在这里插入图片描述



这篇关于Redis之主从复制原理 详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程