这一节,我们一起来学习如何数据库的备份和恢复,即导入和导出OushuDB数据。 再导入导出之前,为了保证你有足够的磁盘空间来存储备份文件,我们可以通过如下命令得到数据库大
小:
mydb=# SELECT sodddatsize FROM hawq_toolkit.hawq_size_of_database WHERE sodddatname=’mydb’;
如果待备份表是压缩的,这个查询给出的大小是压缩后的大小,如果你的备份是没有压缩的,需要乘上
一个压缩比来计算所需空间。具体的空间占用情况,需要根据大家的实际情况来分析判断。
数据库的备份和恢复
通过gpfdist外部表导入数据 启动gpfdist文件服务器 把需要加载的数据文件放到gpfdist数据目录 定义外部表
加载数据 通过gpfdist外部表导出数据
启动gpfdist文件服务器 准备导出的表 定义外部表
导出数据
hdfs外部表导入数据 把需要加载的数据文件放到hdfs数据目录 定义外部表
加载数据
hdfs外部表导出数据 准备导出的表
定义外部表
导出数据 使用COPY命令导入导出数据
导出表至控制台 将表导入文件 导出查询结果至文件
使用pg_dump和pg_restore
我们通常使用的导入导出包括:通过外部表(External Tables)进行的高性能并行数据导入和导出,例 如gpfdist外部表或者hdfs外部表。外部表允许用户直接查询OushuDB外部数据,所以他也提供了一种 简单的通过CREATE Table table_name AS SELECT * FROM ext_table并行导入数据到OushuDB内部表 的方法。最常用的并行加载数据到OushuDB的方法是通过基于gpfdist的外部表。gpfdist是一个HTTP服 务器,用户可以在同一机器上,或者不同的机器上启动多个gpfdist实例,从而可以充分利用多台机器, 多个网卡实现大规模并行加载。同时,基于gpfdist的外部表也可以支持数据的导出。
另一种是针对小规模数据可以通过Copy命令或者pg_dump和pg_restore来进行串行导入和导出。COPY 命令可以把单个文件加载到OushuDB,也可以从OushuDB中导出数据到单个文件。
下面我们来分别讲解一下如何通过这些方法来进行数据的导入导出。
通过gpfdist外部表导入数据
下面,我们来通过一个简单的例子来演示如何通过gpfdist导入数据。 使用gpfdist进行数据加载通常有四个步骤,分别是:
启动gpfdist文件服务器 把需要加载的数据文件放到gpfdist数据目录 定义外部表
加载数据