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. 备份策略选择
下表给出了各种备份策略的比较。
| gpfdist | hdfs | pg_dump | Raw 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) |

浙公网安备 33010602011771号