# 使用Linux gsql客户端连接集群
用户在创建好数据仓库集群，开始使用集群数据库之前，需要使用数据库SQL客户端连接到数据库。DWS提供了与集群版本配套的Linux gsql命令行客户端工具，您可以使用Linux gsql客户端通过集群的公网地址或者内网地址访问集群。
它的运行环境是Linux操作系统，在使用Linux gsql客户端远程连接DWS集群之前，需要准备一个Linux主机用于安装和运行Linux gsql客户端。如果通过公网地址访问集群，也可以将Linux gsql客户端安装在用户自己的Linux主机上，但是该Linux主机必须具有公网地址。若DWS集群没有配置公网IP，为方便起见，推荐您创建一台Linux弹性云服务器（简称ECS），详情可参见[（可选）准备ECS作为gsql客户端主机]。
 #### （可选）准备ECS作为gsql客户端主机
购买弹性云服务器的操作步骤，请参见《弹性云服务器快速入门》中的[购买并登录Linux弹性云服务器](https://support.huaweicloud.com/qs-ecs/ecs_01_0103.html)章节。
创建的弹性云服务器需要满足如下要求：
- 弹性云服务器需要与DWS集群在相同的区域、可用分区。
- 如果使用DWS提供的gsql命令行客户端连接DWS集群，弹性云服务器的镜像必须满足[表1]要求。
  镜像的操作系统必须是gsql客户端所支持的下列Linux操作系统，带**"ARM"** 的表示ARM架构，带**"x86_64"**表示X86架构，弹性云服务器ECS操作系统的架构需与客户端适配的架构保持一致。
   表1客户端支持的系统说明 
  | gsql客户端      | 支持系统                                                                                                                                                                                                                                                               |
  |:---|:---|
  | Redhat x86_64 | RHEL 6.4\~7.6                                                                                                                                                                                                                                                   |
  | SUSE x86_64  | - SLES 11.1\~11.4  - SLES 12.0\~12.3                                     |
  | Euler ARM    | EulerOS 2.0 SP8                                                                                                                                                                                                                     |
  | Redhat ARM    | - CentOS-7.6-aarch64  - NeoKylin-7.6-aarch64（适配鲲鹏920处理器）   |
     
  
- 如果客户端通过内网地址访问集群，请确保创建的弹性云服务器与DWS集群在同一虚拟私有云里。 虚拟私有云相关操作请参见《虚拟私有云用户指南》中[虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0030969460.html)章节。
  
- 如果客户端通过公网地址访问集群，请确保创建的弹性云服务器和DWS集群都要有弹性IP。 购买弹性云服务器时，参数**"弹性公网IP"** 需选择**"现在购买"** 或**"使用已有"**。
  
- 弹性云服务器对应的安全组规则需要确保能与DWS集群提供服务的端口网络互通。 安全组相关操作请参见《虚拟私有云用户指南》中[安全组](https://support.huaweicloud.com/usermanual-vpc/vpc_SecurityGroup_0001.html)章节。
  请确认弹性云服务器的安全组中存在符合如下要求的规则，如果不存在，请在弹性云服务器的安全组中添加相应的规则：
  - 方向：出方向。
  
  - 协议：必须包含TCP。例如TCP、全部。
  
  - 端口：需要包含DWS集群提供服务的数据库端口，例如，设置为**"1-65535"**或者具体的DWS数据库端口。
  
  - 目的地址：设置的IP地址需要包含所要连接的DWS集群的连接地址。其中0.0.0.0/0表示任意地址。
    图1出方向的规则   
    ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587225718.png "点击放大") 
   
- DWS集群的安全组规则需要确保DWS能接收来自客户端的网络访问。
  请确认DWS集群的安全组中存在符合如下要求的规则，如果不存在，请在DWS集群的安全组中添加相应的规则。
  - 方向：入方向。
  
  - 协议：必须包含TCP。例如，TCP、全部。
  
  - 端口：设置为DWS集群提供服务的数据库端口。例如："8000"。
  
  - 源地址：设置的IP地址需要包含DWS客户端主机的IP地址。例如："192.168.0.10/32"。
    图2入方向的规则   
    ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587225720.png "点击放大") 
    
 
#### 下载Linux gsql客户端并连接集群
1. 请参见[下载客户端](https://support.huaweicloud.com/mgtg-dws/dws_01_0031.html)下载Linux gsql客户端，并使用SSH文件传输工具（例如WinSCP工具），将客户端工具上传到一个待安装Linux gsql的Linux主机上。
   
   推荐下载使用与集群版本匹配的gsql工具，即8.1.0及以上版本集群使用8.1.x版本gsql、8.2.0及以上版本集群使用8.2.x版本。若下载8.2.x版本gsql工具，需将dws_client_8.1.x_redhat_x64.zip替换为dws_client_8.2.x_redhat_x64.zip。此处仅以dws_client_8.1.x_redhat_x64.zip作为示例。
   执行上传Linux gsql操作的用户需要对客户端主机的目标存放目录有完全控制权限。
   或者，您也可以先SSH远程管理到需要安装Linux gsql的Linux主机，然后在Linux命令窗口，执行以下命令下载Linux gsql客户端：
   ```
   wget https://obs.cn-north-1.myhuaweicloud.com/dws/download/dws_client_8.1.x_redhat_x64.zip --no-check-certificate
   ```
   
   
2. 使用SSH会话工具，远程管理客户端主机。 
   弹性云服务器的登录方法请参见《弹性云服务器用户指南》中的[SSH密码方式登录](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0017955633.html)章节。
   
   
3. （可选）如果要使用SSL方式连接集群，请参考[使用SSL进行安全的TCP/IP连接](https://support.huaweicloud.com/mgtg-dws/dws_01_0038.html)章节，在客户端主机配置SSL认证相关的参数。SSL连接方式的安全性高于非SSL方式，建议在客户端使用SSL连接方式。
4. 执行以下命令解压客户端工具。 
   ```
   cd <客户端存放路径>
   unzip dws_client_8.1.x_redhat_x64.zip
   ```
   其中：
   - \<客户端存放路径\>：请替换为实际的客户端存放路径。
   
   - dws_client_*8.1.x*_redhat_x64.zip："RedHat x64"对应的客户端工具包名称，请替换为实际下载的包名。
   
   
   
   
5. 执行以下命令配置客户端。 
   ```
   source gsql_env.sh
   ```
   提示以下信息表示客户端已配置成功。
   ```
   All things done.
   ```
   
   
6. 执行以下命令，使用gsql客户端连接DWS集群中的数据库。 
   ```
   gsql -d <数据库名称> -h <集群地址> -U <数据库用户> -p <数据库端口> -W <集群密码> -r
   ```
   参数说明如下：
   - "数据库名称"：输入所要连接的数据库名称。首次使用客户端连接集群时，请指定为集群的默认数据库"gaussdb"。
   
   - "集群地址"：请参见[获取DWS集群连接地址](https://support.huaweicloud.com/mgtg-dws/dws_01_0033.html)进行获取。如果通过公网地址连接，请指定为集群"公网访问地址"或"公网访问域名"，如果通过内网地址连接，请指定为集群"内网访问地址"或"内网访问域名"。如果通过弹性负载均衡连接，请指定为"弹性负载均衡地址"。
   
   - "数据库用户"：输入集群数据库的用户名。首次使用客户端连接集群时，请指定为创建集群时设置的默认管理员用户，例如**"dbadmin"**。
   
   - "数据库端口"：输入创建集群时设置的"数据库端口"。
   
   
   例如，执行以下命令连接DWS集群的默认数据库gaussdb：
   ```
   gsql -d gaussdb -h 10.168.0.74 -U dbadmin -p 8000 -W password -r
   ```
   显示如下信息表示gsql工具已经连接成功：
   ```
   gaussdb=>
   ```
   
   
 
#### gsql命令参考
有关gsql的命令参考和更多信息，请参见[《数据仓库服务工具指南》](https://support.huaweicloud.com/tg-dws/dws_07_0001.html)。
#### （可选）使用gsql导入TPC-DS样例数据
DWS支持用户将数据从集群外导入到集群中。用户可以参考以下指导，快速将样例数据从OBS导入集群，并对样例数据进行查询和分析。导入的样例数据是使用TPC-DS测试基准生成的标准性能测试数据。
TPC-DS是数据库决策支持测试基准。通过使用TPC-DS的测试数据以及测试案例，用户可以模拟真实场景下大数据集的统计、报表生成、联机查询、数据挖掘等复杂场景，从而了解数据库应用的功能和性能。
![](https://support.huaweicloud.com/mgtg-dws/public_sys-resources/note_3.0-zh-cn.png)
当前TPC-DS样例数据仅支持在**"华北-北京一"**区域导入，其他区域暂不支持。
1. 使用SSH远程连接工具登录gsql客户端主机，并进入gsql目录，本例假设gsql客户端放在/opt目录下。 
   ```
   cd /opt
   ```
   
   
2. 执行以下命令，切换到指定目录并设置用户导入样例数据的用户密钥和OBS访问地址。 
   \<Access_Key_Id\>和\<Secret_Access_Key\>：分别表示访问密钥ID和私有访问密钥。请参见[创建访问密钥（AK和SK）](https://support.huaweicloud.com/migration-dws/dws_15_0007.html)进行获取。然后将获取到的值替换到创建外表语句中。
   ```
   cd sample
   /bin/bash setup.sh -ak <Access_Key_Id> -sk <Secret_Access_Key> -obs_location obs.cn-north-1.myhuaweicloud.com
   ```
   系统显示以下信息表示设置成功：
   ```
   setup successfully!
   ```
   
   
3. 返回上一级目录，执行gsql环境变量。 
   ```
   cd ..
   source gsql_env.sh
   cd bin
   ```
   
   
4. 执行以下命令，将样例数据导入数据仓库。 
   命令格式：
   ```
   gsql -d <数据库名称> -h <集群公网访问地址> -U <管理员用户> -p <数据仓库端口> -f <样例数据脚本保存路径> -r
   ```
   命令示例：
   ```
   gsql -d gaussdb -h 10.168.xx.xx -U dbadmin -p 8000 -f /opt/sample/tpcds_load_data_from_obs.sql -r
   ```
   命令中样例数据脚本"tpcds_load_data_from_obs.sql"存放在DWS客户端的sample目录下，如"/opt/sample/"。根据界面提示输入管理员密码，成功连接集群数据库后，系统会自动创建样例数据对应的外表用于关联集群外的数据，然后再创建存放样例数据的目标表，最后通过外表将数据导入到目标表中。
   由于数据集较大，导入时间取决于当前DWS集群规格，一般为10\~20分钟左右，等待系统显示如下执行时间信息表示导入成功，如下时间仅为示例。
   ```
   Time:1845600.524 ms
   ```
   
   

5. 在Linux命令窗口，执行以下命令，切换到指定目录并查询样例数据。 
   ```
   cd /opt/sample/query_sql/
   /bin/bash tpcds100x.sh
   ```
   
   
6. 根据命令提示，输入集群公网访问地址的IP地址、数据库端口、数据库名称、数据库访问用户以及用户密码。 
   - 数据库名称默认为"gaussdb"。
   
   - 数据库访问用户和密码使用创建集群时配置的管理员用户和密码。
   
   
   查询完成后，在当前查询目录，如**"** **sample/query_sql/"** 下面会生成一个存放查询结果的目录，命名如**"query_output_20170914_072341"**。
   
   
 
