
# gds_ctl
#### 背景信息
gds_ctl是一个批量控制GDS启停的脚本工具，一次执行可以在多个节点上启动/停止相同端口的GDS服务进程，并在启动时为每一个进程设置看护程序，用于看护GDS进程。
#### 注意事项
- 执行脚本前需切换到GDS用户，必须在普通用户下执行脚本gds_ctl。
- 脚本需要在Python 3环境下运行。
- gds_ctl继承了GDS主要命令行参数，除-p以及-h外，其他参数意义不变。在gds_ctl中，-p只需指定端口即可。
- 使用gds_ctl批量操作的节点必须是此前使用gds_install安装部署的节点。
 
#### 语法
- 启动命令
  ```
  gds_ctl start --host [/path/to/hostfile | ipaddr1,ipaddr2...] -p PORT -d DATADIR -H ALLOW_IPs [gds other original options]
  ```
  
- 停止命令
  ```
  gds_ctl stop --host [/path/to/hostfile | ipaddr1,ipaddr2...] -p PORT
  ```
  
- 重启命令
  ```
  gds_ctl restart --host [/path/to/hostfile | ipaddr1,ipaddr2...] -p PORT
  ```
  
 
#### 参数说明
- --host 待运行GDS节点的IP列表，支持文件和字符串两种形式：
  - 文件形式：每一行一个IP地址，如： 192.168.2.200
    192.168.2.201
    
  
  - 字符串形式：半角逗号分隔，如： 192.168.2.200,192.168.2.201
    
   

- -p 监听端口。
  取值范围：1024\~65535，正整数。
  默认值：8098
  
- --help 显示帮助信息。
  
- -V 显示版本信息。
  
 
#### 兼容GDS原参数
- -d dir 设置待导入数据文件的目录。在GDS进程权限允许的条件下，-d指定的目录会自动被创建。
  
- -l log_file 设置日志文件。
  与-R参数一起使用，可支持日志自动切分。当设置-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参数设置的日志文件是否存在，如果存在则根据当前日期时间新生成一个日志文件，不会覆盖之前的日志文件。
  
- -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系统。
  
- --enable-ssl 使用SSL认证的方式与集群通信。
  
- --ssl-dir cert_file 在使用SSL认证方式时，指定认证证书的所在路径。
  
- --debug-level 设置GDS端的debug日志级别，以控制GDS debug相关的日志输出。
  取值范围：0、1、2。
  - 0：仅打印导入导出相关的文件列表，日志量小，推荐在系统处于正常状态时使用设置。
  
  - 1：打印日志的完整信息，增加各节点的连接信息、session转换信息和一些数据统计。推荐仅在故障定位时开启。
  
  - 2：打印详细的交互日志以及所属状态，输出较大量的debug日志信息，以帮助故障定位分析。推荐仅在故障定位时开启。
   
- --pipe-timeout 设置GDS操作管道文件的等待超时时间。
  取值范围：大于1s。请使用正整数+单位的形式进行取值设置，单位支持s、m和h。如：1小时可以设置为3600s、60m或者1h。
  默认值：1h/60m/3600s
  ![](https://support.huaweicloud.com/tg-dws/public_sys-resources/note_3.0-zh-cn.png)
  - 该参数的设置是为了避免人为或程序自身问题造成管道文件的一端长时间不读取或者不写入，导致管道另一端的读取或写入操作阻塞。
  
  - 该参数表示的超时时间不是指GDS一个导入导出任务的最长时间，而是GDS对管道文件的每一次read/open/write的最大超时时间，当超过--pipe-timeout参数设置时间会向前端报错。
    
 
#### 示例
启动一个GDS进程，其数据文件存放在"/data" 目录，IP为192.168.0.90，监听端口为5000。
```
gds_ctl start --host 192.168.0.90 -d /data/ -p 5000 -H 10.10.0.1/24 -D
```
启动一批GDS进程，其数据文件存放在"/data" 目录，IP为192.168.0.90、192.168.0.91、192.168.0.92，监听端口为5000。
```
gds_ctl start --host 192.168.0.90,192.168.0.91,192.168.0.92 -d /data/ -p 5000 -H 0/0 -D
```
批量关闭位于192.168.0.90、192.168.0.91、192.168.0.92节点上，端口是5000的GDS进程：
```
gds_ctl stop --host 192.168.0.90,192.168.0.91,192.168.0.92 -p 5000
```
批量重启位于192.168.0.90、192.168.0.91、192.168.0.92节点上，端口是5000的GDS进程：
```
gds_ctl restart  --host 192.168.0.90,192.168.0.91,192.168.0.92 -p 5000
```
