更新时间:2024-07-24 GMT+08:00

添加MySQL数据源

本章节适用于MRS 3.3.0及之后的版本。

HetuEngine支持配置MySQL数据源实现对MySQL数据源的接入与查询功能。本章节指导用户在集群的HSConsole界面添加MySQL类型的JDBC数据源。

添加MySQL数据源前提条件

  • 数据源与HetuEngine集群节点网络互通。
  • 集群已启用Kerberos认证(安全模式)创建HetuEngine管理员用户,集群未启用Kerberos认证(普通模式)创建HetuEngine业务用户,并为其赋予HDFS管理员权限,即创建用户时需同时加入“hadoop”和“hadoopmanager”用户组,创建用户可参考创建HetuEngine权限角色
  • 已创建HetuEngine计算实例,可参考创建HetuEngine计算实例
  • 已获取MySQL数据库所在的IP地址,端口号,用户名及密码。

HetuEngine对接MySQL数据源约束

  • HetuEngine支持对接MySQL操作的SQL语法:SHOW CATALOGS/SCHEMAS/TABLES/COLUMNS、DESCRIBE、USE、SELECT表/视图。
  • HetuEngine支持的MySQL数据源的Schema和Table名称不区分大小写。
  • 不支持在具有CHAR或VARCHAR等文本类型的列上下推任何谓词。

    例如:由于name是VARCHAR类型的列,因此如下两个查询的谓词均不会下推。

    SELECT * FROM nation WHERE name>'abcd';
    SELECT * FROM nation WHERE name='abcd';

配置MySQL数据源步骤

安装集群客户端

  1. 安装包含HetuEngine服务的集群客户端,例如安装目录为“/opt/hadoopclient”。

准备MySQL驱动

  1. 从MySQL官网获取MySQL驱动文件,格式为“xxx.jar”,支持版本为MySQL 5.7,MySQL 8.0及以后版本。
  2. 上传MySQL驱动文件至HetuEngine所在集群。

    可通过如下两种方式:
    • 通过Manager界面上传至HDFS:
      1. 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HDFS”,进入HDFS服务页面。
      2. 在“概览”页签下的“基本信息”区域,单击“NameNode Web UI”后的链接,进入NameNode Web UI界面。
      3. 选择“Utilities > Browse the file system”,单击,创建“/user/hetuserver/fiber/extra_file/driver/mysql”目录。
      4. 进入“/user/hetuserver/fiber/extra_file/driver/mysql”目录,单击上传2获取的MySQL驱动文件。
      5. 单击驱动文件所在行的“Permission”列的值,勾选“User”列的“Read”和“Write”,“Group”列的“Read”和“Other”列的“Read”,单击“Set”。
    • 通过使用HDFS命令直接上传:
      1. 登录HDFS服务客户端所在节点,切换到客户端安装目录,如“/opt/hadoopclient”。

        cd /opt/hadoopclient

      2. 执行以下命令配置环境变量。

        source bigdata_env

      3. 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。

        kinit HetuEngine管理员用户

        根据回显提示输入密码。

      4. 执行如下命令创建目录“/user/hetuserver/fiber/extra_file/driver/mysql”,并上传2获取的MySQL驱动,然后修改对应的权限。

        hdfs dfs -mkdir -p /user/hetuserver/fiber/extra_file/driver/mysql

        hdfs dfs -put ./MySQL驱动文件 /user/hetuserver/fiber/extra_file/driver/mysql

        hdfs dfs -chmod -R 644 /user/hetuserver/fiber/extra_file/driver/mysql

配置MySQL数据源

  1. 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
  2. 在“概览”页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
  3. 选择“数据源”,单击“添加数据源”。在“添加数据源”页面填写参数。

    1. 配置“基本配置”,填写数据源名称,选择数据源类型“JDBC > MySQL”。
    2. 配置“MySQL配置”,参数配置请参考表1
      表1 MySQL配置

      参数

      描述

      取值样例

      驱动

      默认为“mysql”。

      mysql

      驱动名称

      选择2中已提前上传的待使用的MySQL驱动,格式为xxx.jar。

      mysql-connector-java-8.0.11.jar

      JDBC URL

      连接MySQL的JDBC URL地址。

      格式:jdbc:mysql://MySQL数据库所在的IP地址:端口号

      端口号默认为3306。

      • IPV4:jdbc:mysql://10.10.10.11:3306
      • IPV6:jdbc:mysql://[10:10::10:11]:3306

      用户名

      连接MySQL数据源的MySQL用户名。

      -

      密码

      连接MySQL数据源的MySQL用户密码。

      -

    3. (可选)自定义配置。
      单击“增加”可以增加自定义配置参数。配置MySQL数据源自定义参数,参考表2
      表2 MySQL数据源自定义配置参数

      参数

      描述

      取值样例

      mysql.auto-reconnect

      是否自动重连。

      • true(默认值):开启自动重连。
      • false:关闭自动重连。

      true

      mysql.max-reconnects

      最大重连次数,默认值:3。

      3

      mysql.jdbc.use-information-schema

      驱动程序是否应该使用INFORMATION_SCHEMA来派生“DatabaseMetaData”使用的信息。

      true

      use-connection-pool

      是否使用JDBC连接池,默认值:false。

      false

      jdbc.connection.pool.maxTotal

      JDBC连接池中最大连接数,默认值:8。

      8

      jdbc.connection.pool.maxIdle

      JDBC连接池中最大空闲连接数,默认值:8。

      8

      jdbc.connection.pool.minIdle

      JDBC连接池中最小空闲连接数,默认值:0。

      0

      case-insensitive-name-matching

      HetuEngine支持的MySQL数据源的Schema和Table名称大小写格式敏感。

      • false(默认值):仅支持查询全小写的Schema和Table。
      • true:
        • 忽略大小写后无同名的Schema和Table:支持查询该Schema和Table。
        • 忽略大小写后存在同名的Schema和Table:不支持查询该Schema和Table。

      false

      case-insensitive-name-matching.cache-ttl

      MySQL数据源的大小写敏感的Schema和Table名称缓存超时时长,默认值:1m(1分钟)。

      1m

      dynamic-filtering.enabled

      是否将动态过滤器下推到JDBC查询中。

      • true(默认值):开启下推。
      • false:关闭下推。

      true

      dynamic-filtering.wait-timeout

      在启动 JDBC 查询之前,HetuEngine将等待从连接的构建端收集动态过滤器的最大持续时间。使用较大的超时可能会导致更详细的动态过滤器。但是也会增加某些查询的延迟,默认值:20s。

      20s

      unsupported-type-handling

      当连接器不支持此数据类型时,是否将其转换为VARCHAR,从而避免失败。

      • CONVERT_TO_VARCHAR:将不支持的类型转为VARCHAR类型,并且只支持对它们的读操作。
      • IGNORE(默认值):不支持的类型将不在查询结果中显示。

      IGNORE

      join-pushdown.enabled

      是否启用Join下推。

      • true(默认值):开启Join下推。
      • false:关闭Join下推。

      true

      join-pushdown.strategy

      用于评估Join操作是否被下推的策略。默认值:AUTOMATIC

      • AUTOMATIC(默认值):启用基于成本的连接下推。
      • EAGER:尽可能下推Join。即使表统计信息不可用, EAGER也可以下推Join,这可能会导致查询性能下降,因此仅建议将EAGER用于测试和故障排除场景。

      AUTOMATIC

      单击“删除”可以删除已增加的自定义配置参数。

    4. 单击“确定”。

  4. 登录集群客户端所在节点,执行以下命令,切换到客户端安装目录并认证用户。

    cd /opt/hadoopclient

    source bigdata_env

    kinit HetuEngine组件操作用户 (普通模式集群跳过)

  5. 执行以下命令,登录数据源的catalog。

    hetu-cli --catalog 数据源名称 --schema 数据库名

    例如执行以下命令:

    hetu-cli --catalog mysql_1 --schema mysql

  6. 执行以下命令,可正常查看数据库表信息或不报错即表示连接成功。

    show tables;

MySQL与HetuEngine数据类型映射

MySQL数据类型到HetuEngine数据类型映射

MySQL类型

HetuEngine类型

BIT

BOOLEAN

BOOLEAN

TINYINT

TINYINT

TINYINT

SMALLINT

SMALLINT

INTEGER

INTEGER

BIGINT

BIGINT

DOUBLE PRECISION

DOUBLE

FLOAT

REAL

REAL(m, d)

REAL(m, d)

DECIMAL(p, s)

DECIMAL(p, s)

CHAR(n)

CHAR(n)

VARCHAR(n)

VARCHAR(n)

TINYTEXT

VARCHAR(255)

TEXT

VARCHAR(65535)

MEDIUMTEXT

VARCHAR(16777215)

LONGTEXT

VARCHAR

ENUM(n)

VARCHAR(n)

BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB

VARBINARY

JSON

JSON

DATE

DATE

TIME(n)

TIME(n)

DATETIME(n)

TIMESTAMP(n)

TIMESTAMP(n)

TIMESTAMP(n)