[redis]主从同步机制

高可用:

1.数据尽量少丢失 aof/rdb

2.服务尽量少中断 主从模式

读写分离 从库读操作 主库支持读写操作

为什么分离 如果主从都可以写,必然涉及 加锁,实例协商

主从同步过程

1.从库执行slave of 主库地址,当该命令执行后,会发送给主库一个命令,告知主库开始给我同步

2.主库fork一个子进程,开始生产rdb文件.

为什么不用aof ?rdb小,带宽消耗小. 解析速度快

 

  注意:fork操作其实是会阻塞的.

再看一下增量同步

 

1. repl_backlog_buffer用于主从间的增量同步。主节点只有一个repl_backlog_buffer缓冲区,各个从节点的offset偏移量都是相对该缓冲区而言的。

2. replication buffer用于主节点与各个从节点间 数据的批量交互。主节点为各个从节点分别创建一个缓冲区,由于各个从节点的处理能力差异,各个缓冲区数据可能不同

repl_backlog_buffer里面存的也是写操作命令

replication buffer就是 bufferedWriter,写缓冲区.每个client都有

 

repl_backlog_buffer是所有从库共享的,slave_repl_offset是由从库自己记录的,这也是因为每个从库的复制进度不一定相同

 

 

为什么有主从从同步?

 

主从从同步

1.为什么出现级联同步

主同步时,会fork生成rdb文件,可能会阻塞,会消耗内存,cpu.传输会消耗带宽

 

总结:

  1. Redis采用读写分离的好处:避免了加锁,实例间协商是否完成修改等复杂操作
  2. 全量同步的发生时机:首次上线 和 从库的环形缓冲区位置标识被覆盖
  3. 增量同步保障机制依赖于一个特殊的数据结构:环形缓冲区
  4. 首次同步分为三个阶段,①:建立连接,②:同步RDB文件,③:同步增量数据
  5. 全量同步需要主机fork子进程,产生全量RDB文件,并发送,为了减轻主机的压力,从机之间也可用互相同步
  6. 增量同步可以缓解主机全量同步的压力,它需要特殊机制保障:replication buffer,环形缓冲区,master_repl_offset,slave_repl_offset
  7. 从机的同步位置标识,在环形缓冲区被覆盖后,会触发新的一轮全量同步,所repl_backlog_buffer的大小是redis重要的调优参数
  8. 主从同步有三种机制:全量同步,基于长链接的命令传播(在写这个笔记时把它忽略了),增量同步

 

怎么解决主从同步延迟问题.

1.默认从库会响应读请求.我们可以设置从主库读取(slave-serve-stale-data)

2.监控.

可以监控主从同步的差距.如果太大,可以动态设置禁止读从库吧.

其他不清楚了

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值