
# gds
#### 背景信息
gds可以为DWS提供导入导出数据的功能。更多详细内容可参考《开发指南》的"导入数据"和"导出数据"章节。
#### 语法
```
gds [ OPTION ] -d DIRECTORY
```
其中，-d、-H是必选参数，option项是可选参数。gds将DIRECTORY中的文件数据提供给DWS访问。
在启动GDS服务前， 请确定使用的GDS版本和数据库的版本保持一致，否则数据库会提示错误并终止导入导出操作，因此请注意GDS工具和数据库的版本务必严格匹配。具体版本可通过-V参数进行查看。
#### 参数说明
- -d dir 设置待导入数据文件的目录。在gds进程权限允许的条件下，-d指定的目录会自动被创建。
  
- -p ip:port 设置gds监听IP和监听端口。
  IP的取值范围：IP需为合法IP地址。
  IP的默认值：127.0.0.1。
  监听端口的取值范围：1024\~65535，正整数。
  监听端口的默认值：8098。
  
- -l log_file 设置日志文件。本次特性添加了日志自动切分的功能。当设置-R参数后gds会根据设置的值重新生成新的文件，以此来避免单个日志文件过大的问题。
  生成规则：gds默认只识别后缀是log的文件进行日志轮转。
  例如，当-l参数指定为 gds.log，-R指定为 20MB的时候，当gds.log大小达到20MB后就会新创建一个 "gds-2020-01-17_115425.log"文件。
  当-l指定的日志文件没有以log为后缀，例如：" gds.log.txt"， 则新创建的日志文件名为" gds.log-2020-01-19_122739.txt"。
  gds启动时会检测-l参数设置的日志文件是否存在，如果存在则根据当前日期时间新生成一个日志文件，不会覆盖之前的日志文件。
  ![](https://support.huaweicloud.com/tg-dws/public_sys-resources/note_3.0-zh-cn.png)
  如果当前目录下GDS进程的日志数目超过--log-filecount时，会触发旧日志的回收。为了保存大量日志，建议每个GDS设置单独目录，并且调高启动参数--log-filecount。
  
- -H address_string 设置允许哪些主机连接到gds，参数需为CIDR格式，仅支持linux系统。需要配置多个不同网段时，使用","分隔。例如：-H 10.10.0.0/24,10.10.5.0/24。
  
- -e dir 设置导入时产生的错误日志存放路径。
  默认值：数据文件目录。
  
- -E size 设置导入产生的错误日志的上限值。
  取值范围：0\<size\<1TB，请使用正整数+单位的形式进行取值设置，单位支持KB、MB和GB。
  
- -S size 设置导出单个文件大小上限。
  取值范围：1MB\<size\<100TB，请使用正整数+单位的形式进行取值设置，单位支持KB、MB和GB。如果使用KB，取值需要大于1024KB。
  
- -R size 设置-l指定的gds单个日志文件大小上限。
  取值范围：1MB\<size\<1TB，请使用正整数+单位的形式进行取值设置，单位支持KB、MB和GB。如果使用KB，取值需要大于1024KB。
  默认值：16MB
  
- -t worker_num 设置导入导出工作并发线程数目。
  取值范围：0\<worker_num\<=200，正整数
  默认值：8
  推荐值：普通文件导入导出场景取值：CPU核数\*2；管道文件导入导出场景取值：64。
  ![](https://support.huaweicloud.com/tg-dws/public_sys-resources/note_3.0-zh-cn.png)
  当管道文件导入导出场景并发较大时，该值应不低于业务并发数。
  
- -s status_file 设置状态文件，仅支持linux系统。
  
- -D 后台运行gds，仅支持linux系统。
  
- -r 递归遍历目录（外表目录下的子目录）下文件，会递归读取location指定的目录层级下所有的同名文件，仅支持linux系统。
  
- -h 显示帮助信息。
  
- --enable-ssl 使用SSL认证的方式与集群通信。
  
- --ssl-dir Cert_file 在使用SSL认证方式时，指定认证证书的所在路径。
  
- --debug-level 设置GDS端的debug日志级别，以控制GDS debug相关的日志输出。
  **取值范围：**0、1、2
  - 0：仅打印导入导出相关的文件列表，日志量小，推荐在系统处于正常状态时使用设置。
  
  - 1：打印日志的完整信息，增加各节点的连接信息、session转换信息和一些数据统计。
  
  - 2：打印详细的交互日志以及所属状态，输出较大量的debug日志信息，以帮助故障定位分析。推荐仅在故障定位时开启。
  
  
  默认值：1
  
- --log-filecount 设置保留的日志文件最大个数，当日志文件个数超过该参数值，按照文件创建时间，保留最近创建的日志文件。
  取值范围：5\<=log-filecount\<=1024，正整数
  默认值：50
  
- --pipe-timeout 设置GDS操作管道文件的等待超时时间。
  ![](https://support.huaweicloud.com/tg-dws/public_sys-resources/note_3.0-zh-cn.png)
  - 该参数的设置是为了避免人为或程序自身问题造成管道文件的一端长时间不读取或者不写入，导致管道另一端的读取或写入操作阻塞。
  
  - 该参数表示的超时时间不是指GDS一个导入导出任务的最长时间，而是GDS对管道文件的每一次read/open/write的最大超时时间，当超过--pipe-timeout参数设置时间会向前端报错。
   
  **取值范围：**大于1s。请使用正整数+单位的形式进行取值设置，单位支持s、m和h。如：1小时可以设置为3600s、60m或者1h。
  默认值：1h/60m/3600s
  
- --pipe-size 设置GDS管道文件导入/导出时所使用的文件容量。
  取值范围：大于1KB。
  默认值：操作系统允许的最大值，可以通过命令 cat /proc/sys/fs/pipe-max-size 查看。
  ![](https://support.huaweicloud.com/tg-dws/public_sys-resources/note_3.0-zh-cn.png)
  该参数只能在Linux内核版本不低于2.6.35的环境下使用。
  
 
- --inherit-perms 导出数据文件继承所在目录的权限，可提前规划导出表相关的目录权限来进行权限控制。
  该参数仅9.1.1.300及以上集群版本支持。
  
- --inherit-user 导出数据文件继承所在目录的用户及用户组，可提前规划导出表相关的目录权限来进行权限控制，实现不同用户只能访问其被授权的导出数据。
  该参数仅9.1.1.300及以上集群版本支持。
  ![](https://support.huaweicloud.com/tg-dws/public_sys-resources/note_3.0-zh-cn.png)
  如需设置该参数，需要启动GDS使用root用户或者具有root权限。
  
#### 示例
数据文件存放在"/data" 目录，IP为192.168.0.90，监听端口为5000。
```
gds -d /data/ -p 192.168.0.90:5000 -H 10.10.0.1/24
```
数据文件存放在"/data/" 目录下的任意子目录，IP为192.168.0.90，监听端口为5000。
```
gds -d /data/ -p 192.168.0.90:5000 -H 10.10.0.1/24 -r
```
数据文件存放在"/data/ "目录，IP为192.168.0.90，监听端口为5000，以后台方式运行，将日志保存在"/log/gds_log.txt"文件中，指定并发导入工作线程数目为32。
```
gds -d /data/ -p 192.168.0.90:5000 -H 10.10.0.1/24 -l /log/gds_log.txt -D  -t 32
```
数据文件存放在"/data/ "目录，IP为192.168.0.90，监听端口为5000，只允许IP为10.10.0.\*的节点进行连接。
```
gds -d /data/ -p 192.168.0.90:5000 -H 10.10.0.1/24
```
数据文件存放在"/data/ "目录，IP为192.168.0.90，监听端口为5000，只允许IP为10.10.0.\*的节点进行连接，设定为使用SSL认证的方式与集群通信，证书文件存放在/certfiles/目录。
```
gds -d /data/ -p 192.168.0.90:5000 -H 10.10.0.1/24 --enable-ssl --ssl-dir /certfiles/
```
![](https://support.huaweicloud.com/tg-dws/public_sys-resources/note_3.0-zh-cn.png)
- 1个GDS在同一时刻，只能为1个集群提供导入导出服务；
- 为满足安全要求，请通过-p显示指定监听ip和监听端口。
- 证书文件包括根证书文件cacert.pem，以及二级证书文件client.crt和密钥文件client.key。
- 在加载证书时，需要使用密码保护文件client.key.rand和client.key.cipher。
 
