
# 使用DLI提交SQL作业查询RDS MySQL数据
#### 操作场景
DLI可以查询存储在RDS数据库中的数据，本节操作介绍使用DLI提交SQL作业查询RDS MySQL数据的操作步骤。
本例创建RDS实例并新建数据库和表，创建DLI弹性资源池队列，通过增强型跨源连接打通DLI弹性资源池和RDS实例的网络，并提交SQL作业跨源访问RDS的表数据。
#### 操作流程
使用DLI提交SQL作业查询RDS MySQL数据操作流程如[表1]所示。
开始进行如下操作前，请务必参考[准备工作]完成必要操作。
 表1使用DLI提交SQL作业查询RDS MySQL数据的操作流程 
| 操作步骤                                                                                  | 说明                              |
|:---|:---|
| [步骤1：创建RDS MySQL实例] | 样例场景需要创建RDS MySQL实例。            |
| [步骤2：创建RDS数据库表]        | 登录RDS实例创建数据库和表。                 |
| [步骤3：创建弹性资源池并添加队列]   | 创建提交作业所需的计算资源。                  |
| [步骤4：创建增强型跨源连接]       | 通过增强型跨源连接建立DLI弹性资源池与RDS实例的网络连通。 |
| [步骤5：创建跨源认证]         | 使用跨源认证保存DLI读写RDS数据的访问凭证。        |
| [步骤6：提交SQL作业]       | 使用标准SQL语句进行数据的查询和分析。            |
   
 #### 准备工作
- **已注册华为账号并开通华为云，且在使用DLI前检查账号状态，账号不能处于欠费或冻结状态。**
- **配置DLI委托访问授权。**
  DLI使用过程中涉及到OBS、VPC、SMN等服务交互，首次使用DLI需要用户配置委托授权，允许访问这些依赖服务。
  1. 使用华为云账号登录DLI管理控制台，在左侧导航栏单击"全局配置 \> 服务授权"。
  
  2. 在委托设置页面，勾选基础使用、跨源场景、运维场景的委托权限后，单击"更新委托权限"。
  
  3. 查看并了解更新委托的提示信息，单击"确定"。完成DLI委托权限的更新。
     图1配置DLI委托访问授权   
     ![](https://support.huaweicloud.com/qs-dli/zh-cn_image_0000001964093394.png "点击放大") 
  
  4. 完成配置后，在IAM控制台的委托列表中，可查看到dli_management_agency的委托信息。
    
- **配置DLI作业桶** **。**
  请务必在使用DLI提交作业前配置DLI作业桶，该桶用于存储DLI作业运行过程中产生的临时数据，例如：作业日志、作业结果。
  参考[配置DLI作业桶](https://support.huaweicloud.com/usermanual-dli/dli_01_0536.html)在DLI管理控制台的"全局配置 \> 工程配置"页面配置DLI作业桶。
  
 
 #### 步骤1：创建RDS MySQL实例
本样例中，假设作业名称为"JobSample"，采用RDS服务作为数据源，创建RDS MySQL实例。
具体操作请参见[购买RDS for MySQL实例](https://support.huaweicloud.com/usermanual-rds-mysql/rds_10_0028.html)。
1. 登录RDS管理控制台。
2. 在管理控制台左上角选择区域和项目。
3. 在"实例管理"页面，单击"购买数据库实例"。
4. 在购买数据库实例页面，选择计费模式，填写并选择实例相关信息后，单击"立即购买"。 根据业务规划配置参数信息，本例参数配置信息如所示。
   更多RDS实例的参数配置信息请参考[购买RDS实例](https://support.huaweicloud.com/usermanual-rds-mysql/rds_10_0028.html)。
   表2RDS MySQL实例参数配置信息 
   | 参数名称  | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 取值样例                     |
   |:---|:---|:---|
   | 计费模式  | 选择RDS实例的计费模式。 - 包年/包月：一种预付费模式，即先付费再使用，按照订单的购买周期进行结算。购买周期越长，享受的折扣越大。一般适用于需求量长期稳定的成熟业务。  - 按需计费：一种后付费模式，即先使用再付费，按照云数据库RDS实际使用时长计费，秒级计费，按小时结算。按需计费模式允许您根据实际业务需求灵活地调整资源使用，无需提前预置资源，从而降低预置过多或不足的风险。                                                                                             | 按需计费                     |
   | 区域    | 资源所在的区域。 不同区域内的产品内网不互通，且创建后不能更换，请谨慎选择。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 华东-上海二                   |
   | 实例名称  | 实例名称。 实例名称长度最小为4字符，最大为64个字符，如果名称包含中文，则不超过64字节（注意：一个中文字符占用3个字节），必须以字母或中文开头，区分大小写，可以包含字母、数字、中划线、下划线或中文，不能包含其他特殊字符。 创建多个实例和只读实例时，实例名称长度会发生变化，具体以实际页面显示情况为准。                                                                                                                                                                                                                                                                                                                                                                                    | rds-demo                 |
   | 数据库引擎 | MySQL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | MySQL                    |
   | 数据库版本 | 选用RDS for MySQL数据库时，请根据实际业务需求选择合适的数据库引擎版本。建议您选择当前可用的最高版本数据库，因其性能更稳定，安全性更高，使用更可靠。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 8.0                      |
   | 实例类型  | 选择实例的主备类型。 - **主备：**采用一主一备的经典高可用架构，主备实例的每个节点的规格保持一致。备机提高了实例的可靠性，创建主机的过程中，会同步创建备机，备机创建成功后，用户不可见。  - **单机：**采用单个数据库节点部署架构，与主流的主备实例相比，它只包含一个节点，但具有高性价比。适用于个人学习、微型网站以及中小企业的开发测试环境。                                                                                                              | 单机                       |
   | 存储类型  | 实例的存储类型决定实例的读写速度。最大吞吐量越高，读写速度越快。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | SSD云盘                    |
   | 可用区   | 对于单机实例，仅需选择单个可用区。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | -                        |
   | 时区    | 由于世界各国家与地区经度不同，地方时也有所不同，因此会划分为不同的时区。时区可在创建实例时选择，后期可修改。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 默认                       |
   | 性能规格  | 实例的CPU和内存。不同性能规格对应不同连接数和最大IOPS。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 2vCPUs \| 4GB            |
   | 存储空间  | 如果存储类型为SSD云盘或极速型SSD，可设置存储空间自动扩容，当存储空间可用率过小时，会自动扩容存储空间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 40GB                     |
   | 磁盘加密  | 选择是否开启磁盘加密功能。 - 不加密：未开启加密功能。  - 加密：选择加密后会提高数据安全性，但对数据库读写性能有少量影响，请按照您的使用策略进行选择。 更多磁盘加密的相关描述信息请参考[购买RDS for MySQL实例](https://support.huaweicloud.com/usermanual-rds-mysql/rds_10_0028.html)。    | 不加密                      |
   | 虚拟私有云 | 选择已有的虚拟私有云。 如需重新创建VPC和子网，请参考[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。 说明： 跨源场景数据源网段和弹性资源池的网段不能重合。                                                                                                                                                                                                                                                                                                                                 | -                        |
   | 数据库端口 | 默认使用3306端口，实例创建成功后可修改。 RDS for MySQL数据库端口设置范围为1024～65535（其中12017、33071、33062被RDS系统占用不可设置）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 3306                     |
   | 安全组   | 安全组限制实例的安全访问规则，加强云数据库RDS服务与其他服务间的安全访问。 数据源的安全组需放通DLI弹性资源池的网段。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | -                        |
   | 设置密码  | 设置实例的登录密码。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | -                        |
   | 管理员账号 | 数据库的登录名默认为root。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | root                     |
   | 管理员密码 | 设置管理员密码。 所设置的密码长度为8\~32个字符，至少包含大写字母、小写字母、数字、特殊字符三种字符的组合，其中允许输入 \~ ! @ # $ % \^ \* - _ = + ? , ( ) \& . \| 特殊字符。请您输入高强度密码并定期修改，以提高安全性，防止出现密码被暴力破解等安全风险。 如果您提供的密码被系统视为弱密码，您将收到错误提示，请提供更高强度的密码。 请妥善保管您的密码，因为系统将无法获取您的密码信息。                                                                                                                                                                                                                                                          | -                        |
   | 参数模板  | 数据库参数模板就像是数据库引擎配置值的容器，参数模板中的参数可应用于一个或多个相同类型的数据库实例。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 系统默认模板：Default-MySQL-5.7 |
   | 表名大小写 | 配置表名不区分大小写。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 不区分大小写                   |
   | 企业项目  | 对于已成功关联企业项目的用户，仅需在"企业项目"下拉框中选择目标项目。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | default                  |
   | 购买数量  | 实例购买数量                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 1                        |
   | 只读实例  | 为了实现读取能力的弹性扩展，分担数据库压力，您可以在某个区域中创建一个或多个只读实例。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 暂不购买                     |
      
   
5. 单击"立即购买"，进入规格确认页面。
6. 单击"提交"，完成购买RDS MySQL实例。
7. 实例创建成功后，用户可以在"实例管理"页面对其进行查看和管理。 创建实例过程中，状态显示为"创建中"，创建完成的实例状态显示为"正常"。您可以通过"任务中心"查看详细进度和结果。
   
 
 #### 步骤2：创建RDS数据库表
1. 登录RDS管理控制台。
2. 在管理控制台左上角选择区域和项目。
3. 在"实例管理页面"，找到您已经创建的RDS实例，记录并保存RDS实例的内网地址。
   图2内网地址   
   ![](https://support.huaweicloud.com/qs-dli/zh-cn_image_0000001992930109.png "点击放大") 
4. 单击所创建RDS实例的"登录"，跳转至"数据管理服务-DAS"。输入相关账户信息，单击"测试连接"。显示连接成功后，单击"登录"，进入"实例登录"页面。
   图3登录RDS   
   ![](https://support.huaweicloud.com/qs-dli/zh-cn_image_0000001992770309.png "点击放大")
   图4实例登录   
   ![](https://support.huaweicloud.com/qs-dli/zh-cn_image_0000001956050994.png "点击放大") 
5. 登录RDS实例后，单击"新建数据库"，创建名称为"dli_demo"的数据库。
6. 单击"SQL查询"，执行如下SQL创建表。
   ```
   CREATE TABLE `dli_demo`.`tabletest` (
   `id` VARCHAR(32) NOT NULL,
   `name` VARCHAR(32) NOT NULL,
   PRIMARY KEY (`id`)
   )ENGINE = InnoDB
   DEFAULT CHARACTER SET = utf8mb4;
   ```
   
 
 #### 步骤3：创建弹性资源池并添加队列
执行跨源场景的SQL作业，不能使用系统已有的default队列，需要您创建SQL队列，本例创建弹性资源池"dli_resource_pool"、队列"dli_queue_01"。
1. 登录DLI管理控制台。
2. 在左侧导航栏单击"资源管理 \> 弹性资源池"，可进入弹性资源池管理页面。
3. 在弹性资源池管理界面，单击界面右上角的"购买弹性资源池"。
4. 在"购买弹性资源池"界面，填写具体的弹性资源池参数。
   本例在华东-上海二区域购买按需计费的弹性资源池。相关参数说明如[表3]所示。
    表3参数说明 
   | 参数名称 | 参数说明                                                             | 配置样例              |
   |:---|:---|:---|
   | 计费模式 | 选择弹性资源池计费模式。                                                     | 按需计费              |
   | 区域   | 选择弹性资源池所在区域。                                                     | 华东-上海二            |
   | 项目   | 每个区域默认对应一个项目，由系统预置。                                              | 系统默认项目            |
   | 名称   | 弹性资源池名称。                                                         | dli_resource_pool |
   | 规格   | 选择弹性资源池规格。                                                       | 标准版               |
   | CU范围 | 弹性资源池最大最小CU范围。                                                   | 64-64             |
   | 网段   | 规划弹性资源池所属的网段。如需使用DLI增强型跨源，弹性资源池网段与数据源网段不能重合。**弹性资源池网段设置后不支持更改**。 | 172.16.0.0/19     |
   | 企业项目 | 选择对应的企业项目。                                                       | default           |
      
   
5. 参数填写完成后，单击"立即购买"，在界面上确认当前配置是否正确。
6. 单击"提交"完成弹性资源池的创建。
7. 在弹性资源池的列表页，选择要操作的弹性资源池，单击操作列的"添加队列"。
8. 配置队列的基础配置，具体参数信息如下。
   表4弹性资源池添加队列基础配置 
   | 参数名称 | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | 配置样例                                                                                                                |
   |:---|:---|:---|
   | 名称   | 弹性资源池添加的队列名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | dli_queue_01                                                                                                        |
   | 类型   | 选择创建的队列类型。 - 执行SQL作业请选择SQL队列。  - 执行Flink或Spark作业请选择通用队列。   | SQL作业场景请选择"SQL队列"。 其他场景请选择"通用队列"。 |
   | 执行引擎 | SQL队列可以选择队列引擎为Spark。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Spark                                                                                                               |
   | 企业项目 | 选择对应的企业项目。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | default                                                                                                             |
      
   
9. 单击"下一步"，配置队列的扩缩容策略。 单击"新增"，可以添加不同优先级、时间段、"最小CU"和"最大CU"扩缩容策略。
   本例配置的扩缩容策略如[图5]所示。
   图5添加队列时配置扩缩容策略   
   ![](https://support.huaweicloud.com/qs-dli/zh-cn_image_0000002000460541.png "点击放大")
   表5扩缩容策略参数说明 
   | 参数名称 | 参数说明                                                                                                                           | 配置样例  |
   |:---|:---|:---|
   | 优先级  | 当前弹性资源池中的优先级数字越大表示优先级越高。本例设置一条扩缩容策略，默认优先级为1。                                                                                   | 1     |
   | 时间段  | 首条扩缩容策略是默认策略，不能删除和修改时间段配置。 即设置00-24点的扩缩容策略。 | 00-24 |
   | 最小CU | 设置扩缩容策略支持的最小CU数。                                                                                                               | 16    |
   | 最大CU | 当前扩缩容策略支持的最大CU数。                                                                                                               | 64    |
      
   
10. 单击"确定"完成添加队列配置。
 
 #### 步骤4：创建增强型跨源连接
1. 在RDS实例所在的安全组上放通DLI队列网段 
   1. 在RDS管理控制台，在RDS实例列表页单击对应的RDS实例名称，进入到RDS实例的基本信息页面。
   
   2. 单击"连接管理"配置安全组规则，在"入方向规则"中添加放通队列网段的规则。 例如，本示例队列网段为"172.16.0.0/19"，规则添加为：
      - 优先级选择：1，策略选择：允许
      
      - 类型：IPv4
      
      - 协议端口：基本协议\\自定义TCP，端口值不填
      
      - 源地址为：选择IP地址，172.16.0.0/19
      
      
      单击"确定"完成安全组规则添加。
      
   
   
   
   
2. 创建RDS与DLI的增强型跨源连接。 
   创建增强型跨源连接具体操作请参考[创建增强型跨源连接](https://support.huaweicloud.com/usermanual-dli/dli_01_0006.html)。
   ![](https://support.huaweicloud.com/qs-dli/public_sys-resources/note_3.0-zh-cn.png)
   绑定跨源的弹性资源池的网段和数据源网段不能重合。
   1. 在DLI管理控制台左侧导航栏中，选择"跨源管理"。
   
   2. 选择"增强型跨源"页签，单击左上角的"创建"按钮。配置参数：
      - 连接名称：dlirds
      
      - 弹性资源池：选择[步骤3：创建弹性资源池并添加队列]中创建的弹性资源池。
      
      - 虚拟私有云：选择MySQL 实例所在的VPC，即[步骤2：创建RDS数据库表]中选择的VPC。
      
      - 子网：选择MySQL 实例所在的子网，即[步骤2：创建RDS数据库表]中选择的子网。
        在RDS控制台"实例管理"页面，单击对应实例名称，查看"连接信息"\>"子网"，也可获取对应信息。
        
       
   
   3. 单击"确定"，创建增强型跨源连接。
   
   4. 在"增强型跨源"页签，单击创建的连接名称：dlirds，查看对等连接ID及连接状态，连接状态为"已激活"表示连接成功。
   
   5. 测试队列与RDS实例连通性。
      1. 单击"资源管理 \> 队列管理"，选择[步骤3：创建弹性资源池并添加队列]添加的队列，单击"操作"列中的"更多 \> 测试地址连通性"。
         图6检测地址连通性   
         ![](https://support.huaweicloud.com/qs-dli/zh-cn_image_0000001956050998.png "点击放大") 
      
      2. 输入[步骤2：创建RDS数据库表]中记录的RDS MySQL实例内网地址，进行网络连通性测试。
         ![](https://support.huaweicloud.com/qs-dli/public_sys-resources/note_3.0-zh-cn.png)
         在RDS控制台"实例管理"页面，单击对应实例名称，查看"连接信息"\>"内网地址"，即可获取对应信息。
         - 测试结果显示可达，则DLI队列与MySQL实例的网络已经连通。
           图7测试结果   
           ![](https://support.huaweicloud.com/qs-dli/zh-cn_image_0000001992930121.png "点击放大") 
         
         - 如果测试结果不可达，请参考[创建跨源成功但测试网络连通性失败怎么办？](https://support.huaweicloud.com/dli_faq/dli_03_0179.html)进行排查。
           排查完成后，重新进行网络连通性测试。
           
          
       
   
   
   
   
 
 #### 步骤5：创建跨源认证
跨源分析场景中，如果在作业中直接配置认证信息会触发密码泄露的风险，因此推荐您使用DLI提供的跨源认证方式来存储数据源的认证信息。
RDS数据源在Spark SQL作业场景可以创建Password类型的跨源认证。
1. 登录DLI管理控制台。
2. 选择"跨源管理 \> 跨源认证"。
3. 单击"创建"。 填写认证信息，详细参数说明请参考[表6]。
    表6跨源认证参数说明 
   | 参数     | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   |:---|:---|
   | 类型     | 选择Password。                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 认证信息名称 | 所创建的跨源认证信息名称。 - 名称只能包含数字、英文字母和下划线，但不能是纯数字，且不能以下划线开头。  - 输入长度不能超过128个字符。   |
   | 用户名称   | 访问RDS实例用户名。                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 用户密码   | RDS实例登录密码。                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      
   图8创建认证信息-Password   
   ![](https://support.huaweicloud.com/qs-dli/zh-cn_image_0000001992770325.png "点击放大") 
 
 #### 步骤6：提交SQL作业
本节示例以SQL作业为例说明如何跨源访问RDS表。
1. 在DLI管理控制台的左侧导航栏中，单击"SQL编辑器"，进入SQL作业编辑器页面。
2. 在"SQL编辑器"页面右侧的编辑窗口中，输入如下SQL语句创建数据库db1，单击"执行"。
   ```
   create database db1;
   ```
   
3. 在编辑窗口中，选择队列"dli_queue_01"和数据库"db1"。输入如下SQL语句创建表，向RDS表插入数据，以及查询数据，单击"执行"。
   根据界面显示的执行结果查询RDS表数据信息，整个操作完成。
   ```
   CREATE TABLE IF NOT EXISTS rds_test USING JDBC OPTIONS (
     'url' = 'jdbc:mysql://{{ip}}:{{port}}',  //RDS内网地址及端口
     'driver' = 'com.mysql.jdbc.Driver',
     'dbtable' = 'dli_demo.tabletest', //在RDS创建的库名及表名
     'encryption' = 'true',
     'passwdauth'="xxxxx" // DLI侧创建的Password类型的跨源认证名称。使用跨源认证则无需在作业中配置账号和密码。
   )
   insert into rds_test VALUES ('123','abc');
   SELECT * from rds_test;
   ```
   
 
#### 后续指引
完成增强型跨源连接访问RDS快速入门操作后，如果您想了解更多关于跨源连接的相关操作，建议您参考以下指引阅读。
| 分类   | 文档                                                                           | 说明                                                      |
|:---|:---|:---|
| 界面操作 | [跨源连接和跨源分析](https://support.huaweicloud.com/usermanual-dli/dli_01_0003.html) | 提供跨源连接、分析相关的功能介绍和操作指导。                                  |
| 开发指南 | [跨源访问其他数据源](https://support.huaweicloud.com/devg-dli/dli_09_0020.html)       | 提供跨源访问CSS、DWS、HBase、OpenTSDB、RDS、Redis、Mongo等样例代码和开发指导。 |
| 开发指南 | [增强型跨源API参考](https://support.huaweicloud.com/api-dli/dli_02_0187.html)       | 提供增强型跨源相关API接口指导。                                       |
   
