标签:主库 主从复制 RUN redis Redis 详解 缓冲区 从库 ID
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 :主库平均每秒产生的写命令数据量;
标签:主库,主从复制,RUN,redis,Redis,详解,缓冲区,从库,ID 来源: https://blog.csdn.net/asdaqqwc/article/details/123083210
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。