更新时间:2024-12-11 GMT+08:00

通过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

通过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认证(安全模式),需先执行以下命令再连接Doris数据库:

    export LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=1

    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"

      );

    • 源和目标集群都是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"

      );

    • 源和目标集群都是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"

      );

    • 如果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”。
    • 源集群的Doris FE的查询连接端口,可以通过登录Manager,单击“集群 > 服务 > Doris > 配置”,查询Doris服务的“query_port”参数获取。
    • 源集群的Doris FE实例IP地址可通过登录MRS集群的Manager界面,单击“集群 > 服务 > Doris > 实例”,查看任一FE实例的IP地址。

  10. 执行以下命令,切换到新创建的Catalog并查看数据库:

    switch doris_jdbc_catalog;

    show databases;

    回显结果中显示MySQL中的数据库名和表名即表示Doris通过JDBC Catalog访问MySQL集群成功。