MySQL | Qlik Cloud帮助
跳到主要内容 跳到补充内容

MySQL

本主题说明如何使用 MySQL 目标连接器配置到 MySQL 目标的连接。MySQL 只能在复制任务中用作目标数据库。在连接到 MySQL 目标之前,您需要在数据库上配置 所需权限。如果您通过 数据移动网关 连接到 MySQL,您还需要按照 驱动程序设置 中的说明安装驱动程序。

有关使用 MySQL 连接器时的限制和注意事项的信息,请参阅 限制和注意事项

设置连接属性

要配置连接器,请执行以下操作:

  1. 连接中,单击创建连接

  2. 选择 MySQL 目标连接器,然后提供以下设置:

数据目标

  • 数据网关使用 数据移动网关 时,选择将用于测试到 MySQL 目标的连接的数据网关。这应与用于访问数据源的网关相同。

    信息注释
    • 此字段在 Qlik Talend Cloud Starter 订阅中不可用,因为此订阅层级不支持 数据移动网关
    • 您还需要在 数据移动网关 计算机上安装相应的驱动程序。有关详细信息,请参阅下面的 驱动程序设置

  • 云提供商:根据需要选择以下选项之一:

      • 适用于本地 MySQL、MariaDB、Amazon Aurora 或 Microsoft Azure Database for MySQL - 灵活服务器。
      • 在不使用 数据移动网关 的情况下工作时
    • 适用于 Amazon RDS for MariaDB 或 Amazon RDS for MySQL。

    • 适用于 Google Cloud SQL for MySQL。

    • 适用于 Microsoft Azure Database for MySQL。

  • 服务器:安装了 MySQL 数据库的计算机的主机名或 IP 地址。

  • 端口:连接到数据库时使用的端口。默认值为 3306。

帐户属性

用户名密码:授权访问 MySQL Server 数据库的用户的用户名和密码。

数据库属性

  • 目标数据库类型:选择以下选项之一:
    • 特定数据库:选择此选项时,所有源模式都将加载到指定的数据库中。
    • 多个数据库:选择此选项时,每个源模式都将加载到其相应的数据库中。此外,默认情况下,所有控制表都将复制到名为 attrep_control 的新模式中。有关控制表的更多信息,请参阅 控制表
  • 最大文件大小 (KB):选择或键入 CSV 文件在加载到 MySQL 目标数据库之前的最大大小(以 KB 为单位)。默认值为 32000 KB。
  • 并行加载线程:将数据加载到 MySQL 目标数据库时,增加线程数可能会提高性能。请注意,设置大量线程可能会对数据库性能产生不利影响,因为每个线程都需要一个单独的连接。

内部属性

内部属性用于特殊用例,因此不会在对话框中公开。只有在 Qlik 支持部门的指示下,您才应该使用它们。

使用字段右侧的 新建取消 按钮可以根据需要添加或删除特性。

名称

连接的显示名称。

先决条件

所需权限

必须向连接器设置中指定的用户授予:

  • MySQL 帐户访问权限
  • MySQL 数据库中的读/写权限
  • 复制中涉及的每个目标模式的以下权限:
    • ALTER
    • CREATE
    • CREATE TEMPORARY TABLES
    • DELETE
    • DROP
    • INSERT
    • SELECT
    • UPDATE

驱动程序设置

本部分介绍如何安装所需的 driver。这个过程包括运行一个脚本,该脚本将自动下载、安装和配置所需的 driver。您还可以根据需要运行脚本来更新和卸载 driver

  • 请确保在 数据移动 网关服务器上安装了 Python 3.6 或更高版本。

    Python 预装在大多数 Linux 发行版上。您可以通过运行以下命令来检查系统上安装了哪个 Python 版本。

    python3 --version

下载并安装 driver

  1. 数据移动 网关计算机上,将工作目录更改为:

    opt/qlik/gateway/movement/drivers/bin

  2. 然后运行以下命令:

    语法:

    ./install mysql

    如果无法下载 driver(由于访问限制或技术问题),将显示一条消息,为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后,请再次运行 install mysql 命令。

    否则,将显示 driver 的 EULA。

  3. 执行以下选项之一:

    • 重复按 [Enter] 可在 EULA 中缓慢滚动。
    • 重复按空格键可快速滚动 EULA。
    • 按 q 退出许可证文本并显示 EULA 接受选项。
  4. 执行以下选项之一:

    • 键入 "y" 并按 [Enter] 接受 EULA 并开始安装。
    • 键入 "n" 并按 [Enter] 拒绝 EULA 并退出安装。
    • 键入“v”并按 [Enter] 以再次查看 EULA。

  5. 将会安装 driver

如果要在安装提供的 driver 之前卸载以前版本的 driver,请运行 update 命令。

下载并更新 driver

  1. 数据移动 网关计算机上,将工作目录更改为:

    opt/qlik/gateway/movement/drivers/bin

  2. 然后运行以下命令:

    语法:

    ./update mysql

    如果无法下载 driver(由于访问限制或技术问题),将显示一条消息,为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后,请再次运行 update mysql 命令。

    否则,将显示 driver 的 EULA。

  3. 执行以下选项之一:

    • 重复按 [Enter] 可在 EULA 中缓慢滚动。
    • 重复按空格键可快速滚动 EULA。
    • 按 q 退出许可证文本并显示 EULA 接受选项。
  4. 执行以下选项之一:

    • 键入 "y" 并按 [Enter] 接受 EULA 并开始安装。
    • 键入 "n" 并按 [Enter] 拒绝 EULA 并退出安装。
    • 键入“v”并按 [Enter] 可从头开始查看 EULA。
  5. 将卸载旧的 driver,并安装新的 driver

如果要卸载 driver,请运行 uninstall 命令。

卸载 driver

  1. 停止所有配置为使用此连接器的任务。

  2. 数据移动 网关计算机上,将工作目录更改为:

    opt/qlik/gateway/movement/drivers/bin

  3. 然后运行以下命令:

    语法:

    ./uninstall mysql

    将卸载 driver

手动安装驱动程序

只有在自动驱动程序安装未成功完成的情况下,才应尝试手动安装 driver

安装 数据移动网关 后,下载 mysql-connector-odbc-<版本>.x86_64.rpm 驱动程序。您可以在此路径下面找到受支持版本的直接下载链接:binary-artifacts in /opt/qlik/gateway/movement/drivers/manifests/mysql.yaml。下载完成后,将 RPM 复制到 数据移动网关 机器上。

数据移动网关 服务器上,打开 shell 提示符并执行以下操作:

  1. 停止 数据移动网关 服务:

    sudo systemctl stop repagent

  2. 可选择确认服务已停止:

    sudo systemctl status repagent

    状态应如下所示:

    Active: inactive (dead) since <timestamp> ago

  3. 数据移动网关 计算机上安装驱动程序。
  4. 将工作目录更改为 <数据移动网关_Install_Dir>/bin.

  5. 将驱动程序位置复制到 site_arep_login.sh 文件:

    echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib64" >> site_arep_login.sh

    这将把驱动程序添加到 "LD_LIBRARY_PATH" 并更新 site_arep_login.sh 文件中的驱动程序位置。

  6. 可选择确认已将驱动程序位置复制:

    cat site_arep_login.sh
  7. 确保 /etc/odbcinst.ini 文件包含 MySQL 的条目,如以下示例所示:

    [MySQL ODBC 8.0 Unicode Driver]

    Driver = /usr/lib64/libmyodbc8w.so

    UsageCount = 1

  8. 启动 数据移动网关 服务:

    sudo systemctl start repagent

  9. 可选择确认服务已启动:

    sudo systemctl status repagent

    状态应如下所示:

    Active: active (running) since <timestamp> ago

限制和注意事项

将 MySQL 用作复制目标时,适用以下限制:

  • 复制到 MariaDB 目标数据库时,如果 DATETIME 值设置为零,则需要定义一个将 DATETIME 替换为有效值的转换。例如:

    replace($datetime_column,'9999-12-31 23:59:59','2000-01-01 22:00:00')

    信息注释此限制不适用于 Microsoft Azure Database for MySQL。
  • 由于 MySQL 的运行方式,在全量加载任务期间将数据加载到 MySQL 目标时,重复键错误将不会报告到日志中。
  • 将列的值更新为其现有值时,MySQL 将返回受影响的行数为零(这与执行一行更新的 Oracle 和 Microsoft SQL Server 不同)。

    这会在 attrep_apply_exceptions Control Table 中生成一个条目,并显示以下警告:

    Some changes from the source database had no impact when applied to the target database. See attrep_apply_exceptions table for details.

  • 如果需要复制 4 字节的表情符号字符,则必须将目标架构字符集设置为 utf8mb4。

  • 当源表包含大量列时,MySQL 可能会返回 Row size too large (> 8126) 错误,因为 8126 字节是 MySQL 中的默认最大行大小。使用 SaaS 应用程序源时,此错误在运行时发生。使用数据库等其他源类型时,此错误在任务准备期间发生。要解决此限制,请使用以下任一方法:

    • 推荐方法:摄取数据后,删除目标上不需要的列。有关如何执行此操作的信息,请参阅 删除列。如果仍然遇到该错误,请删除更多列。

    • 替代缓解措施:如果需要将所有源列包含在目标表中,某些 MySQL 数据库配置可以允许这样做。其中之一是增加 MySQL 页面大小,使其足以容纳该行大小。

      信息注释对于行大小超过 65,535 字节限制的源,必须将源字段转换为支持更大行大小的数据类型。这是由于最大行记录大小的已知限制。有关详细信息,请参阅 有关行大小限制的 MySQL 文档

数据类型

本机数据类型信息将被保留,并显示在数据集视图的本机数据类型列中。如果列不可见,则需要打开数据集视图的列选择器,然后选择本机数据类型列。

支持的数据类型
Qlik Cloud 数据类型 MySQL 数据类型

BOOL

BOOL

BYTES

如果长度 =>1 且 =< 8095,则为:

VARBINARY (Length)

如果长度 =>8096 且 =< 65535,则为:

BLOB

如果长度 =>65536 且 =< 16777215,则为:

MEDIUMBLOB

如果长度 =>16777216 且 =< 2147483647,则为:

LONGBLOB

DATE

DATE

TIME

TIME

DATETIME

如果刻度 => 0 且 =< 6,那么:

DECIMAL (p,s)

如果刻度 => 7 且 =< 12,那么:

VARCHAR (37)

INT1

TINYINT

INT2

SMALLINT

INT4

INTEGER

INT8

BIGINT

NUMERIC

如果刻度 => 0 且 =< 30,那么:

DECIMAL (p,s)

如果刻度 => 31 且 =< 100,那么:

VARCHAR (45)

REAL4

FLOAT

REAL8

DOUBLE

STRING

如果长度 =>1 且 =< 8095,则为:

VARCHAR(长度)

如果长度 =>8096 且 =< 65535,则为:

TEXT

如果长度 =>65536 且 =< 16777215,则为:

MEDIUMTEXT

如果长度 =>16777216 且 =< 2147483647,则为:

LONGTEXT

UINT1

UNSIGNED TINYINT

UINT2

UNSIGNED SMALLINT

UINT4

UNSIGNED INTEGER

UINT8

UNSIGNED BIGINT

WSTRING

如果长度 =>1 且 =< 8095,则为:

VARCHAR(长度)

如果长度 =>8096 且 =< 65535,则为:

TEXT

如果长度 =>65536 且 =< 16777215,则为:

MEDIUMTEXT

如果长度 =>16777216 且 =< 2147483647,则为:

LONGTEXT

BLOB

启用允许无限制 LOB 大小选项时:

  • LONGBLOB

启用限制 LOB 大小为选项时:

  • 如果指定的值为 63 KB 或更小,则为:

    BLOB

  • 如果指定的值为 64 KB 或更大,则为:

    LONGBLOB

有关限制 LOB 大小的信息,请参见Metadata

NCLOB

启用允许无限制 LOB 大小选项时:

  • TEXT

启用限制 LOB 大小为选项时:

  • 如果指定的值为 63 KB 或更小,则为:

    TEXT

  • 如果指定的值为 64 KB 或更大,则为:

    LONGTEXT

有关限制 LOB 大小的信息,请参见Metadata

CLOB

启用允许无限制 LOB 大小选项时:

  • TEXT CHARACTER SET UTF-16

启用限制 LOB 大小为选项时:

  • 如果指定的值为 63 KB 或更小,则为:

    TEXT CHARACTER SET UTF-16

  • 如果指定的值为 64 KB 或更大,则为:

    LONGTEXT CHARACTER SET UTF-16

有关限制 LOB 大小的信息,请参见Metadata

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们!