栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 服务器的物理机器之外。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/684917.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号