
# MySQL整库迁移到RDS服务
#### 操作场景
本章节介绍使用CDM整库迁移功能，将本地MySQL数据库迁移到云服务RDS中。
当前CDM支持将本地MySQL数据库，整库迁移到RDS上的MySQL、PostgreSQL或者Microsoft SQL Server任意一种数据库中。这里以整库迁移到RDS上的MySQL数据库（云数据库 MySQL）为例进行介绍，使用流程如下：
1. [创建CDM集群并绑定EIP]
2. [创建MySQL连接]
3. [创建RDS连接]
4. [创建整库迁移作业]
 
#### 前提条件
- 用户拥有EIP配额。
- 用户已购买RDS数据库实例，该实例的数据库引擎为MySQL。
- 本地MySQL数据库可通过公网访问。如果MySQL服务器是在本地数据中心或第三方云上，需要确保MySQL可以通过公网IP访问，或者是已经建立好了企业内部数据中心到云服务平台的VPN通道或专线。
- 已获取本地MySQL数据库和RDS上MySQL数据库的IP地址、数据库名称、用户名和密码。
- 已在CDM集群的"作业管理 \> 连接管理 \> 驱动管理"页面，上传了MySQL数据库驱动。
 
 #### 创建CDM集群并绑定EIP
1. 如果是独立CDM服务，参考[创建集群](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0018.html)创建CDM集群；如果是作为DataArts Studio服务CDM组件使用，参考[创建集群](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0576.html)创建CDM集群。
   
   关键配置如下：
   - CDM集群的规格，按待迁移的数据量选择，一般选择cdm.medium即可，满足大部分迁移场景。
   
   - CDM集群的VPC，选择和RDS的MySQL数据库实例所在的VPC一致，且推荐子网、安全组也与RDS上的MySQL一致。
   
   - 如果安全控制原因不能使用相同子网和安全组，则可以修改安全组规则，允许CDM访问RDS。
    
   
   
2. CDM集群创建完成后，选择集群操作列的"绑定弹性IP"，CDM通过EIP访问本地MySQL数据库。 
   图1集群列表   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002239778293.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   如果用户对本地数据源的访问通道做了SSL加密，则CDM无法通过弹性IP连接数据源。
   
   
 
 #### 创建MySQL连接
1. 在CDM集群管理界面，单击集群后的"作业管理"，选择"连接管理 \> 新建连接"，进入连接器类型的选择界面，如[图2]所示。
   
   图2选择连接器类型   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001448285829.png "点击放大")
   
   
2. 选择"MySQL"后单击"下一步"，配置MySQL连接的参数。 
   单击"显示高级属性"可查看更多可选参数，具体请参见[配置云数据库MySQL/MySQL数据库连接](https://support.huaweicloud.com/usermanual-cdm/cdm_01_1211.html)。这里保持默认，必填参数如[表1]所示。
    表1MySQL连接参数 
   | 参数名             | 说明                                                                                                                                                    | 取值样例      |
   |:---|:---|:---|
   | 名称              | 输入便于记忆和区分的连接名称。                                                                                                                                       | mysqllink |
   | 数据库服务器          | MySQL数据库的IP地址或域名。                                                                                                                                     | -         |
   | 端口              | MySQL数据库的端口。                                                                                                                                          | 3306      |
   | 数据库名称           | MySQL数据库的名称。                                                                                                                                          | sqoop     |
   | 用户名             | 拥有MySQL数据库的读、写和删除权限的用户。                                                                                                                               | admin     |
   | 密码              | 用户的密码。                                                                                                                                                | -         |
   | 使用本地API         | 使用数据库本地API加速（系统会尝试启用MySQL数据库的local_infile系统变量）。                                                                                                       | 是         |
   | 使用Agent         | Agent功能待下线，无需配置。                                                                                                                                      | -         |
   | local_infile字符集 | MySQL通过local_infile导入数据时，可配置编码格式。                                                                                                                     | utf8      |
   | 驱动版本            | CDM连接关系数据库前，需要先上传所需关系数据库的JDK8版本.jar格式驱动。MySQL的驱动请从<https://downloads.mysql.com/archives/c-j/>选择5.1.48版本下载，从中获取mysql-connector-java-5.1.48.jar，然后进行上传。 | -         |
      
   
   
3. 单击"保存"回到连接管理界面。 
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   如果保存时出错，一般是由于MySQL数据库的安全设置问题，需要设置允许CDM集群的EIP访问MySQL数据库。
   
   
 
 #### 创建RDS连接
1. 单击CDM集群后的"作业管理"，进入作业管理界面，再选择"连接管理 \> 新建连接"，进入选择连接器类型的界面，如[图3]所示。
   
   图3选择连接器类型   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001566677846.png "点击放大")
   
   
2. 连接器类型选择"云数据库 MySQL"后单击"下一步"，配置连接参数： 
   - 名称：用户自定义连接名称，例如："rds_link"。
   
   - 数据库服务器、端口：配置为RDS上MySQL数据库的连接地址、端口。
   
   - 数据库名称：配置为RDS上MySQL数据库的名称。
   
   - 用户名、密码：登录数据库的用户和密码。
   
   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   - 创建RDS连接时，"使用本地API"设置为"是"时，可以使用MySQL的LOAD DATA功能加快数据导入，提高导入数据到MySQL的性能。
   
   - 由于RDS上的MySQL默认没有开启LOAD DATA功能，所以同时需要修改MySQL实例的参数组，将"local_infile"设置为"ON"，开启该功能。
   
   - 如果"local_infile"参数组不可编辑，则说明是默认参数组，需要先创建一个新的参数组，再修改该参数值，并应用到RDS的MySQL实例上。
    
   
   
3. 单击"保存"回到连接管理界面。
 
 #### 创建整库迁移作业
1. 两个连接创建完成后，选择"整库迁移 \> 新建作业"，开始创建迁移任务，如[图4]所示。
   
   图4创建整库迁移作业   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001468143433.png "点击放大")
   - 作业名称：用户自定义整库迁移的任务名称。
   
   - 源端作业配置
     - 源连接名称：选择[创建MySQL连接]中的"mysqllink"。
     
     - 模式或表空间：选择从本地MySQL的哪个数据库导出数据。
      
   
   - 目的端作业配置
     - 目的连接名称：选择[创建RDS连接]中的"rds_link"。
     
     - 模式或表空间：选择将数据导入到RDS的哪个数据库。
     
     - 自动创表：选择"不存在时创建"，当RDS数据库中没有本地MySQL数据库里的表时，CDM会自动在RDS数据库中创建那些表。
     
     - 导入开始前：选择"是"，当RDS数据库中存在与本地MySQL数据库重名的表时，CDM会清除RDS中重名表里的数据。
     
     - 约束冲突处理：选择"insert into"，当迁移数据出现唯一约束冲突时的处理方式。
     
     - 高级属性里的可选参数保持默认即可。
      
   
   
   
   
2. 单击"下一步"，进入选择待迁移表的界面，您可以选择全部或者部分表进行迁移。
3. 单击"保存并运行"，CDM会立即开始执行整库迁移任务。 
   作业任务启动后，每个待迁移的表都会生成一个子任务，单击整库迁移的作业名称，可查看子任务列表。
   
   
4. 单击作业操作列的"历史记录"，可查看该作业的历史执行记录、读取和写入的统计数据。 
   整库迁移的作业没有日志，子作业才有。在子作业的历史记录界面单击"日志"，可查看作业的日志信息。
   
   
 
