通过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数据
- 进入MySQL官网(https://www.mysql.com/),选择“DOWNLOADS > MySQL Community(GPL) DownLoads > Connector/J”下载对应版本的驱动包。
MySQL驱动版本建议为5.1.x及之后版本。
- 将下载的MySQL驱动包上传至所有FE和BE节点的相同目录下,例如“/home/omm”,并修改驱动包的属组为omm:wheel。
如果FE和BE共节点部署,还需要将MySQL驱动包上传至“${BIGDATA_HOME}/FusionInsight_Doris_*/install/FusionInsight-Doris-*/doris-fe/jdbc_drivers/” 目录下。
- 登录FusionInsight Manager,选择“集群 > 服务 > Doris > 配置 > 全部配置 > FE(角色) > 自定义”。
- 在自定义参数“fe.conf.customized.configs”中新增“jdbc_drivers_dir”参数,值为2上传的驱动包所在的目录,例如“/home/omm”。
- 选择“全部配置 > BE(角色) > 自定义”,在自定义参数“fe.conf.customized.configs”中新增“jdbc_drivers_dir”参数,值为2上传的驱动包所在的目录,例如“/home/omm”。
- 在搜索框中搜索BE的“enable_udf_sandbox”参数,并修改该参数值为“false”。
- 单击“保存”保存配置。单击“概览”,选择右上角的“更多 > 重启服务”,输入当前用户密码并单击“确定”重启Doris服务。
- 登录安装了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界面连接数据库。
- 执行以下命令在目标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地址。
- 源集群为MySQL服务端,目标MRS Doris集群未启用Kerberos认证(普通模式),则执行以下命令:
- 执行以下命令,切换到新创建的Catalog并查看数据库:
switch doris_jdbc_catalog;
show databases;
回显结果中显示MySQL中的数据库名和表名即表示Doris通过JDBC Catalog访问MySQL集群成功。