Fork me on GitHub

华为云 DDS 新增 PITR 特性

传统场景下,当数据库需要进行数据恢复时,往往只能选择周期性自动备份的全量备份,数据恢复耗时较长,可恢复时间颗粒度较大,严重影响了客户的使用体验。

华为云DDS,一款兼容MongoDB的文档数据库服务,最近新增的PITR(全称point-in-time recovery,中文名称:时间点恢复)特性能够让这一局面得到大幅改善,实现绝大多数场景下的任意时间点数据恢复,并让可恢复时间精确到秒级。本文主要介绍华为云DDS集群PITR特性的基本原理以及实测性能表现。

1. PITR特性原理

数字化经济时代下,数据成为企业的关键资产。如何保证数据资产的安全、稳定及可用,是企业必须考虑的事情。华为云DDS产品在原生MongoDB的基础上,做了一系列特性增强,使其相对于自建数据库拥有更高可用、高可靠、高安全、低成本等多项优势,更加贴切企业要求,是MongoDB业务上云的不二选择。下面将以华为云DDS4.0集群版本为例,阐述其PITR特性的内部实现原理。

1.1. 基础介绍

集群模式下,PITR特性的实现前提是能够维护一个连续的增量备份,而增量备份的基础,则是一个基于全局一致性的全量备份。

华为云DDS集群在应用实践中,通过“Hidden节点备份”,“磁盘文件快照”,“Oplog备份”的方式,在既有的“逻辑时钟”基础上,做到了全局一致的全量备份,为增量备份的实现打好了坚实基础。原理概要图如下:

image.png

 

1.2. 增量备份

MongoDB官方,本身没有提供增量备份和PITR恢复的方案。为了实现集群模式的增量备份,华为云DDS专门对原生ChangeStream接口进行了增强,简称PCS接口。

之所以选用增强ChangeStream接口的方式,而不是原生ChangeStream或者oplog作为增量数据,主要是为了加快增量备份的速率,同时屏蔽集群实例内部的各种变化(如均衡/故障/主备延时等);此外还对ChangeStream场景进行进一步增强,以使得增量备份过程更具有可靠性(可以断点续传)和稳定性(基于备节点读数据,分担主节点压力),从而为PITR特性奠定基础。

image.png

增量备份示意图

如上图所示,PITR提供的增量备份是基于全局一致性的全量备份进行的,增备频率作为可调整参数,根据不同客户的业务场景进行调整,尽可能地做到了实时备份。

增量备份内部实现是基于华为自研的PCS接口,即使在发生不可预测的异常时,只要实例最终状态能恢复成功,在大多数场景下,都可以实现增量备份的全时间覆盖。

增量备份内部过程:(1) 采用了多并发导出的机制,提升了增量备份的性能。(2) 相比社区特性,覆盖了更多用户侧的业务操作,增强了增量备份的场景覆盖范围。

1.3. PITR恢复

PITR恢复,是借助于全量备份和增量备份进行的。华为云DDS在大部分场景下,都可以基于历史上的任一时间点,以秒为单位进行数据恢复。

image.png

PITR恢复过程示意图

如上图所示,PITR优先选择最近的一次全量备份,先进行全量恢复;然后依次恢复之后的各个增量备份,直到恢复至用户指定的时间点。在增量数据恢复过程中,华为云DDS专门添加了一层优化器,可以加速增量数据的恢复,实现了文档级别的并发恢复。

2. PITR性能表现

经过测试,在特定同等数据模型及业务压力场景下,华为云DDS基于PITR特性进行秒级时间点恢复时,恢复性能大都优于同类产品,更加有利于达到快速恢复数据的目的。

实例规格:DDS 4.0 集群 2U4G 2mongos2shard

测试场景:4库X4表,hash分片,每表预置100chunk,每表使用ycsb插入200W条数据

恢复数据量:5X5X1000w(158G)

image.png
 

3.总结

企业数字化转型如火如荼,面临的业务挑战也愈加复杂,一款具备优秀的备份恢复特性的数据库,在企业数据库选型过程中起到了很好的加分作用。华为云DDS集群的PITR特性提供了完整且稳定的备份恢复功能,既能保证数据本身的安全,也便于客户集中精力在自身的业务实现上,助力业务发展更上一层楼。


本文地址:https://www.6aiq.com/article/1661863773460
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出