GDS数据导入流程梳理及注意事项
【摘要】 本篇介绍了GDS导入数据,重点介绍了使用pipe管道导入数据,并结合实际测试结果给出测试结论。在此基础之上,对于GDS导入过程中监控相关也提供参考。
GaussDB(DWS)提供了数据服务工具GDS来帮助分发待导入的用户数据及实现数据的高速导入。GDS需部署到数据服务器上。数据量大,数据存储在多个服务器上时,在每个数据服务器上安装配置、启动GDS后,各服务器上的数据可以并行入库,安装配置和启动GDS。
1.GaussDB(DWS)提供如下导入导出工具
1.1导入数据
类型 | 说明 |
OBS导入 | TEXT、CSV、ORC及CARBONDATA格式的数据GaussDB(DWS)优先导入方式 |
GDS导入 | 利用多DN并行的方式,将数据从远端服务器导入GaussDB(DWS),导入效率高,适用于大批量数据入库 |
MRS导入 | 将数据从MRS的HDFS中读取到GaussDB(DWS) |
DRS导入 | DRS实时同步,主要聚焦于表和数据的同步导入 |
CDM导入 | CDM提供同构/异构数据源之间批量数据迁移的功能,实现从多种类型的数据源迁移数据到GaussDB(DWS) 采用Copy方式和GDS并行导入方式 |
gs_restore导入 | 迁移, 实现表定义、数据库对象定义等元数据的导入 所有数据库对象、单个数据库对象、单个schema、单张表 |
其他方式 | insert、copy from stdin、gsql元命令导入及第三方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
5.导入导出业务监控方法总结
小结:GDS实现集群间数据导入导出,并实现集群的互联互通,保证集群间数据的交互,在实际项目中应用广泛。GDS导入仅支持text和CSV格式文件,针对CSV文件导入,CSV文件需要尽量保证每行数据只有一个换行,GaussDB(DWS) GDS单文件并发导入。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)