
# 通过JDBC Catalog对接MySQL/Doris数据源
#### 操作场景
JDBC Catalog支持通过标准JDBC协议连接MySQL、Doris等数据源。本章节以Doris通过JDBC Catalog读取MySQL或Doris数据为例进行演示。
#### 约束与限制
该章节内容仅适用于MRS 3.3.1及之后版本。
#### 前提条件
- 已创建包含Doris服务的集群。
- 已准备源集群，例如，MySQL服务端集群。
- Doris集群与MySQL服务端集群网络互通。
- 已安装MySQL客户端，相关操作可参考[使用MySQL客户端连接Doris](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_249271.html)。
 
#### 通过JDBC Catalog查询MySQL/Doris数据
1. 进入MySQL官网（<https://www.mysql.com/>），选择"DOWNLOADS \> MySQL Community(GPL) DownLoads \> Connector/J"下载对应版本的驱动包。
   
   **MySQL驱动版本建议为5.1.*x*及之后版本。**
   
   
2. 将下载的MySQL驱动包上传至所有FE和BE节点的相同目录下，例如"/home/omm"，并修改驱动包的属组为**omm:wheel** 。
   
   如果FE和BE共节点部署，还需要将MySQL驱动包上传至"${BIGDATA_HOME}/FusionInsight_Doris_\*/install/FusionInsight-Doris-\*/doris-fe/jdbc_drivers/" 目录下。
   
   
3. 登录FusionInsight Manager，选择"集群 \> 服务 \> Doris \> 配置 \> 全部配置 \> FE（角色） \> 自定义"。
4. 在自定义参数"fe.conf.customized.configs"中新增"jdbc_drivers_dir"参数，值为[2]上传的驱动包所在的目录，例如"/home/omm"。
5. 选择"全部配置 \> BE（角色） \> 自定义"，在自定义参数"fe.conf.customized.configs"中新增"jdbc_drivers_dir"参数，值为[2]上传的驱动包所在的目录，例如"/home/omm"。
6. 在搜索框中搜索BE的"enable_udf_sandbox"参数，并修改该参数值为"false"。
7. 单击"保存"保存配置。单击"概览"，选择右上角的"更多 \> 重启服务"，输入当前用户密码并单击"确定"重启Doris服务。
8. 登录安装了MySQL的节点，执行以下命令，连接Doris数据库。 
   若集群已启用Kerberos认证（安全模式），需先执行以下命令：
   ```
   export LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=1
   ```
   连接Doris数据库：
   ```
   mysql -u数据库登录用户 -p -PFE查询连接端口 -hDoris FE实例IP地址
   ```
   执行命令后输入数据库登录用户密码。
   其中：
   - Doris FE的查询连接端口，可以通过登录Manager，单击"集群 \> 服务 \> Doris \> 配置"，查询Doris服务的"query_port"参数获取。
   
   - Doris FE实例IP地址可通过登录MRS集群的Manager界面，单击"集群 \> 服务 \> Doris \> 实例"，查看任一FE实例的业务IP地址。
   
   - 用户也可以使用MySQL连接软件或者在Doris WebUI界面连接数据库。
   
   
   
   
9. 执行以下命令在目标Doris集群中创建JDBC Catalog： 
   - 源集群为MySQL服务端，目标MRS Doris集群未启用Kerberos认证（普通模式），则执行以下命令：
     ```
     CREATE CATALOG doris_jdbc_catalog PROPERTIES (
     "type"="jdbc",
     "user"="MySQL用户名",
     "password"="MySQL用户密码",
     "jdbc_url" = "jdbc:mysql://MySQL IP地址:MySQL端口号?useSSL=false",
     "driver_url" = "mysql-connector-java-xxx.jar",
     "driver_class" = "com.mysql.jdbc.Driver"
     );
     ```
     需注意：
     - 如果MySQL驱动版本是6.x及之后版本，则在创建JDBC Catalog时，"jdbc_url"需要添加"serverTimezone=GMT%2B8"参数，避免因源集群和当前Doris集群时区不一致导致Catalog创建失败。
     
     - 如果MySQL驱动版本为6.x及之后版本，则"driver_class"值为"com.mysql.cj.jdbc.Driver"。如果MySQL驱动版本为5.x，则"drive_class"值为"com.mysql.jdbc.Driver"。
      
   
   - 源和目标集群都是MRS Doris，且集群未启用Kerberos认证（普通模式），则执行以下命令：
     ```
     CREATE CATALOG doris_jdbc_catalog PROPERTIES (
     "type"="jdbc",
     "user"="Doris用户名",
     "password"="Doris用户密码",
     "jdbc_url" = "jdbc:mysql://源Doris FE实例IP地址:FE的查询连接端口?useSSL=false",
     "driver_url" = "mysql-connector-java-xxx.jar",
     "driver_class" = "com.mysql.jdbc.Driver"
     );
     ```
     其中：
     - 源集群的Doris FE的查询连接端口，可以通过登录Manager，单击"集群 \> 服务 \> Doris \> 配置"，查询Doris服务的"query_port"参数获取。
     
     - 源集群的Doris FE实例IP地址可通过登录MRS集群的Manager界面，单击"集群 \> 服务 \> Doris \> 实例"，查看任一FE实例的IP地址。
      
   
   
   
   - 源和目标集群都是MRS Doris，且集群已启用Kerberos认证（安全模式），则执行以下命令：
     ```
     CREATE CATALOG doris_jdbc_catalog PROPERTIES (
     "type"="jdbc",
     "user"="Doris用户名",
     "password"="Doris用户密码",
     "jdbc_url" = "jdbc:mysql://源Doris FE实例IP地址:FE的查询连接端口?allowPublicKeyRetrieval=true&useSSL=true&verifyServerCertificate=false",
     "driver_url" = "mysql-connector-java-xxx.jar",
     "driver_class" = "com.mysql.jdbc.Driver"
     );
     ```
     
   
   
   
   
10. 执行以下命令，切换到新创建的Catalog并查看数据库： 
    切换到新创建的Catalog：
    ```
    switch doris_jdbc_catalog;
    ```
    查看数据库：
    ```
    show databases;
    ```
    回显结果中显示MySQL中的数据库名和表名即表示Doris通过JDBC Catalog访问MySQL集群成功。
    
    
 
