gds实践指南
一 gds安装
1、以root用户登录待安装GDS的数据服务器,创建存放GDS工具包的目录。
mkdir -p /opt/gds_server
2、将GDS工具包上传至上一步所创建的目录中。
将软件安装包中的GDS工具包“GaussDB-8.1.3-REDHAT-64bit-Gds.tar.gz”上传至上一步所创建的目录中。
3、在工具包所在目录下,解压工具包。
cd /opt/gds_server
tar -zxvf GaussDB-8.1.3-SUSE11-64bit-Gds.tar.gz
4、创建GDS专有用户及其所属的用户组。此用户用于启动GDS及读取源数据。
groupadd gdsgrp
useradd -g gdsgrp gds_user
5、分别修改工具包和数据源文件目录属主为GDS专有用户。
chown -R gds_user:gdsgrp /opt/gds_server
chown -R gds_user:gdsgrp /input_data
6、切换到gds_user用户。
su - gds_user
7、执行环境依赖脚本
cd /opt/gds_server/bin
source gds_env
8、启动GDS服务。
gds -d dir -p ip:port -H address_string -l log_file -D -t worker_num -S file_size -r
◾-d dir:保存有待导入数据的数据文件所在目录。
◾-p ip:port:GDS监听IP和监听端口。
◾-H address_string:允许哪些主机连接和使用GDS服务,根据需要调整,建议使用0.0.0.0/0不限制。
◾-l log_file:存放GDS的日志文件路径及文件名。
◾-D:后台运行GDS。
◾-t worker_num:设置GDS并发线程数。GaussDB(DWS)及数据服务器上的I/O资源均充足时,可以加大并发线程数。
GDS是根据导入事务并发数来决定服务运行线程数的。也就是说即使启动GDS时设置了多线程,也并不会加速单个导入事务。未做过人为事务处理时,一条INSERT语句就是一个导入事务。
二 gds实践指南
1、GDS与GaussDB(DWS)通信要求物理网络畅通,尽量使用万兆网。
2、GDS单核处理能力上限(约400MB/s),才能保证单文件导入速率最大化。
3、建议一个Raid只布1~2个GDS。一台加载机的GDS进程不宜部署太多,千兆网卡部署1个GDS进程即可,万兆网卡机器建议部署不大于4个进程。
4、提前对GDS导入导出的数据目录做好层次划分,避免一个数据目录包含过多的文件,并及时清理过期文件。
5、GDS导出时保证外表的字符集和客户端字符集一致即可,导入时保证客户端编码,数据文件内容编码和客户端一致。
6、合理规划数据目录,不要在同一目录并发写入相同文件,避免数据被覆盖。
三 数据导入与导出示例
1、以reasons表为例
CREATE TABLE reasons
(
r_reason_sk integer not null,
r_reason_id char(16) not null,
r_reason_desc char(100)
);
2、源库导出数据到文件
2.1创建只写外表
CREATE FOREIGN TABLE fw_tpcds_reasons
(
r_reason_sk integer not null,
r_reason_id char(16) not null,
r_reason_desc char(100)
)
SERVER gsmpp_server
OPTIONS
(
LOCATION 'gsfs://192.168.0.90:5000/',
FORMAT 'CSV',
ENCODING 'utf8',
DELIMITER E'\x08',
QUOTE E'\x1b',
NULL ''
)
WRITE ONLY;
2.2 导出目标表数据写入文件
INSERT INTO fw_tpcds_reasons SELECT * FROM reason;
注:可以根据需要增加where过滤数据,按时间切片
3、目标库库导入数据到文件
3.1创建只读外表
CREATE FOREIGN TABLE fr_tpcds_reasons
(
r_reason_sk integer not null,
r_reason_id char(16) not null,
r_reason_desc char(100)
)
SERVER gsmpp_server
OPTIONS
(
LOCATION 'gsfs://199.1.1.1:5000/*',
FORMAT 'CSV',
ENCODING 'utf8',
DELIMITER E'\x08',
QUOTE E'\x1b',
NULL ''
)
注:LOCATION为需要导入的文件,可按正则表达式匹配,gsfs://199.1.1.1:5000/*
4、从文件导入数据到目标表
INSERT INTO reasons SELECT * FROM fr_tpcds_reasons;
四 GDS FAQ
见附件
- 点赞
- 收藏
- 关注作者
评论(0)