
# 导出所有数据库
DWS支持使用gs_dumpall工具导出所有数据库的全量信息，包含集群中每个数据库信息和公共的全局对象信息。可根据需要自定义导出如下信息：
- 导出所有数据库全量信息，包含集群中每个数据库信息和公共的全局对象信息（包含角色和表空间信息）。 使用导出的全量信息可以创建与当前集群相同的一个集群，拥有相同数据库和公共全局对象，且库中数据也与当前各库相同。
  
- 仅导出数据，即导出每个数据库中的数据，且不包含所有对象定义和公共的全局对象信息。
- 仅导出所有对象定义，包括：表空间、库定义、函数定义、模式定义、表定义、索引定义和存储过程定义等。 使用导出的对象定义，可以快速创建与当前集群相同的一个集群，拥有相同的数据库和表空间，但是库中并无原数据库的数据。
  
#### 操作步骤
1. [准备ECS作为gsql客户端主机](https://support.huaweicloud.com/mgtg-dws/dws_01_0037.html#section0)。
2. 请参见[下载客户端](https://support.huaweicloud.com/mgtg-dws/dws_01_0031.html)下载gsql客户端，并使用SSH文件传输工具（例如WinSCP工具），将客户端工具上传到一个待安装gsql的Linux主机上。
   
   执行上传gsql操作的用户需要对客户端主机的目标存放目录有完全控制权限。
   或者，您也可以先SSH远程登录到需要安装gsql的Linux主机，然后在Linux命令窗口，执行以下命令下载gsql客户端：
   ```
   wget https://obs.myhuaweicloud.com/dws/download/dws_client_9.x.x_redhat_x64.zip --no-check-certificate
   ```
   
   
3. 执行以下命令解压客户端工具。 
   ```
   cd <客户端存放路径>
   unzip dws_client_9.x.x_redhat_x64.zip
   ```
   其中：
   - \<客户端存放路径\>：请替换为实际的客户端存放路径。
   
   - dws_client_9.x.x_redhat_x64.zip：为"RedHat x86"对应的客户端工具包名称，请替换为实际下载的包名。
   
   
   
   
4. 执行以下命令配置客户端。 
   ```
   source gsql_env.sh
   ```
   提示以下信息表示客户端已配置成功：
   ```
   All things done.
   ```
   
   
5. 使用gs_dumpall一次导出所有数据库信息。 
   ```
   gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100
   ```
   表1常用参数说明 
   | 参数 | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 举例                                         |
   |:---|:---|:---|
   | -U | 连接数据库的用户名，需要是集群管理员用户。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | -U                                         |
   | -W | 指定用户连接的密码。 - 如果主机的认证策略是trust，则不会对数据库管理员进行密码验证，即无需输入-W选项；  - 如果没有-W选项，并且不是数据库管理员，会提示用户输入密码。   | -W *password*，此处密码需要用户自定义。                 |
   | -f | 将导出文件发送至指定目录文件夹。如果这里省略，则使用标准输出。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | -f /home/*dbadmin*/backup/MPPDB_backup.sql |
   | -p | 指定服务器所监听的TCP端口或本地Unix域套接字后缀，以确保连接。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | -p 8000                                    |
   | -h | "集群地址"如果通过公网地址连接，请指定为集群"公网访问地址"或"公网访问域名"，如果通过内网地址连接，请指定为集群"内网访问地址"或"内网访问域名"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | -h 10.10.10.100                            |
      
   其他参数说明请参见《数据仓库服务工具指南》中"gs_dumpall"章节。
   
   
 
#### 示例
示例一：执行gs_dumpall，导出所有数据库全量信息（dbadmin为管理员用户），导出文件为文本格式。执行命令后，会有很长的打印信息，最终出现total time即代表执行成功。示例中将不体现中间的打印信息。
```
gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 
gs_dumpall[port='8000'][2017-07-21 15:57:31]: dumpall operation successful
gs_dumpall[port='8000'][2017-07-21 15:57:31]: total time: 9627  ms
```
示例二：执行gs_dumpall，仅导出所有数据库定义（dbadmin为管理员用户），导出文件为文本格式。执行命令后，会有很长的打印信息，最终出现total time即代表执行成功。示例中将不体现中间的打印信息。
```
gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 -s 
gs_dumpall[port='8000'][2018-11-14 11:28:14]: dumpall operation successful
gs_dumpall[port='8000'][2018-11-14 11:28:14]: total time: 4147  ms
```
示例三：执行gs_dumpall，仅导出所有数据库中数据，并对导出文件进行加密，导出文件为文本格式。执行命令后，会有很长的打印信息，最终出现total time即代表执行成功。示例中将不体现中间的打印信息。
```
gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 -a --with-encryption AES128 --with-key 1234567812345678
gs_dumpall[port='8000'][2018-11-14 11:32:26]: dumpall operation successful
gs_dumpall[port='8000'][2018-11-14 11:23:26]: total time: 4147  ms
```
