RDB和AOF持久化策略精准解读

Redis持久化策略

redis提高俩种持久化策略:RDB和AOF。

开启俩种持久化方式的话,redis重启的时候会优先采用AOF文件来恢复数据,因为AOF文件比RDB文件保存的数据更完整。

RDB持久化策略

通过制定的时间间隔生成快照对数据进行存储,Redis 将数据库快照保存在名字为 dump.rdb的二进制文件中。当 Redis 需要保存 dump.rdb 文件时, 服务器执行以下操作:

  • Redis 调用forks. 同时拥有父进程和子进程。

  • 子进程将数据集写入到一个临时 RDB 文件中。

  • 当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。

优点

1)PDB文件非常紧凑,并且可以根据时间段来保存数据,适用于数据库的收集。

2)PDB是紧凑的单一文件,方便传输,适合容灾恢复

3)redis 父进程fork一个子进程 不影响redis的性能

4)恢复大数据优于AOF

缺点

1)丢失数据比较多

2)fork进程比较耗时 会影响redis响应速度

AOF持久化策略

通过记录每次对服务器写的操作到文件末尾,并且可以对AOF进行重写,减少所占内存空间。

优点

1)默认秒级的fsync方式,丢失数据少。

2)AOF是一个只追加写的日志文件,即使磁盘空间已满,写的过程中宕机,未执行完整的写入命令,也可以用redis-check-aof工具修复。

3)日志重写机制:重写后的新 AOF 文件包含了恢复当前数据集所需的最小命令集合。 整个重写操作是绝对安全的,因为 Redis 在创建新 AOF 文件的过程中,会继续将命令追加到现有的 AOF 文件里面,即使重写过程中发生停机,现有的 AOF 文件也不会丢失。

4)有序地存储写入操作, 这些写入操作以 Redis 协议的格式保存,易读懂易分析。

缺点

1)同样数据集,文件大于RDB

2)fsync策略,速度慢于RDB

三种fsync方式

  • 每次有新命令追加到 AOF 文件时就执行一次 fsync :非常慢,也非常安全

  • 每秒 fsync 一次:足够快(和使用 RDB 持久化差不多),并且在故障时只会丢失 1 秒钟的数据。

  • 从不 fsync :将数据交给操作系统来处理。更快,也更不安全的选择。

推荐使用每秒fsync一次 这样数据丢失也只会丢失一秒的数据,兼顾了速度和安全性

备份redis数据

  • 创建一个定期任务(cron job), 每小时将一个 RDB 文件备份到一个文件夹, 并且每天将一个 RDB 文件备份到另一个文件夹。

  • 确保快照的备份都带有相应的日期和时间信息, 每次执行定期任务脚本时, 使用 find 命令来删除过期的快照: 比如说, 你可以保留最近 48 小时内的每小时快照, 还可以保留最近一两个月的每日快照。

  • 至少每天一次, 将 RDB 备份到你的数据中心之外, 或者至少是备份到你运行 Redis 服务器的物理机器之外。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毛毛怪不奇怪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值