GDS数据导入流程梳理及注意事项

举报
毛竹 发表于 2023/10/05 15:51:56 2023/10/05
6.1k+ 0 0
【摘要】 本篇介绍了GDS导入数据,重点介绍了使用pipe管道导入数据,并结合实际测试结果给出测试结论。在此基础之上,对于GDS导入过程中监控相关也提供参考。

GaussDB(DWS)提供了数据服务工具GDS来帮助分发待导入的用户数据及实现数据的高速导入。GDS需部署到数据服务器上。数据量大,数据存储在多个服务器上时,在每个数据服务器上安装配置、启动GDS后,各服务器上的数据可以并行入库,安装配置和启动GDS

1.GaussDB(DWS)提供如下导入导出工具

1.1导入数据

类型 说明
OBS导入 TEXTCSVORCCARBONDATA格式的数据GaussDB(DWS)优先导入方式
GDS导入

利用多DN并行的方式,将数据从远端服务器导入GaussDB(DWS),导入效率高,适用于大批量数据入库

MRS导入 将数据从MRSHDFS中读取到GaussDB(DWS)
DRS导入 DRS实时同步,主要聚焦于表和数据的同步导入
CDM导入 CDM提供同构/异构数据源之间批量数据迁移的功能,实现从多种类型的数据源迁移数据到GaussDB(DWS)  采用Copy方式和GDS并行导入方式
gs_restore导入 迁移,  实现表定义、数据库对象定义等元数据的导入      所有数据库对象、单个数据库对象、单个schema、单张表
其他方式 insertcopy from stdingsql元命令导入及第三方ETL工具导入

1.2导出数据

类型 说明
OBS导出 OBS外表设置的导出模式、导出数据格式等信息来指定导出的数据文件,DWS推荐此方法
GDS导出 GDS工具将数据从数据库导出到普通文件系统中,适用于高并发、大量数据导出
gs_dump和gs_dumpall 支持导出单个数据库及其对象,也支持导出集群中所有数据库和公共全局对象

2.GDS实现数据入

2.1导入流程

图1 GDS导入流程

2.2启动GDS服务

gds -d /DWS/gds/data -D -p 目标集群ip:50000 -l /DWS/gds/data/50000.log -H 0/0 -t 10 -D

2.3选择需要导出的表

2.4创建服务

create server servername foreign data wrapper GC_FDW options

(address '源集群ip:数据库端口'

,dbname 'testdb'

,username 'username '

,password 'password '

,syncsrv 'gsfs://源集群ip:50000');

2.5创建外表

1.创建只写外表,此表导入会发生阻塞,数据无法通过外表导入数据

create foreign table foreign_tablename(

field1 type,

......) SERVER gsmpp_server OPTIONS (LOCATION 'gsfs://源集群ip:50000/',FORMAT 'text', DELIMITER ',' ,file_type 'pipe') WRITE ONLY;

 2.创建外表

create foreign table foreign_tablename(

field1 type,

......) SERVER gsmpp_server OPTIONS (LOCATION 'gsfs://源集群ip:50000/',FORMAT 'text', DELIMITER ',' , NULL '', EOL '0x0a' , file_type 'pipe', auto_create_pipe 'true');

3.创建目标表

create table test_pipe (

field1 type,

......) ;

2.6插入数据

INSERT INTO foreign_test_pipe SELECT * FROM test_pipe;

向管道推送数据文件:cat data_13.txt > testdb1_public_foreign_test_pipe.pipe。

注意:务必向管道写入数据,否则无法读取到数据,毛竹测试之初并未向管道写入数据导致导入数据失败,排查后发现此原因。

毛竹在测试时针对单个GDS进程对应单个目标表、多个目标表、多个GDS进程对应单个目标表、多个目标表分别进行了测试,测试数据如下:

GDS进程数 目标表数量 未启用pipe导入速率(GB/s) 启用pipe导入效率(GB/s)
1个 1个 4.34 4.19
3个 4.38/4.35/4.38 4.03/3.98/4.02
5个 1个 5.07 8.21
3个 4.35/5.07/4.95 6.21/6.5/6.78

结论:

1.目标表个数相同时,GDS线程数越多,导入速率越快。(服务器资源充足)

2.单一GDS线程数,启用pipe后导入效率低于不启用pipe。

3.启用pipe属性后,GDS线程数越多,导入效率越高。(服务器资源充足)

4.基于以上结论,启用pipe后,尽可能的多启动GDS进程增加导入速度。(注意服务器资源)

3.导入监控

1.IO  iostat -xdmt 2

2.网络   sar -n DEV 5

3.阻塞sql

4.更多导入导出监控方法参见

5.导入导出业务监控方法总结

小结:GDS实现集群间数据导入导出,并实现集群的互联互通,保证集群间数据的交互,在实际项目中应用广泛。GDS导入仅支持text和CSV格式文件,针对CSV文件导入,CSV文件需要尽量保证每行数据只有一个换行,GaussDB(DWS) GDS单文件并发导入


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。