有奖捉虫:行业应用 & 管理与支持文档专题 HOT
数据集成提供了 MySQL 的读取和写入能力,本文为您介绍使用 MySQL 进行实时数据同步的前置环境配置以及当前能力支持情况。

支持版本

目前数据集成已支持 MySQL 单表及整库级实时读取,使用实时读取能力需遵循以下版本限制:
类型
版本
Driver
MySQL
5.6,5.7,8.0.x
JDBC Driver:8.0.21
RDS MySQL
5.6,5.7, 8.0.x
PolarDB MySQL
5.6,5.7,8.0.x
Aurora MySQL
5.6,5.7,8.0.x
MariaDB
10.x
PolarDB X
2.0.1

使用限制

需要开启 Binlog 日志,仅支持同步 MySQL 服务器 Binlog 配置格式为 ROW。
无主键的表由于无法保证 exactly once 可能会有数据重复,因此实时同步任务最好保证有主键。
不支持 XA ROLLBACK,实时同步的任务不会针对 XA PREPARE 的数据进行回滚的操作,若要处理 XA ROLLBACK 场景,需要手动将 XA ROLLBACK 的表从实时同步任务中移除,再添加表后重新进行同步。

数据库环境准备

确认 MySQL 版本

数据集成对 MySQL 版本有要求,查看当前待同步的 MySQL 是否符合版本要求。您可以在 MySQL 数据库通过如下语句查看当前 MySQL 数据库版本。
select version();

设置 MySQL 服务器权限

您必须定义一个对 Debezium MySQL 连接器监控的所有数据库具有适当权限的 MySQL 用户。
1. 创建 MySQL 用户(可选):
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
2. 向用户授予所需的权限:
在实时数据同步的情况下,该账号必须拥有数据库的 SELECT、REPLICATION SLAVE 和 REPLICATION CLIENT 权限。执行命令可以参考下面:
mysql> GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user' IDENTIFIED BY 'password';
注意:
启用?scan.incremental.snapshot.enabled?时不再需要 RELOAD 权限(默认启用)。
3. 刷新用户的权限:
mysql>FLUSH PRIVILEGES;
查看更多关于 权限说明

开启 MySQL Binlog

1. 检查 Binlog 是否开启
show variables like "log_bin"
返回结果为 ON 时,表示已经开启 Binlog, 如果为备库,使用如下语句:
show variables like "log_slave_updates";
如果返回为 ON 时,表示已经开启 Binlog,如果已经开启 Binlog,可跳过下面流程。
2. 开启 Binlog
如果确认没有开启 Binlog,则需要进行以下操作:
对于腾讯云实例 MySQL / TDSQL-C MySQL,默认开启了 Binlog。
对于开源 MySQL,参考官方文档开启 Binlog。
3. 修改 Binlog 格式为 Row
实时同步仅支持同步 MySQL 服务器 Binlog 配置格式为 ROW,使用如下语句查询 Binlog 的使用格式。
show variables like "binlog_format";
如果返回非 ROW 请修改 Binlog Format。
对于开源 MySQL,参考官方文档:
对于腾讯云实例 MySQL / TDSQL-C MySQL :
登录腾讯云 MySQL / TDSQL-C MySQL 控制台,找到要开启 Binlog 的实例,点击进入该实例的详细信息页面。
在上面选项卡中选择数据库管理,找到参数设置标签页
参数设置选项卡中,找到 binlog_format 参数,将其设置为 “ROW”。
?
?
?
4. binlog_row_image
实时同步仅支持同步 MySQL 服务器 binlog_row_image 配置格式为 FULL or full。
使用如下语句查询 binlog_row_image 的使用格式。
show variables like "binlog_row_image";
如果返回非 FULL/full 请修改 binlog_row_image:
对于开源 mysql,参考官方文档:
对于腾讯云实例 MySQL / TDSQL-C MySQL :
登录腾讯云 MySQL / TDSQL-C MySQL 控制台,找到要开启 Binlog 的实例,点击进入该实例的详细信息页面。
在上面选项卡中选择数据库管理,找到参数设置标签页
参数设置选项卡中,找到 binlog_row_image 参数,将其设置为“FULL”。
?
?
?

开启 GTIDs(可选)

GTID(Global Transaction Identifier, 全局事务标识),用于在 binlog 中唯一标识一个事务,使用 GTID 可以避免事务重复执行导致数据混乱或者主从不一致。
开启流程
1. 检查是否开启了 GTID。
show global variables like '%GTID%';
返回结果类似如下,证明已经开启 GTID。
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| enforce_gtid_consistency | ON |
| gtid_mode | ON |
+--------------------------+-------+
2. 开启 GTID
对于腾讯云实例 MySQL / TDSQL-C MySQL,默认为开启,不支持关闭。

数据源配置

进入配置数据源界面,MySQL 数据源支持云实例和连接串两种连接方式。
单击 项目管理 > 数据源管理 > 新建数据源 > 选择 MySQL 数据源。
通过云实例创建数据源。
?
?
?
参数
说明
连接类型
选择云实例或连接串的数据源连接形式
所属项目
当前数据源创建时的归属项目
数据源名称
新建的数据源的名称,由用户自定义且不可为空。命名以字母开头,可包含字母、数字、下划线。长度在20字符以内
显示名
数据源在产品中使用时的显示名称,不填默认显示数据源名称
描述
选填,对本数据源的描述
数据源权限
项目共享表示当前数据源项目所有成员均可使用 ,仅个人和管理员表示改数据源仅创建人和项目管理员可用
获取实例
选择账户下云数据库实例所在的地域、实例名称及 ID 信息
数据库名
需要连接的数据库名称
用户名
连接数据库的用户名称
密码
连接数据库的密码
数据连通性
测试是否能够连通所配置的数据库
说明:
若连通性测试不通过,数据源仍可保存。连通性测试未通过而保存但数据源不可使用
如果连通性测试不通过,可能是因为 WeData 被数据库所在网络防火墙禁止,请参见 添加腾讯云 MySQL 数据库安全组?
通过连接串创建数据源。
?
?
?
参数
说明
数据源名称
新建的数据源的名称,由用户自定义且不可为空。命名以字母开头,可包含字母、数字、下划线。长度在20字符以内。
描述
选填,对本数据源的描述。
数据源权限
项目共享表示当前数据源项目所有成员均可使用 ,仅个人和管理员表示改数据源仅创建人和项目管理员可用。
部署方式
支持 CDB、自建实例、公网实例三种部署方式。
区域与网络
数据源所在地域与 VPCid。
JDBC URL
用于连接 MySQL 数据库的连接串信息。
数据库名称
需要连接的数据库名称。
用户名
连接数据库的用户名称。
密码
连接数据库的密码。
数据连通性
测试是否能够连通所配置的数据库。
说明:
若连通性测试不通过,数据源仍可保存。连通性测试未通过而保存但数据源不可使用。
如果连通性测试不通过,可能是因为 WeData 被数据库所在网络防火墙禁止,请参见 添加腾讯云 MySQL 数据库安全组

支持数据类型

其他参考文档

?


http://www.vxiaotou.com