redis-持久化主从同步数据

redis持久化方式:

  • RDB:RDB 持久化机制,是对 Redis 中的数据执行周期性的持久化。

  • AOF:AOF 机制对每条写入命令作为日志,以 append-only 的模式写入一个日志文件中,因为这个模式是只追加的方式,所以没有任何磁盘寻址的开销,所以很快,有点像Mysql中的binlog。

RDB更适合做冷备份,AOF更适合做热备份

两种机制全部开启的时候,redis在重启的时候会默认使用AOF去重新构建数据,因为AOF的数据是比RDB更完整的。

RDB:

优点:

同步数据使用fork子进程,对外提供读取能力,对性能影响小恢复数据快

缺点:

备份间隔时间大,发生丢失数据影响大,备份快照文件太大会造成暂停,对本身性能影响

AOF:

优点:

可以更好的保护数据不丢失,日志文件以append-only模式写入(以追加的方式记录所有写操作的命令到磁盘文件里面),写入效率高

缺点:

日志文件通常比RDB数据快照文件更大,支持的写QPS会比RDB支持的写QPS

主从数据同步

启动一台slave 的时候,他会发送一个psync命令给master ,如果是这个slave第一次连接到master,他会触发一个全量复制。master就会启动一个线程,生成RDB快照,还会把新的写请求都缓存在内存中,RDB文件生成后,master会将这个RDB发送给slave。

时间差会导致数据出现缺失使用命令传播+增量复制

命令传播: 

Master节点每处理完一个命令都会把命令广播给所有的子节点,而每个子节点接收到Master的广播过来的命令后,会在处理完之后继续广播给自己的子节点。Master节点处理完客户端的命令之后会立马向客户端返回结果,而不会一直等待所有的子节点都确认完成操作后再返回以保证Redis高效的性能

增量复制

每次处理完命令之后,先写入缓冲区repl_backlog, 然后再发送给子节点。这就是增量复制(也叫部分复制)。但是缓冲区能保存的命令有限,只能至多保存的命令长度为repl_backlog_length,如果某个子节点落后当前最新命令的长度大于了repl_backlog_length,那么就会触发全量复制。

                                                应用别人的图片

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值