写点什么

Redis 数据恢复的月光宝盒,闪回到任意指定时间

作者:Baidu AICLOUD

在数据库的运维工作中,DBA 应该选择哪一种方案,确保 Redis 数据库崩溃后可以对数据进行回档,恢复业务运行?


一般情况下,DBA 可以通过 Redis 原生的持久化机制,如 RDB 快照持久化或者 AOF 日志持久化的方案来进行数据存档。在业务发生问题后,利用 RDB 或者 AOF 存档文件进行数据恢复。这两种方案均可以满足大部分业务场景的需求。


然而,在游戏、电商等场景中,数据库发生故障后需要能够精准、快速的恢复业务,原生的 RDB 或 AOF 方案则难以满足要求,如:


  • RDB 无法恢复至任意时间点。RDB 定期生成全量快照(如每小时一次)保存数据,但两次快照之间的数据变更会丢失。例如:如果在 10:00 和 11:00 各有一个 RDB 快照,但故障发生在 10:30,则只能恢复到 10:00 的状态,丢失 30 分钟的数据。

  • AOF 文件大恢复速度慢。AOF 会记录所有指令的操作,可以实现指定时间点的恢复,但数据量大存储成本高,导致恢复时间远超基于 RDB 的恢复方式。例如:如果 AOF 记录了从 10:00 和 11:00 的所有指令操作,故障发生在 10:35:15,在数据恢复中 Redis 将执行从 10:00:00 到 10:35:15 的全部数据写操作。

1.    百度智能云 Redis 数据恢复方案

百度智能云数据库 Redis 推出的「数据闪回」功能,相比基于 Redis 原生的 RDB 或者 AOF 的恢复方法,「数据闪回」可以使用更小的存储空间,快速地将业务数据恢复到任意指定时间点。

「数据闪回」基于 RDB 和 AOF 的混合持久化方式,使得较少存储空间就能保留完整的数据备份,并为 AOF 新增时间戳,方便快速找到指定时间点的文件。这使得「数据闪回」能满足从小时级到秒级不同场景的数据恢复需求。

1.1.    基于 RDB 和 AOF 的混合持久化方式,保留完整的数据备份

百度智能云 Redis 通过采用 RDB + AOF 混合存储的方式,解决了传统 AOF 方案带来的由于日志数量多、导致数据恢复慢的问题。


  • RDB 提供基础的数据快照,用于快速恢复到一个基准时间点(例如每天凌晨的备份)。

  • AOF 提供增量的操作日志,记录 RDB 基准时间点之后的所有写命令,实现命令级别的数据恢复能力。


开启 AOF 后系统默认记录一周之内的全部命令,到期后系统将自动清除过期的 AOF 文件,自动开始进入新一轮的 RDB 快照 + AOF 记录的周期。

1.2.    新增 AOF 内置时间戳

原生 Redis 的 AOF 文件会记录全部的写命令,但是并没有给这些命令配置时间信息,导致系统无法快速找到指定时间点的文件,使得数据恢复效率受限。


为了解决这一问题,百度智能云 Redis 内核团队按照 Redis 协议设计了百度版本的新的协议。该协议新增 op-header 字段,即为每个 Redis 指令增加了时间戳,使得 Redis 具备按照时间点来快速找到文件的能力。

1.3    数据恢复过程

当用户提出回档需求并指定时间点后,百度智能云的 Redis 将启动数据恢复流程。


首先,平台会克隆出一个与原集群配置完全相同的空 Redis 集群。


随后,系统依据原集群的分片规则和用户指定的时间点,精准定位对应的 RDB 文件与 AOF 文件,将这两类文件加载至 Redis 内存,完成整个数据恢复操作,使 Redis 集群状态精准还原至用户指定的时间节点。

2.    总结

在当今数字化时代,数据的价值不言而喻,而数据恢复能力更是企业业务连续性的关键保障。百度智能云数据库 Redis 的「数据闪回」功能,为 Redis 数据恢复提供了一种创新且高效的解决方案。它不仅解决了传统 RDB 和 AOF 方案的局限性,还通过混合持久化和时间戳技术,实现了秒级精度的任意时间点数据恢复。


更多百度智能云 Redis 「数据闪回」的详细信息,请访问 https://cloud.baidu.com/doc/SCS/s/Mm8wt78ac

发布于: 刚刚阅读数: 6
用户头像

Baidu AICLOUD

关注

还未添加个人签名 2022-06-13 加入

适合跑AI的云

评论

发布
暂无评论
Redis 数据恢复的月光宝盒,闪回到任意指定时间_数据库_Baidu AICLOUD_InfoQ写作社区