OushuDB 管理指南 备份恢复

 

1. 使用gpfdist外部表方式

使用gpfdist外部表进行备份的步骤:

检查数据库的大小,确定gpfdist使用的文件系统有充分的空间

  • 使用pg_dump导出需要备份的数据schema
  • 启动gpfdist并创建使用gpfdist的writable外部表
  • 备份数据

具体命令可以参考gpfdist外部表导出数据

使用gpfdist外部表进行恢复的步骤:

  • 创建需要恢复的数据库
  • 使用pg_dump的输出,使用pg_restore创建数据库的表
  • 启动gpfdist并创建基于gpfdist的外部表
  • 加载数据到数据库
  • 运行Analyze来得到统计数据

具体命令可以参考gpfdist外部表导入数据

 

2.使用hdfs外部表

使用hdfs外部表进行备份的步骤:

  • 检查hdfs文件系统可用空间的大小,确定将使用的hdfs文件系统有充分的空间
  • 使用pg_dump导出需要备份的数据schema
  • 创建使用hdfs协议的writable外部表
  • 使用insert into select语句将数据插入到外部表实现备份数据

具体命令可以参考hdfs外部表导出数据

使用hdfs外部表进行恢复的步骤:

  • 创建需要恢复的数据库
  • 使用pg_dump的输出,使用pg_restore创建数据库的表
  • 创建使用hdfs协议的外部表
  • 使用insert into select语句将数据加载到数据库
  • 运行Analyze来得到统计数据

具体命令可以参考hdfs外部表导入数据

 

3. 使用pg_dump和pg_restore

pg_dump和pg_restore是一种串行备份和恢复方式,对大数据库来说从运行时间和空间来看都不适合。所以只适用于非常小的数据库备份。

使用pg_dump和pg_restore的备份和恢复方式可以使用如下命令:

$ pg_dump -Ft -f mydb.tar mydb

下面的命令可以创建一个压缩的备份。

$ pg_dump -Fc -Z3 -f mydb.dump mydb

下面的命令可以从备份进行恢复

$ pg_restore -d new_db mydb.dump
 

4. 备份原始数据

基于hdfs外部表和gpfdist外部表的备份方式满足大部分需求,在有些需要增量备份的情况下可以使用备份ETL产生的原始数据的方式进行备份。这样每次备份的数据量可以较少。 但这种方式进行恢复需要更长的时间。

 

5. 备份空间估计

在备份你的数据库之前,需要保证你有足够的磁盘空间来存储备份文件。可以通过如下命令得到数据库大小:

mydb=# SELECT sodddatsize FROM hawq_toolkit.hawq_size_of_database WHERE sodddatname=’mydb’;

如果待备份表是压缩的,这个查询给出的大小是压缩后的大小,如果你的备份是没有压缩的,需要乘上一个压缩比来计算所需空间。通常我们使用3做为估计的压缩比。 基于数据库使用空间评估完压缩比的影响后,如果使用hdfs外部表备份,则获得的数据库大小需要乘hdfs存储副本个数评估总大小,通常该副本个数为3,即所需空间为databasesize * 3 * 3;如果使用gpfdist,gpfdist使用的机器个数是N,则每个机器上需要的空间是databasesize * 3 / N。

 

6. 备份策略选择

下表给出了各种备份策略的比较。

 gpfdisthdfspg_dumpRaw Data Backupv
Parallel Yes Yes, Dynamic No No
Incremental Backup No Yes No Yes
Backup Location Local FS Hdfs FS Local FS Local FS, HDFS
Format Text, CSV Text, CSV Text, Tar, Custom Depends on format of row data
Compression No No Yes Only support custom format
Scalability Good Very Good Good
Performance Fast loading, Fast unloading Fast loading, Fast unloading   Fast (Just file copy)
 

 

 

posted @ 2021-12-16 11:37  数据舱酷  阅读(50)  评论(0)    收藏  举报