RDB与AOF孰优孰劣?

RDB 与 AOF

RDB 基于内存快照,有两种方式 save 和 bgsave,前者会阻塞 redis 服务,后者是异步 fork 子进程不影响主进程提供服务。大部分情况,我们会通过配置时间间隔触发 RDB 文件写入。RDB 文件中保存的是 redis 内存中所有的数据一份快照。
优点是:
  • 相同的数据量下,rdb 文件要小于 aof 文件,且恢复速度要快于 aof
  • rdb 文件中是整个数据的完整备份快照,数据存储紧凑即便不同版本的 redis,也能顺利恢复
  • 整个 rdb 持久化,只需要 fork 一个子进程进行持久化即可,父进程依然可以提供服务,效率最大化
缺点是:
  • 容易丢失数据,即便配置了事件时间触发备份,也至少丢失一秒数据
  • 如果数据量太大,fork 子进程的时候会阻塞毫秒级别时间
AOF 是基于命令操作日志,每条更新命令都会被刷到缓存区,然后在特定的时间节点被写入 aof 磁盘文件。
优点是:
  • 相较于 RDB,AOF 数据可靠性更强,最多丢失一秒数据
  • 数据库容错率变好,一些误操作可以通过直接改 aof 文件进行回退
缺点是:
  • AOF 文件通常较大且恢复效率比不上 RDB,不适合做数据冷备份

  • 总的来说,AOF 策略会使数据稳定性更高,具有更完整的数据备份,RDB 恢复效率高适合做灾难恢复,建议生产环境上两者都开启。

原创文章 280 获赞 464 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_33709508/article/details/105809564