帮你快速理解、总结文档立即下载

腾讯云 MySQL 数据源

最近更新时间:2026-10-13 15:25:03
我的收藏

概述

腾讯云 MySQL 是腾讯云提供的托管关系型数据库服务,基于开源 MySQL 构建,兼容 MySQL 协议与生态。DataBuddy 数据接入支持将腾讯云 MySQL 作为来源端,覆盖离线同步、实时整库同步、分库分表同步与直连分析等场景。本文介绍其连接配置、能力支持范围、前提条件与常见问题。

支持的版本

类型
支持版本
腾讯云 MySQL
5.6 / 5.7 / 8.0

读取能力

能力
支持情况
说明
离线同步(读 / 写)
✓ / -
支持作为离线同步任务的源端读取数据;DataBuddy 数据源仅支持接入读取,不支持写入
实时同步(读 / 写)
✓ / -
支持作为实时同步任务的源端读取整库数据变更;DataBuddy 数据源仅支持接入读取,不支持写入
分库分表同步(读 / 写)
✓ / -
支持以分库分表方式读取多个分表数据;DataBuddy 数据源仅支持接入读取,不支持写入
直连分析(读 / 写)
✓ / -
支持通过直连分析直接查询该数据源;不支持写入
完整数据源能力对照参见 支持的数据源与读取能力。

使用限制

实时同步限制

限制项
说明
Binlog 格式
仅支持 ROW 格式
binlog_row_image
必须设置为 FULL
Binlog 保留时间
建议至少保留 72 小时;全量数据量越大需保留越长
无主键表
无主键表无法保证 exactly-once 语义,可能存在数据重复
XA 事务
不支持 XA ROLLBACK,需手动处理相关表
级联删除
不支持同步级联删除的关联表记录
存储过程、物化视图
不支持读取
SET 数据类型
实时同步不支持
在线 DDL 工具
仅支持 gh-ost

离线同步限制

限制项
说明
分表同步并发
多表同步切分单表时,任务并发数需大于表个数
存储过程
不支持读取

支持的字段类型

完整字段类型请参见 MySQL 官方文档。以下是 DataBuddy 在不同链路上的支持情况(节选 MySQL 8.0.x)。
字段类型
离线读
实时读
TINYINT / TINYINT UNSIGNED
✅
✅
SMALLINT / MEDIUMINT / INT / BIGINT(含 UNSIGNED)
✅
✅
FLOAT / DOUBLE / DECIMAL / NUMERIC
✅
✅
REAL
✅
✅
CHAR / VARCHAR / TEXT 系列
✅
✅
JSON
✅
✅
BINARY / VARBINARY / BLOB 系列
✅
✅
DATE / TIME / DATETIME / TIMESTAMP / YEAR
✅
✅
BIT / BOOL / BOOLEAN / ENUM
✅
✅
SET
✅
❌
GEOMETRY / POINT
✅
✅
LINESTRING / POLYGON / MULTIPOINT 等空间类型
✅
❌
空间类型(GEOMETRY 系列)按二进制读取,不解析几何语义;如需在目标端保留几何信息,建议先在源端转换为字符串类型。

字段类型映射(离线同步)

同步时源端字段类型会转换为 DataBuddy 同步链路中的中间类型。配置任务前请重点核对 备注 列标注的类型,避免精度丢失或语义变化。
源端类型
DataBuddy 内部类型
备注
BIT / BOOL / BOOLEAN
Boolean
BIT(n) 默认按布尔值读取;开启 useBitPrecision 且精度大于 1 时按 Bytes 读取
TINYINT(1)
Boolean
MySQL JDBC 驱动默认将 TINYINT(1) 按 BIT 处理(tinyInt1isBit=true),读取为 true / false;如需按数值读取,请在 JDBC URL 中追加 tinyInt1isBit=false
TINYINT / SMALLINT / MEDIUMINT / INT / BIGINT(含 UNSIGNED)
Long
按字符串读取后转为 Long;BIGINT UNSIGNED 超过 Long 取值上限时会读取失败
DECIMAL / NUMERIC
Double
转为双精度浮点数,超出精度范围会丢失小数精度;对精度敏感的场景建议在目标端改用 Decimal 或字符串类型
FLOAT / REAL / DOUBLE
Double
遵循 IEEE 754 浮点精度
CHAR / VARCHAR / TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT
String
-
ENUM / SET
String
按枚举值文本读取
JSON
String
按文本读取,不做结构化解析
DATE
Date
精确到日
DATETIME / TIMESTAMP
Date
-
TIME
Date
超出 JDBC 时间范围的值(如 838:59:59)按 String 读取
YEAR
Long
按年份数值读取
BINARY / VARBINARY / TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB
Bytes
不做内容解析
GEOMETRY / POINT / LINESTRING / POLYGON 等空间类型
Bytes 或 String
不解析几何语义,建议先在源端转换为字符串
上表未列出的其他类型
-
任务报错并提示不支持的字段类型

字段类型映射(实时同步)

实时同步(整库多表 / 分库分表)由 CDC 连接器解析源端类型并写入 TCLake。下表为自动建表时目标表实际使用的字段类型,配置任务前请重点核对「备注」列标注的类型。
源端类型
TCLake 目标类型
备注
TINYINT / TINYINT UNSIGNED / SMALLINT(含 UNSIGNED)/ MEDIUMINT(含 UNSIGNED)/ INT / INTEGER
INTEGER
ZEROFILL 与对应 UNSIGNED 版本映射相同
TINYINT(1)
BOOLEAN 或 INTEGER
取决于参数 oceanus.tinyint1-is-bit:为 true 时映射 BOOLEAN,否则映射 INTEGER
INT UNSIGNED / INTEGER UNSIGNED / BIGINT
LONG

BIGINT UNSIGNED / SERIAL
DECIMAL(20, 0)
取值超出 BIGINT 上限,改用十进制承载
DECIMAL / NUMERIC / FIXED(精度 ≤ 38)
DECIMAL(P, S)
精度与标度保留
FLOAT(无精度)
FLOAT

FLOAT(有精度)/ FLOAT UNSIGNED / DOUBLE / DOUBLE PRECISION / REAL(含 UNSIGNED、ZEROFILL)
DOUBLE
带精度的 FLOAT 落 DOUBLE,与无精度不同
BIT(n)
BINARY
按位串读取,如 0101100011
DATE
DATE

DATETIME / DATETIME(n)
TIMESTAMP
不带时区
TIMESTAMP / TIMESTAMP(n)
TIMESTAMPTZ
带时区语义,与 DATETIME 落点不同
TIME
STRING
不落时间类型
YEAR
INTEGER

CHAR / VARCHAR / TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT
STRING

ENUM / JSON
STRING
按文本读取,不解析结构
BINARY(n)
BINARY

VARBINARY(n) / TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB
STRING
⚠️ 二进制按字符串承载,与 BINARY(n) 落点不同
GEOMETRY / POINT
STRING
不解析几何语义提示:
说明:
离线与实时两条链路的类型体系不同,同一源端类型可能落到不同目标类型。例如 BIGINT UNSIGNED:离线按 Long 读取(超出上限会失败),实时落 DECIMAL(20, 0)。请按任务类型核对对应表格。
上表目标类型即 TCLake 自动建表时使用的字段类型;如需调整,可在任务的字段映射中修改,参见 实时整库多表任务配置。
上表仅列出已确认的映射,未列出的类型请以实际建表结果为准。

实时同步支持的 DML / DDL

DML

操作
是否支持
INSERT / DELETE / UPDATE
✅

DDL

操作
是否支持
支持的语法示例
新增列(ADD COLUMN)
✅
ALTER TABLE t ADD col TYPE [FIRST | AFTER col]
删除列(DROP COLUMN)
✅
ALTER TABLE t DROP [COLUMN] col
重命名列(RENAME / CHANGE COLUMN)
✅
ALTER TABLE t CHANGE old new TYPE
修改列类型(MODIFY COLUMN)
✅
ALTER TABLE t MODIFY col TYPE
新增表(CREATE TABLE)
✅
不支持 CHECK、Temporary Table
重命名表 / 删除表 / 清空表
❌

DDL 变更响应仅在增量阶段 生效;删除表、重命名表 这类高危操作目标端通常不支持自动响应。
详细的 DDL 变更响应策略(自动变更、忽略、日志告警)参见 实时整库多表任务配置。

前提条件

1. 配置账号权限

离线同步:
CREATE USER 'wedata_user'@'%' IDENTIFIED BY 'your_password';
GRANT SELECT ON your_database.* TO 'wedata_user'@'%';
FLUSH PRIVILEGES;
实时同步:
CREATE USER 'wedata_cdc_user'@'%' IDENTIFIED BY 'your_password';
GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT
ON *.* TO 'wedata_cdc_user'@'%';
FLUSH PRIVILEGES;
建议为同步任务创建专用账号,避免与业务账号混用。

2. 开启 Binlog(仅实时同步)

腾讯云 MySQL 默认开启 Binlog,无需额外配置。可通过以下 SQL 校验:
SHOW VARIABLES LIKE 'log_bin'; -- ON 表示已开启
SHOW VARIABLES LIKE 'binlog_format'; -- 应为 ROW

3. 设置会话超时(推荐)

针对大库全量同步,建议放开会话超时:
SET GLOBAL interactive_timeout = 28800;
SET GLOBAL wait_timeout = 28800;

创建数据源

操作步骤

1. 登录 DataBuddy 控制台。
2. 在顶部切换到目标地域和 Workspace。
3. 进入 数据接入 > 任务管理 > 数据源管理(或 平台管理 > 数据源管理)。
4. 点击 添加数据源,选择 腾讯云 MySQL。
5. 填写连接配置与认证信息,详见 参数说明。
6. 点击 测试连接(参见 数据源连通性测试)。
7. 测试通过后点击 保存 或 保存 & 创建任务。

参数说明

参数
说明
是否必填
默认值
数据源名称
数据源在工作空间内的唯一标识
是
-
连接方式
腾讯云实例 / 串连接(JDBC URL)
是
腾讯云实例
地域、实例
腾讯云实例方式下选择目标实例
腾讯云实例必填
-
JDBC URL
串连接方式下的连接串,格式 jdbc:mysql://host:port/database
串连接必填
-
用户名
数据库连接账号
是
-
密码
数据库连接密码(支持 SSM 凭证托管)
是
-
数据源版本
5.7 / 8.0
是
-
JDBC URL 示例:
jdbc:mysql://10.0.0.1:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai

在数据接入任务中使用

实时整库、分库分表

配置项
说明
来源表范围
指定表(仅同步选中的表,新增表需重启)/ 正则匹配(指定库名 + 表名正则,符合规则的新增表自动接入)
读取模式
全量 + 增量 / 仅增量
订阅类型
可勾选 INSERT / UPDATE / DELETE,至少保留一种
gh-ost 同步
是否同步 gh-ost 在线 DDL 产生的临时表

离线单表

配置项
说明
数据来源
已配置的腾讯云 MySQL 数据源
库 / 表
支持指定与正则匹配;表名支持范围如 table_[0-99]
切割键
仅支持整型字段;建议选择主键或带索引的列;避免 COLLATE 列
筛选条件
标准 WHERE 语法,支持时间参数(如 gmt_create > $bizdate)
详细任务配置参见 表到表同步 与 实时整库多表任务配置。

最佳实践

实践
建议
账号权限最小化
为同步任务创建专用账号,仅授必要权限,不使用 root
Binlog 保留时间
至少 72 小时;大表全量同步建议更长
切割键选择
主键或索引列;避免 COLLATE 列以防数据重复
网络打通
优先使用内网连接,提升传输性能

常见问题

Q:报错 A slave with the same server_uuid/server_id as this slave has connected to the master?

A:多个同步任务使用了相同的 server-id。系统已优化为随机生成 server-id,如旧任务在高级参数中显式配置了 server-id,请删除该参数。

Q:报错 Cannot replicate because the master purged required binary logs?

A:MySQL 上的 Binlog 文件已被清理。请增加 Binlog 保留时间,或优化作业并发以加速消费。

Q:使用 COLLATE 列作为切割键,部分数据重复?

A:COLLATE 影响排序、筛选与分组结果。设置切割键时请选择非 COLLATE 列。

Q:是否支持 gh-ost 在线 DDL?

A:支持。开启 gh-ost 同步开关后,会监控并同步 *_gho 临时表的变更。腾讯云 MySQL 需在 gh-ost 命令中追加 --aliyun-rds 参数。

相关文档