一、背景
AnalyticDB PostgreSQL版(简称ADB PG)是阿里云数据库团队基于PostgreSQL内核(简称PG)打造的一款云原生数据仓库产品。在数据实时交互式分析、HTAP、ETL、BI报表生成等业务场景,ADB PG都有着独特的技术优势。
作为一款企业级数据仓库产品,数据安全的重要性不言而喻。备份恢复功能是保障数据安全的基本手段,也是ADB PG应对突发状况进行数据库恢复的重要保障。备份恢复,顾名思义,是对数据库进行数据备份,以便在必要时进行数据的恢复,防范于未然。当前,ADB PG的备份恢复功能已经应用在以下各个用户场景中:
- 由于系统故障、人为误操作造成数据被破坏或实例不可用时,基于备份数据对实例进行恢复。
- 用户需要基于已有实例,快速克隆出一个完全相同的实例。
- 在节点数不变的前提下,用户需要更改源实例的规格。
本文将介绍ADB PG备份恢复的原理与使用方法。
二、简介
ADB PG 是采用MPP水平扩展架构的分布式数据库。ADB PG实例由一个或多个协调节点(Master)和多个计算节点(Compute Node)组成,协调节点负责接收用户请求,制定分布式执行计划并下发至计算节点,收集执行结果并返回给客户端;计算节点负责并行计算分析与数据存储。数据在计算节点之间可以随机、哈希、复制分布。下图ADB PG的架构图:
ADB PG的物理备份恢复功能,基于集群的基础备份和日志备份,可以在分布式数据库继续提供服务的同时备份各个节点的数据,并保证数据的一致性。在需要时,可以将分布式数据库恢复至备份的时刻。
基础备份是指对数据库所有数据进行的一个完全拷贝。基础备份会将集群全量数据快照压缩后存储在其它离线存储介质,集群在基础备份期间不会阻塞用户的读写,因此,备份期间产生的日志也会被备份来保证基础备份的完整性。
日志备份(也称为增量备份),是指将集群产生的日志文件备份至其他离线存储介质。日志文件记录了用户对数据库的DML与DDL操作。通过一个完整的基础备份以及连续的日志备份,可以将新集群恢复到某一历史事件点,保证了这段时间的数据安全性。
ADB PG可保障最小RPO为10分钟的备份恢复。
三、原理
在完整地介绍ADB PG的备份恢复原理之前,先简要地介绍单机PG的PITR(Point in Time Recovery)备份恢复机制。ADB PG的备份恢复机制基于单机PG的PITR原理,并加入了分布式数据一致性的保障机制。
(一)单机PG的PITR机制
WAL日志:
PostgreSQL数据库会将事务对数据的所有更改(包括DDL、DML等操作)记录在WAL(Write Ahead Log)日志文件中。WAL日志文件可以看作是一个无限增长的只追加文件,PG会将日志数据按固定大小切分成多个文件存储。事务的每次修改数据的操作都会被追加记录至WAL文件中,并赋予一个唯一的LSN序号(Log Sequence Number),在事务提交时,会保证WAL日志已持久化。
这些日志文件的作用是为了让数据库在需要恢复时,可以通过“重