Redis linux - Redis持久化

                Redis linax - Redis持久化

  • 持久化快照模式(RDB)
    • 每隔一段时间,把北村中的数据写入磁盘的临时文件,作为快照,恢复的适合把快照文件读进内存,如果宕机重启,内存里的数据会消失,再次启动redis后,数据就会恢复,备份由内存存入磁盘,恢复是由读取磁盘数据到内存。
    • 优势
      • 每隔一段时间数据全量备份
      • 灾备简单,可以远程传输,外发备份文件
      • 子进程备份的时候,主进程不会有任何io操作(写、编辑、删除),保证备份数据的完整性
      • 相对AOF,文件小恢复快
    • 劣势
      • 发生故障时,有可能丢失最后一次未来得及备份的数据
      • 子进程所占用的内存占比和主进程一样,会增加cup的负担
      • 由于定时全量备份是重量级的操作,所以实时备份,不是明智的选择,cup消耗非常高
    • RDB配置(redis.conf)
      • dbfilename:持久化文件名称
      • dir:持久化文件路径
      • save:保存,默认保存机制如下
        • save 3600 1        #15分钟只有1次至9次操作,15分钟后备份
        • save 300 10      #5分钟只有10次至9999次操作,5分钟后备份
        • save 60 10000  #1秒钟内,10000次或以上次数操作,每秒备份
      • stop-writes-on-bgsave-error
        • yes:如果持久化过程出错则停止写操作
        • no:跳过报错继续操作,可能造成数据不一致
      • rdbcompression
        • yes:开启rdb压缩模式,有cup性能消耗
        • no:不对持久化文件进行压缩
      • rdbchecksum
        • yes:使用CRC64算法对rdb数据进行校验,消耗cup性能,占比10%左右
        • no:不进行校验
  • 持久化日志模式(AOF)
    • 会记录每一次io操作(写、编辑、删除),数据强一致性,文件以追加的形式写入,数据恢复时是读取整个文件的写入操作
    • 优势
      • AOF更加耐用,可以以秒级别为单位备份,如果发生问题,也只会丢失最后一秒的数据,大大增加了可靠性和数据完整性。所以AOF可以每秒备份一次,使用fsync操作
      • 以log日志的形式追加,如果磁盘满了,会执行redis-check-aof工具
      • 当数据太大的时候,redis可以在后台自动重写aof。当redis继续把日志追加到老的文件中去时,重写也是非常安全的,不会影响客户端的读写操作
      • AOF日志包含所有写操作,更加便于redis的解析恢复
    • 劣势
      • 相同的数据进行备份,AOF比RDB大
      • 针对不同的同步机制,AOF会比RDB慢,因为AOF每秒都会做备份操作,这样相对于RDB来说效率低,每秒备份fsync没有问题,但是如果客户端的每次写入就做一次数据备份fsybc,redis性能会下降
      • AOF发生过bug,就是数据恢复的时候数据不完整,这样显得AOF会比较脆弱,容易出现bug,因为AOF没有RDB那么简单,但是为了防止bug的产生,AOF就不会根据旧的指令去重构,而是根据当时缓存中存在的数据指令去做重构,这样就更加健壮可靠了
      • AOF的配置(redis.conf)
        • appendonly:AOF持久化开(yes)关(no),默认是关闭状态
        • appendfilename:AOF持久化文件名称
        • dir:持久化目录(与RDB共享配置)
        • appendfsync:同步模式
          • no:不同步
          • everysec:每秒备份,推荐使用
          • always:每次操作都会备份,安全并且数据完整,但是慢性能差
          • no-appendfsync-on-rewrite:重写的时候是否要同步,no可以保证数据安全
          • 重写机制,避免文件越来越大,自动优化压缩指令,会fork一个新的进程去完成重写动作,新进程里的内存数据会被重写,此时旧的aof文件不会被读取使用,类似rdb # 当前AOF文件的大小是上次AOF大小的100% 并且文件体积达到64m,满足两者则触发重写
            • auto-aof-rewrite-percentage 100
            • auto-aof-rewrite-min-size 64mb
  • RDB与AOF持久化技术选择
    • 如果只是单纯的做缓存,则不需要持久化技术
    • 如果能接受一段缓存丢失,对于数据没有那么较真,那么RDB是不错的选择
    • 如果对于数据实时性与一致性要求高,AOF很不错
    • 也可以两者结合使用:
      • 1、用RDB做冷备份,可以在不通的时期对不哦她那个的版本做恢复,AOF做热备份,保证数据丢失性与占比最小。当AOF文件破损了在用RDB恢复,这样就做到了两者的结合,也就是说redis恢复会先加载AOF,如果AOF有问题了,就会加载RDB这样就达到了冷热备份的目的了
      • 2、同样是用RDB做冷备份,用AOF做热备份,恢复的时候先加载RDB,RDB空白处没有进行备份的数据,在AOF日志文件中提取,这样可以大大提升恢复数据的速度,也可以在RDB备份间隔与AOF文件重构大小动动脑筋,达到优化的效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值