当数据库或表被恶意或误删除时,虽然GaussDB支持高可用,但备机数据库会被同步删除且无法还原。因此,数据被删除后只能依赖于实例的备份保障数据安全。GaussDB支持通过备份文件将数据恢复到备份被创建时的状态或指定时间点的状态,从而保证数据的可靠性。
本章节介绍了常见误操作的场景和恢复方案,具体可参考表1。同时,还介绍了备份恢复策略的典型场景与性能规格,相关内容见表2 备份恢复策略典型场景。您可以根据实际情况,选择对应的数据恢复方式。
误操作恢复方案
表1 误操作恢复方案
场景 |
恢复方案 |
恢复数据范围 |
操作指导 |
误删实例
|
进入回收站,如果在回收站找到已删除的实例,可以通过重建操作来恢复实例。 |
所有库表 |
实例恢复:从回收站恢复 |
如果在删除实例之前进行过手动备份,可以在“备份恢复”页面进行恢复。 |
所有库表 |
实例恢复:按备份文件恢复 |
误删表 |
可以采用库表恢复的方式恢复误删的表。 |
|
|
误删数据库 |
可以采用库表恢复的方式恢复误删的数据库。 |
|
误操作表中数据,如整体覆盖、误删除/修改表中的列/行/数据 |
采用库表恢复的方式恢复误操作表中的数据。 |
|
备份恢复策略的场景及性能规格
表2 备份恢复策略的场景及性能规格
备份恢复策略 |
关键性能因素 |
典型数据量 |
性能规格 |
数据库实例备份 |
|
数据:PB级
对象:约100万个 |
OBS备份恢复规格:
- 在标准环境下全量备份恢复的性能规格为2T。数据在8小时以内完成全量备份或全量恢复。
- 如果客户硬件条件较好、obs带宽足够、压缩比较大、独立部署的情况下,全量备份恢复的耗时可以采用如下方式计算:
说明:
- min()为取括号内的最小值。
- 磁盘I/O读带宽:SATA SSD 在200~300MB/s左右,SAS SSD 在500MB/s左右,NVME SSD在1GB/s左右,注意需要预留出给数据库业务运行的I/O带宽,否则备份操作会对业务性能产生明显影响。
- 压缩带宽:当前默认采用LZ4压缩方式,一般在300~400MB/s左右。压缩级别范围为1 ~ 9,当前默认压缩级别为1,当指定更高的压缩级别时,压缩速率会变慢,从而导致备份时间变长,具体时间跟数据特征相关,请以实测为准。
- 单线程OBS传输带宽:非限速模式下,一般在100~300MB/s左右,限速模式下,即为限速值。
- 压缩比:当前默认采用LZ4压缩方式,压缩等级低,压缩比一般在0.1~0.5之间。具体压缩比与数据特征相关,请以实测为准。
- 并行上传参数设置为2及以上时,备份所使用的CPU等资源会上升,备份性能提升与OBS单流传输带宽占OBS总带宽的比值相关,当单流传输带宽乘并行上传参数大于总带宽后,性能将不再提升。
- 分布式实例在恢复hashbucket表扩容重分布期间的备份集时,恢复时长(不包含恢复后重入的重分布流程) ≤ 相同数据量非扩容期间备份集相同方式恢复时长 × 2 + 相同数据量hashbucket表重分布时长。
恢复hashbucket表扩容重分布期间的备份集分为三个阶段。
- 第一阶段:恢复所有节点全量备份,恢复扩容前旧的数据节点的所有增量备份并回放日志。
- 第二阶段:将需要重分布的hashbucket文件从旧的数据节点物理搬迁至扩容出来的新数据节点。
- 第三阶段:恢复扩容出来的新数据节点的所有增量备份并回放日志。
- 分布式实例数据恢复后启动阶段的时长与库的sequence数量和库的数量有关。
- 恢复启动阶段会获取每个库的sequence信息并设置到ETCD中。主要耗时在获取和设置两个阶段:
- 连接每个库获取该库的sequence信息:库越多,耗时越久。
- 设置sequence到ETCD中:sequence越多,耗时越久。
- 更新PGXC表信息:连接每个库更新pgxc_class和pgxc_slice表信息,库越多,耗时越久。
|
库级物理恢复 |
|
- |
OBS库级物理恢复共分为4个阶段,性能规格如下:
- 第一阶段:从备份介质中读取库级恢复的全部数据。在公有云标准环境下的性能规格为:2TB。8小时内完成数据读取。
- 第二阶段:在辅助数据库中对库级数据进行vacuum freeze,vacuum freeze的性能为:
- 分布式:
单分片1400GB/小时,分片间可并行复制。
- 集中式:
1400GB/小时。
- 第三阶段:将vacuum freeze后的库级数据复制到生产实例的各DN副本。复制性能为:
- 第四阶段:将数据导入生产实例。导入性能为:
推荐场景:
- 性能维度:相同数据量下,当前的库级物理恢复性能约为实例级恢复的70%,当恢复的库级数据总数据量小于实例级数据量的70%时,推荐使用库级物理恢复。
- 可用性维度:库级恢复过程中目标实例的其他库可持续对外提供服务,与实例级恢复相比有可用性优势,如果希望库级恢复过程中仍能访问其他库,推荐使用库级物理恢复。
业务影响:
- 库级导入前需要关闭流控,将GUC参数recovery_time_target设置为0,库级恢复期间对生产环境的吞吐量有一定影响,吞吐量通常在峰值吞吐量的50%,最差在系统峰值的25%。
- 建议在业务低峰期进行细粒度恢复。
|
表级物理恢复 |
|
- |
OBS表级物理恢复分为3个阶段,性能规格如下:
- 第一阶段:从备份介质中读取表级恢复的全部数据。在公有云标准环境下的性能规格为:2TB。数据8小时内读取完成。
- 第二阶段:将辅助数据库中的表数据导出至本地文件,导出性能约25MB/s。
- 第三阶段:将本地导出的文件导入到生产实例中,GUC参数page_version_check设置为off时,导入性能约25MB/s(page_version_check为memory性能下降约15%)。受表行数、表索引数量、触发器数量的影响,导入性能可劣化至约10MB/s。
推荐场景:
- 性能维度:相同数据量下,当前的表级物理恢复性能约为实例级恢复的1/5,当恢复的表级数据总数据量小于实例级数据量的1/5、且要恢复的表数据总量不超过1TB时,推荐使用表级物理恢复。
- 可用性维度:表级恢复过程中,目标实例的其他库/表可持续对外提供服务,与实例级恢复相比有可用性优势,如果希望表级恢复过程中仍能访问其他库/表,推荐使用表级物理恢复。
业务影响:
- 表级恢复期间对生产环境的吞吐量有一定影响,吞吐量通常在峰值吞吐量的50%,最差在系统峰值的25%。
- 建议在业务低峰期进行细粒度恢复。
|