2022
我们一起努力

AOF数据持久化(理论) - 行业资讯

持久化原理:

       AOF<二进制文件>比RDB方式有更好的持久性。

       redis会将每一个收到的写命令都通过write函数追加到文件最后,类似msyql的binlog。

       当redis重启时,会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

         

优点:可以保持更高的数据完整性。

            如果设置追加file的时间是1s,那么redis发生故障,最多会丢失1s的数据;

            如果日志写入不完整,支持redis-check-aof来进行日志修复;

            AOF文件没被rewrite之前(文件过大时会对命令进行合并重写),

            可以删除其中的某些命令(比如误操作的flushall)。

缺点:AOF文件比RDB文件大,且恢复速度慢。 

   

   AOF默认关闭。

   

配置文件相关参数:

            appendonly yes

            appendfilename ””     #AOF保存的文件名

            

同步方式相关的配置:

            appendfsync always    #一旦插入命令,立即同步到磁盘,完全的持久化,但是速度慢,不推荐

            appendfsync everysec        #AOF每秒进行同步

            appendfsync no         #不自动同步,性能最好,但是持久化没有保证

            

存储过程:

         将快照内容以命令的形式追加到AOF文件中,

         所以随着追加,AOF文件会越来越大,保存的AOF文件存储了执行的所有命令,

         所以可以进行修改文件来撤销输错的命令(在重写之前,如果重写了就没有办法了) 

         

对AOF文件进行重写:(解决AOF文件越来越大的问题)

         redis-cli -h ip -p port bgrewriteaof

         

重写命令的操作过程:

         在当前的快照保存结束后,开启一个子进程,将AOF文件进行重写,

         合并set命令等操作到一个临时文件,达到缩小文件大小的目的。

         重写结束后,将临时文件替换为新的AOF文件。

         (重写过程中如果有新的redis操作命令,会提交到缓存中,重写结束后追加到AOF文件内) 

         

         说明:redis2.4以上版本,重写机制自动触发。触发的相关redis.conf配置如下:

         auto-aof-rewrite-percentage 100

         当目前的AOF文件大小超过上一次重写文件大小的百分之几时进行重写,

         如果没有重启过,则以启动时的AOF文件大小为依据)

         auto-aof-rewrite-min-size 64mb(允许重写的最小AOF文件大小);

         

数据恢复:

        重启redis服务,前提是配置文件必须设置了appendonly yes,然后会从appendfile的文件加载文件。

        反之是从RDB中加载数据的。

赞(0)
文章名称:《AOF数据持久化(理论) - 行业资讯》
文章链接:https://www.fzvps.com/16753.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!