美文网首页
Redis备份

Redis备份

作者: 剑客kb | 来源:发表于2018-10-05 11:17 被阅读0次

    Redis提供两种备份方式:RDB 持久化机制和AOF 持久化机制

    1、RDB持久化机制

    会在指定时间点生成数据集快照,通过save(阻塞的)和bgsave(后台 fork 子进程进行不会阻塞主进程处理命令请求)指令来生成RDB文件,如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务

    优点

    • 比起 AOF,在数据量比较大的情况下,RDB的启动速度更快;
    • RDB文件方便传输,可以在异地快速启动新服务
    • 性能好,可以起fork子进程,不影响主线程

    缺点

    • 数据丢失,假设5分钟备份一次,在宕机的这5分钟数据就丢失了
    • 当数据量很大时,在 fork 子进程备份过程中,会出现明显的停顿现象

    AOF 持久化机制

    记录 server 端收到的每一条写命令,当 server 重启时会进行重放以此来重建之前的数据集。AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加(append)到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite) ,使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。AOF 持久化实现可以分为命令追加(append)、文件写入(write)、文件同步(fsync) 三个步骤。Append 追加命令到 AOF 缓冲区,Write 将缓冲区的内容写入到程序缓冲区,Fsync 将程序缓冲区的内容写入到文件。

    优点

    • 比RDB可靠。你可以制定不同的 fsync 策略:no、everysec 和 always。默认是 everysec。这意味着你最多丢失一秒钟的数据
    • 当AOF文件太大时,Redis 会自动在后台进行重写。重写很安全,因为重写是在一个新的文件上进行,同时 Redis 会继续往旧的文件追加数据。新文件上会写入能重建当前数据集的最小操作命令的集合。当新文件重写完,Redis 会把新旧文件进行切换,然后开始把数据写到新文件上

    缺点

    • AOF比较大,比RDB大

    Redis 4.0 混合持久化

    Redis 4.0 开始支持 RDB 和 AOF 的混合持久化(默认关闭,可以通过配置项 aof-use-rdb-preamble 开启)。如果把混合持久化打开,AOF 重写的时候就直接把 RDB 的内容写到 AOF 文件开头。先以RDB格式写入全量数据,再追加增量日志,这样既可以提高AOF Rewrite和恢复速度,也可以减少文件大小,还可以保证数据的完毕性。这样做的好处是可以结合 RDB 和 AOF 的优点, 快速加载同时避免丢失过多的数据。当然缺点也是有的, AOF 里面的 RDB 部分就是压缩格式不再是 AOF 格式,可读性较差。

    相关文章

      网友评论

          本文标题:Redis备份

          本文链接:https://www.haomeiwen.com/subject/chxqaftx.html