
# 使用Loader从关系型数据库导入数据到ClickHouse
#### 操作场景
该任务指导用户使用Loader将数据从关系型数据库导入到ClickHouse，本章节以MySQL为例进行操作。
#### 前提条件
- 创建或获取该任务中创建Loader作业的业务用户和密码。
- ClickHouse表已创建，确保用户已授权访问作业执行时操作该表的权限。
- 获取MySQL数据库使用的用户和密码。
- 检查磁盘空间，确保没有出现告警且余量满足导入、导出数据的大小。
- 如果设置的作业需要使用指定YARN队列功能，该用户需要已授权有相关YARN队列的权限。
- 设置任务的用户需要获取该任务的执行权限，并获取该任务对应的连接的使用权限。
- 操作前需要进行如下配置：
  1. 从MySQL数据库安装路径下获取MySQL客户端jar包（如mysqlclient-5.8.1.jar），将其保存在Loader服务主备节点的lib路径："${BIGDATA_HOME}/FusionInsight_Porter_*xxx*/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib"。
  
  2. 在ClickHouse的安装目录获取clickhouse-jdbc-\*.jar包，将其保存在Loader服务主备节点的lib路径："${BIGDATA_HOME}/FusionInsight_Porter_*xxx*/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib"。
  
  3. 使用root用户在主备节点分别执行以下命令修改权限： **cd** **${BIGDATA_HOME}/FusionInsight_Porter_*xxx*** **/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib**
     **chown omm:wheel** *jar包文件名*
     **chmod 600** *jar包文件名*
     
  
  4. 登录FusionInsight Manager系统，选择"集群 \> 服务 \> Loader \> 更多 \> 重启服务"，输入管理员密码重启Loader服务。
   
 
#### 操作步骤
**设置作业基本信息**
1. 登录"Loader WebUI"界面。 
   1. 登录FusionInsight Manager系统，具体请参见[访问集群Manager](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2124.html)。
   
   2. 选择"集群 \> 服务 \> Loader"。
   
   3. 单击"LoaderServer(*节点名称* ，主)"打开"Loader WebUI"界面。
      图1Loader WebUI界面   
      ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724866733.png "点击放大") 
   
   
   
   
2. 单击"新建作业"，进入"基本信息"界面，创建作业基本信息。 
   图2"基本信息"界面   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676747586.png "点击放大")
   1. 在"名称"中输入作业的名称。
   
   2. 在"类型"中选择"导入"。
   
   3. 在"组"中设置作业所属组，默认没有已创建的组，单击"添加"创建一个新的组，输入组的名称，单击"确定"保存。
   
   4. 在"队列"中选择执行该作业的YARN队列。默认值"root.default"。
   
   5. 在"优先级"中选择执行该作业的YARN队列优先级。默认值为"NORMAL"。可选值为"VERY_LOW"、"LOW"、"NORMAL"、"HIGH"和"VERY_HIGH"。
   
   
   
   
3. 在"连接"区域，单击"添加"新建一个连接，在"连接器"中选择"generic-jdbc-connector"或者专用数据库连接器（oracle-connector、oracle-partition-connector、mysql-fastpath-connector），输入配置连接参数，单击"测试"验证连接是否可用，待提示"测试成功"后单击"确定"。 
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - 与关系数据库连接时，可以选择通用数据库连接器（generic-jdbc-connector）或者专用数据库连接器（oracle-connector、oracle-partition-connector、mysql-fastpath-connector），专用数据库连接器特别针对具体数据库类型进行优化，相对通用数据库连接器来说，导出、导入速度更快。
   
   - 使用mysql-fastpath-connector时，要求在NodeManager节点上有MySQL的**mysqldump** 和**mysqlimport** 命令，并且此两个命令所属MySQL客户端版本与MySQL服务器版本兼容，如果没有这两个命令或版本不兼容，请参考<https://dev.mysql.com/doc/refman/5.7/en/linux-installation-rpm.html>，安装MySQL client applications and tools。
    
   表1"generic-jdbc-connector"连接参数 
   | 参数名       | 说明           | 示例                                                                             |
   |:---|:---|:---|
   | 名称        | 关系型数据库连接的名称。 | mysql_test                                                                     |
   | JDBC驱动程序类 | JDBC驱动类名。    | com.mysql.jdbc.Driver                                                          |
   | JDBC连接字符串 | JDBC连接字符串。   | jdbc:mysql://10.254.144.102:3306/test?useUnicode=true\&characterEncoding=UTF-8 |
   | 用户名       | 连接数据库使用的用户名。 | root                                                                           |
   | 密码        | 连接数据库使用的密码。  | xxxx                                                                           |
      
   
   
**设置数据源信息**
4. 单击"下一步"，进入"输入设置"界面，设置数据源信息，暂只支持选择"表方式"。 
   表2输入设置参数 
   | 参数名     | 说明          | 示例      |
   |:---|:---|:---|
   | 架构名称    | 用户指定数据库的模式名 | public  |
   | 表名      | 表名称         | test    |
   | 表列名     | 指定要输入的列名    | id,name |
   | 是否指定分区列 | 暂只支持不指定分区模式 | false   |
      
   
   
**设置数据转换**
5. 单击"下一步"，进入"转换"界面，设置数据传输过程中的转换操作。算子的选择和参数设置具体请参考[Loader算子帮助](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1119.html)及[表3]。
   
    表3算子输入、输出参数设置 
   | 输入类型    | 输出类型         |
   |:---|:---|
   | MySQL输入 | ClickHouse输出 |
      
   在输入中把"表输入"拖拽到网格中，双击"表输入"，选择"自动识别"如[图3]所示。
   图3算子输入   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676747590.png "点击放大")
   在输出中把"ClickHouse输出"拖拽到网格中，双击"表输出"，选择"关联"或者手动编辑表格，与输入的表格对应，如[图4]所示。
   图4算子输出   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724866669.png "点击放大")
   
   
**设置数据保存信息并运行作业**
6. 单击"下一步"，进入"输出设置"界面，在"存储类型"中选择"CLICKHOUSE"，设置数据保存方式。 
   表4输出设置参数 
   | 参数名          | 说明                                                                                                                                                | 示例   |
   |:---|:---|:---|
   | 存储类型         | 选择CLICKHOUSE                                                                                                                                      | -    |
   | ClickHouse实例 | 选择ClickHouse                                                                                                                                      | -    |
   | 导入前清理数据      | 选择"true"或"false" 说明： 如果导入的表为ClickHouse分布式表，且需要清理数据时，请在导入前手动删除ClickHouse分布式表对应的本地表中的数据。 | true |
      
   
   
7. 单击"保存并运行"，开始保存并运行作业。
**查看作业完成情况**
8. 进入"Loader WebUI"界面，待"状态"显示"成功"则说明作业完成。 
   图5查看作业   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724746793.png "点击放大")
   
   
9. 使用ClickHouse客户端，查询ClickHouse表数据是否和MySQL的表数据一致。
 
