配置 MySQL 数据源
MySQL 是一种开源的关系型数据库管理系统,能高效地存储、管理和查询大量数据,支持多种操作系统,被广泛应用于各种类型的软件和网站开发中。
AE 数据开发平台 离线同步方案 支持 MySQL 数据源的 读取(Reader)和 写入(Writer)。本文将为您介绍 MySQL 数据同步能力的支持情况。
支持的版本
mysql 5.5+
使用限制
目前仅支持以下配置方式:
- 支持读取 MySQL 数据源(离线读取)并向 AE 预置仓空间表写入
- 支持 AE 预置仓空间表 向 MySQL 写入(离线写入)
注:暂不支持 MySQL 数据库向非 AE 预置仓的其他数据库直接写入。
支持的字段类型
| 字段类型 | 离线读(MySQL Reader) | 离线写(MySQL Writer) |
|---|---|---|
| TINYINT | 支持 | 支持 |
| SMALLINT | 支持 | 支持 |
| INTEGER | 支持 | 支持 |
| BIGINT | 支持 | 支持 |
| FLOAT | 支持 | 不支持 |
| DOUBLE | 支持 | 支持 |
| DECIMAL | 支持 | 支持 |
| DATE | 支持 | 支持 |
| DATETIME | 支持 | 支持 |
| TIMESTAMP | 支持 | 支持 |
| REAL | 支持 | 不支持 |
| VARCHAR | 支持 | 支持 |
| JSON | 支持 | 不支持 |
| TEXT | 支持 | 不支持 |
| MEDIUMTEXT | 支持 | 不支持 |
| LONGTEXT | 支持 | 不支持 |
| ENUM | 支持 | 不支持 |
| SET | 支持 | 不支持 |
| BIT | 支持 | 不支持 |
| TIME | 支持 | 不支持 |
| YEAR | 支持 | 不支持 |
| VARBINARY | 不支持 | 不支持 |
| BINARY | 不支持 | 不支持 |
| TINYBLOB | 不支持 | 不支持 |
| MEDIUMBLOB | 不支持 | 不支持 |
| LONGBLOB | 不支持 | 不支持 |
| Blob | 不支持 | 不支持 |
| BOOLEAN | 不支持 | 不支持 |
| MULTIPOLYGON | 不支持 | 不支持 |
| LINESTRING | 不支持 | 不支持 |
| POLYGON | 不支持 | 不支持 |
| MULTIPOINT | 不支持 | 不支持 |
| MULTILINESTRING | 不支持 | 不支持 |
| GEOMETRYCOLLECTION | 不支持 | 不支持 |
创建 MySQL 数据源
在 数据开发平台 - 集成 模块,您可以选择 新增 MySQL 数据源
数据源配置参数信息
填写数据源所需的配置信息并完成连通性测试后,即可成功创建 MySQL 数据源。
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
| 字段名称 | 说明 |
|---|---|
| 基本信息 | |
| *数据源名称 | 数开平台空间内唯一,必须以字母、数字、下划线组合,且不能以数字和下划线开头 |
| 备注 | 选填 |
| 数据源配置 | |
| 不区分环境 / 独立环境配置 | 二选一:「不区分环境」表示 生产环境 与 开发环境 共用一套配置,「独立环境配置」表示双环境独立配置 |
| *连接字符串 | 连接字符串(Connection String)是用于建立与 MySQL 数据库连接的字符串组合 注:暂不支持字符串中的参数解析 |
| *数据库名 | 连接的 MySQL 数据库名称 |
| *用户名 | 有权限访问数据库的用户名 |
| *密码 | 用户名对应的密码信息 |
| 高级配置 | 连接数据库所需的其他高级参数,可自定义填写 |
高级参数黑名单
为保障集成安全,我们在「高级配置」中不支持以下参数的配置。
| 参数名称 | 用途 | 安全陷阱 |
|---|---|---|
| allowLoadLocalInfile | 用途: 控制是否允许通过 LOAD DATA LOCAL INFILE SQL 语句从客户端机器(即运行你的Java应用程序的服务器)加载文件到MySQL数据库中。 | 安全陷阱: 这是风险极高的参数。如果开启,恶意MySQL服务器(或一个被攻击的合法服务器)可以在客户端连接时,反向请求客户端上的任意文件。攻击者可以伪造一个MySQL服务器,当你的应用尝试连接时,它会发送一个LOAD DATA LOCAL的请求,JDBC驱动会无条件地将客户端机器上的敏感文件(如/etc/passwd, ~/.ssh/id_rsa, 应用配置文件、数据库连接配置等)发送给攻击者服务器。这通常被称为“MySQL客户端文件读取漏洞”的利用。 |
| allowUrlInLocalInfile | 用途: 控制 LOAD DATA LOCAL INFILE 语句是否允许指定一个URL(如 http://, ftp://)作为文件源。 | 安全陷阱: 此参数放大了
|
| allowLoadLocalInfileInPath | 用途: 这是 allowLoadLocalInfile 的一个安全增强的替代方案(需要较新版本的驱动)。它不允许读取任意文件,而是将文件读取限制到指定的目录及其子目录下。 | 安全陷阱:如果配置的路径范围过大(如 /tmp),或者攻击者通过其他应用漏洞能够将文件写入到该允许的路径下,他们仍然可以读取这些文件。错误配置(如配置成 /)会使其等同于 allowLoadLocalInfile=true。 |
| initCommand | 用途: 允许你指定一个SQL语句,在每次创建新连接后立即执行。常用于设置会话变量,如 SET NAMES 'utf8mb4' 或 SET time_zone = '+8:00' | 安全陷阱: 风险来自于用户输入的控制。如果这个参数的值是由用户外部输入拼接而成(而不是在代码中写死的安全字符串),就可能造成SQL注入。一旦攻击者能够控制连接串中的 initCommand,他就可以执行任何有权限的SQL操作,例如删除表、修改数据、添加用户等。 |
| clientFlags | 用途: 这是一个底层参数,用于设置客户端与MySQL服务器握手时使用的功能标志位。它是一个位掩码(bitmask),通过数字值来启用或禁用客户端的某些特定功能。 | 安全陷阱: 风险在于它可能包含一些危险的标志位。特别是:
|
上述限制是基于“最小权限原则”和“纵深防御”的安全最佳实践,旨在保护您的应用和底层基础设施免受恶意攻击。
如有任何业务需求必须使用相关功能,请联系 ThinkingAI 运维团队进行单独评估。
创建离线同步任务
根据上述步骤成功 创建 MySQL 数据源 并测试连通性成功后,您可根据实际场景,配置 MySQL 离线读、MySQL 离线写 等离线同步任务。
MySQL 作为数据来源
数据来源选择 MySQL,并完成以下相关参数配置:
| 字段名称 | 说明 |
|---|---|
| *源类型 | 数据来源目标类型选择 MySQL |
| *数据源名称 | 已在数据源管理界面注册的 MySQL 数据源,下拉可选。 若还未建立相应数据源,可单击 数据源管理 按钮,前往创建 MySQL 数据源。 |
| *取数方式 |
|
| *数据库名 | 读取的数据库名称 |
| *数据表名 | 读取的数据表信息 |
| 分片键 | 若您选择源表信息带有分片字段,您可以选择分片键 |
| 数据过滤 | 开启数据过滤开关可以使用 SQL 语法填写 WHERE 过滤语句 |
| 高级配置 | 支持批量处理条数等参数控制 |
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
MySQL 作为数据去向
数据去向选择 MySQL,并完成以下相关参数配置:
| 字段名称 | 说明 |
|---|---|
| *源类型 | 数据去向目标类型选择 MySQL |
| *数据源名称 | 已在数据源管理界面注册的 MySQL 数据源,下拉可选。 若还未建立相应数据源,可单击 数据源管理 按钮,前往创建 MySQL 数据源。 |
| *数据库名 | 读取的数据库名称 |
| *数据表名 | 读取的数据表信息 |
| *写入模式 |
|
| 高级配置 | 支持批量处理条数等参数控制 |
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
字段映射说明
完成数据来源和目标端配置后,需建立字段映射关系,系统将按照映射关系将源端字段中的数据自动同步至目标字段中。字段映射关系有三种配置方式:
- 方式一:自定义选择,选中源表字段,并选择目标表中目标字段
- 方式二:同名映射,系统会自动为源表和目标表中的同名字段建立映射关系
- 方式三:同行映射,系统会自动为同行字段建立映射关系
需要注意一个目标字段只能对应一个来源字段
字段类型转换方式
在进行数据同步时,系统会使用 CAST() 函数对源表字段进行转型,尝试将其类型转换成目标字段的类型,如果转型失败,则目标字段的值将会被设置为 NULL
数据类型转换特殊说明
- √ 表示支持对应类型转换
- √, null 表示支持对应类型转换,若转换失败则被设置为 NULL
| 源类型/目标类型 | ROW | ARRAY | MAP | STRING | BOOLEAN | TINYINT | SMALLINT | INT | BIGINT | FLOAT | DOUBLE | DECIMAL | BYTES | DATE | TIMESTAMP | TIME |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ROW | √, null | |||||||||||||||
| ARRAY | √, null | |||||||||||||||
| MAP | √, null | |||||||||||||||
| STRING | √ | √, null | √, null | √, null | √, null | √, null | √, null | √, null | √, null | √, null | √, null | √, null | ||||
| BOOLEAN | √, null | √ | ||||||||||||||
| TINYINT | √, null | √ | √, null | √, null | √, null | |||||||||||
| SMALLINT | √, null | √, null | √ | √, null | √, null | |||||||||||
| INT | √, null | √, null | √, null | √ | √, null | |||||||||||
| BIGINT | √, null | √, null | √, null | √, null | √ | |||||||||||
| FLOAT | √, null | √ | √, null | √, null | ||||||||||||
| DOUBLE | √, null | √, null | √ | √, null | ||||||||||||
| DECIMAL | √, null | √, null | √, null | √ | ||||||||||||
| BYTES | √, null | √ | ||||||||||||||
| DATE | √, null | √ | √, null | |||||||||||||
| TIMESTAMP | √, null | √, null | √ | |||||||||||||
| TIME | √, null | √ |
基本信息设置
最后,您需要设置集成方案的基本信息,包括方案的名称、负责人、集成的同步速率以及备注等。
完成配置后,可以点击 「保存」 按钮完成集成方案的创建。
注:方案名称保存后不允许修改
详情页展示:
离线同步方案挂流
挂载任务流
1.进入挂载流程
- 在集成方案详情页,点击右上角「挂载到任务流」按钮
2.选择任务流
-
从下拉菜单中选择目标任务流
-
若需新建任务流:
- 点击下拉菜单下方的「新建任务流」快捷按钮
- 或前往「开发」模块创建
-
提示:如未显示目标任务流,可点击右侧↻刷新按钮
3.创建同步节点
- 在任务流中新建「离线同步方案」类型节点
- 该节点将关联当前集成方案,节点执行时即触发对应集成方案的运行
4.完成挂载
- 点击「创建节点并挂载」完成配置
- 挂载成功后,可点击「前往任务流」立即查看挂载结果
注:挂载任务流所创建的任务节点处于 尚未发布状态,建议您前往查看任务流,并将该节点发布上线。
解除任务流挂载
如果您希望解除离线同步方案的任务流挂载,
- 若该任务流还未发布上线,您可前往该方案挂载的任务流,在 开发模式 删除该「离线同步方案」任务节点即可。
- 若该任务流已经发布上线,在 开发模式 删除该「离线同步方案」任务节点后,您需要重新发布该任务流,即同步解除了该节点在 生产环境 上的挂载。

