暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

看图说话-redis持久化 RDB & AOF

无处不在讲技术 2021-04-18
316

对比介绍


前置说明


fork函数说明


指克隆父进程,复制进程的所有数据(比如地址,指针等,但不是内存中的数据)

故在redis fork时,时间有长有短,但总时间都不会太长。


  • 时间有长有短:父进程的保存的内存对应的地址(指针)数量不同

  • 总时间都不会太长:因为不是复制内存数据,总数据量不会太大


fork()函数返回值有三种情况


  • 等于0,则代表当前进程是子进程

  • 大于0,则代表当前进程是父进程,值为父进程的pid

  • 等于-1,则代表fork失败


对比说明


RDB:二进制文件,压缩保存,内存快照,原子替换

AOF:append-Only,写操作命令以文件形式追加,可读可编辑,文件持续增加需要rewrite

\RDBAOF
启动优先级
体积
恢复速度
数据安全性丢失若干时间内的数据根据策略决定


执行顺序


持久化时,fork子进程时,如果子进程正在被占用,则立即返回,如果未占用,则创建并进行持久化。


RDB


优缺点说明


优点:


  • 体积更小:紧凑二进制文件压缩,比AOF文件小

  • 恢复更快:内存数据的快照,不用重新读写

  • 性能更好:父进制fork子进制操作,父进制不参与磁盘IO,保证机器性能


缺点:


  • 不同版本rdb快照文件有的不兼容

  • 快照保存周期间隔时间长

  • 内存数据过大时,fork时耗时长


配置说明


触发时机:


  • bgsave

  • 正常关闭

  • 时间与写综合配置


    save 900 1      # 表示 900s 内如果至少有 1 个 key 的值变化,则触发RDB
    save 300 10 # 表示 300s 内如果至少有 10 个 key 的值变化,则触发RDB
    save 60 10000 # 表示 60s内如果至少有 10000 个 key 的值变化,则触发RDB

    工作原理



    注:写时复制(copy-on-write)时,物理内存中复制的是一个内存页(4K),而不是一条数据


    AOF


    优缺点说明


    优点:


    • 文件追加方式:追加指令到文件末尾,写操作快

    • fsync策略默认1秒(no/always/everysec 默认),最多丢失1秒数据

    • 文件过大时,触发rewrite,处理成可恢复时当前指定最小集合,并原子替换, rewrite时不是基于旧的指定进行合并,而是基于当前内存数据进行merge,健壮性提高

    • 中途down机后,可以通过check脚本自动恢复到最近成功的指令,减少丢失的数据量

    • 文件可读性好,可人工编辑修改


    缺点:与RDB正好相反


    • 体积较大:指令内容追加文件,内容持续增加,rewrite后减小

    • 恢复较慢:aof文件中的指令回溯

    • 性能较差:fsync时消耗性能


    配置说明


      appendonly no  #是否使用AOF持久化
      appendfsync everysec #多久执行一次将写入内容同步到硬盘上
      no-appendfsync-on-rewrite no #对AOF进行压缩的时候能否执行同步操作
      auto-aof-rewrite-percentage 100 # 多久执行一次AOF压缩
      auto-aof-rewrite-min-size 64mb # 多久执行一次AOF压缩
      dir ./ #AOF所保存的位置


      注:如果aof文件超过配置的百分比大小后,但没有超过auto-aof-rewrite-min-size
      ,也不会rewrite


      三种fsync策略


        # appendfsync always
        appendfsync everysec # 默认
        # appendfsync no


        工作原理


        不需要rewrite时



        需要rewrite时

        appendfsync everysec
        策略为例



        恢复流程


        说明


        同时开启,优先使用aof恢复,如果aof文件不存在,则创建新的文件,如果文件损坏,则自动修复,少量损坏可恢复到最近正常的位置,大量则不恢复,内存为空



        文章转载自无处不在讲技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论