用户在使用数据库产品时可能会遇到一些情况,需要将数据还原到特定的时间点。PolarDB作为一款业界领先的企业级数据库产品,拥有强大的备份恢复能力,赋予用户通过指定时间点来查询历史数据状态或者还原历史状态的能力。主要包括以下几部分组成:实例级别的备份与恢复、库表备份与恢复、表回收站以及Flashback query等。 下面我们首先介绍下用户在哪些情况下需要备份恢复及选择哪些备份恢复方法更为合适,然后介绍PolarDB几种备份恢复功能实现的原理。
场景及方案选择
问题场景不同,备份恢复方案的选择也不同,这主要是不同的备份恢复方案所消耗的时间RTO也会有很大不同,在进行数据紧急恢复的时候,RTO起着至关重要的作用,时间节省一分钟,意味着业务恢复的时间就提前一分钟,可以最大程序的减小业务损失。 备份恢复有实例级别备份与恢复,数据的备份恢复是整个实例级别;库表级别备份与恢复,备份同整实例相同,恢复时只恢复特定库表;表回收站是删除表时,不立即删除,将表及表中数据移动到一个回收站的地方,恢复时rename回来;闪回查询保存数据的delta历史版本,通过MVCC回查。几种方案的原理后面会详细介绍,此处先不展开。下面表格整理了下,不同场景选择的备份恢复方案,及对应时间开销:

实例级别备份与恢复
PolarDB支持数据备份和物理日志备份。数据备份即将某个时间点上集群的全量数据生成一个备份集(快照);物理日志备份即记录生成备份集后的增量数据。通过一个完整的数据备份以及后续一段时间的Redo日志备份,就可以将整个PolarDB实例恢复到任意时间点。
实例备份
数据备份
数据备份按照存储位置可分为一级备份和二级备份。
一级备份
一级备份采用ROW(Redirect-on-Write)快照的方式,直接保存在PolarDB分布式存储系统上。每次保存时,一级备份并没有真正复制数据,当数据块有修改时系统会将其中一个历史版本的数据块保留给快照,同时生成新的数据块被原数据引用(Redirect)。因此无论数据库容量多少,都可以做到秒级备份。一级备份保留时长为3~14天。
二级备份
二级备份是指一级备份压缩后保存在其它离线存储介质上的备份数据。保存成本较低,但使用二级备份恢复数据的速度较慢。开启二级备份后,若一级备份超出您设置的保留时间,将会被自动转存为二级备份,转存速度约为150 MB/秒。二级备份支持同地域备份和跨地域备份。二级备份保留时长为30~7300天。
物理日志备份
日志备份通过实时并行上传Redo日志到OSS来达到备份的目的。日志备份方式包括同地域备份和跨地域备份,最短保留时间为3天,最长保留时间为7300天。
实例恢复
实例恢复是指将PolarDB全量历史数据恢复至一个新的实例集群,验证新集群数据后,可以再将恢复后的数据迁移至原集群。实例恢复支持从备份集恢复和恢复到过去时间点两种恢复方式。
备份集恢复
实例备份集恢复是选择其中一个全量数据的快照来恢复,相对于按时间点恢复,不需要拉取及应用增量的redo,恢复的速度更快,但只能恢复备份集对应时间点的数据。
按时间点恢复
按时间点恢复实例是指:通过一个完整的数据全量备份(快照)以及后续一段时间的日志备份,将PolarDB集群恢复到任意时间点(Point-In-Time Recovery,简称PITR),保证最近一段时间的数据安全性,避免误操作导致的数据丢失。恢复到任意时间点时,应用Redo日志的恢复速度大概是20~70秒/GB,整个恢复时间是备份集(快照)恢复时间以及应用Redo日志恢复时间之和。




