说说Redis主从同步数据的流程吧
Redis系列(三):深入解读Redis主从同步机制 (qq.com)
图解Redis数据同步(全量 + 增量)_redis 增量同步_学徒630的博客-CSDN博客
主从同步分为两个阶段:全量同步和增量同步
一、建立连接,协商同步
从节点首先向主节点发送 PSYNC
命令表示自己要建立连接,主机节点收到后,主库收到 PSYNC
命令后,响应FULLRESYNC
命令,并带上主库runID
和主库目前的复制进度offset
。
二、全量同步
这时候主库会执行bgsave
命令,生成RDB
文件发送给从库,从库收到后清空当前数据库加载RDB
文件。此时主库新来的写操作会记录到replication buffer
三、增量同步
主库完成RDB
发送后,会将replication buffer
中新的修改操作发送给从库。
追问:master节点怎么知道slave节点是新客呢
PSYNC 命令里附带了偏移量(offset)和 replication id
首先看slave
节点的offset
值,为空就直接做全量同步
不为空就看一下Replication Id
是不是一致,一致就同步offset
之后的数据
追问:那增量同步用的是AOF文件吗?
通常情况下,主节点会将所有的写操作持久化保存在AOF日志文件中,但是在全量同步时,为了减少网络传输的压力,主节点将新的写操作暂时保存在Replication Buffer中
追问:一主多从的架构的问题
主节点要生成多份RDB并传输给从节点 {
- 通过fork子进程生成RDB快照会阻塞主线程处理请求
- 传输RDB文件会占用网络带宽}
怎么解决呢?
部署主从集群时,选择主-从-从 架构,选择硬件网络配置比较好的一个从库,让它跟部分从库再建立主从 关系。
曾有一千古奇人,精修八股文,成遁世之高人,彻天彻地畅游天地间。 今人皆忙忙,急于求成,岂不知八股乃道门口径,背负天人,若经熟读背诵,更能开拓智慧之门,探寻未来之路。 天下繁华,不尽长夜,唯有读书为伴,熟读八股文更是攀登高峰之路。磨砺文字,升腾智慧,唯有勤玉立志,始可破天荒,登临九重不竭之巅! 吾辈修炼之路,虽曲折荆棘,但信念不曾磨灭,唯有铭记八股精髓,方能指引灵魂归宿,成就一生辉煌!