1. 概述
1.1 版本
| FineDataLink 版本 | 功能变动 |
|---|---|
| 4.2.16.4 | MySQL 读取方式支持 GTID |
1.2 功能简介
实时管道、实时任务中,MySQL 数据库作为源端,支持 GTID 的读取方式。如下图所示:

本文讲述 MySQL 数据库如何开启 GTID。
2. 操作步骤
2.1 确认当前使用的数据库版本
推荐使用 MySQL 5.7.6 及以上版本。
使用下面语句检查数据库是否开启 GTID:
SHOW VARIABLES LIKE '%gtid%';
如果 gtid_mode 值为 OFF,代表未开启:

2.2 开启 GTID
GTID 相关的参数,主要为 gtid_mode 和 enforce_gtid_consistency 这两个。
gtid_mode 参数说明:
gtid_mode 参数控制是否启用基于 GTID 的日志记录以及日志可以包含的事务类型,有以下四个有效值:
OFF:仅允许匿名事务;不生成也不接受 GTID 事务。
OFF_PERMISSIVE:新产生的事务都是匿名事务,但也允许有 GTID 事务被复制同步。
ON_PERMISSIVE:新产生的都是 GTID 事务,但也允许有匿名事务被复制同步。
ON:仅允许 GTID 事务;拒绝匿名事务。
该参数无法跳跃修改,一次修改只能改成原相邻值。例如,如果 gtid_mode 当前设置为 OFF_PERMISSIVE,则可以更改为 OFF 或 ON_PERMISSIVE,但不能更改为 ON。
enforce_gtid_consistency 参数说明:
enforce_gtid_consistency 参数决定是否允许事务违反 GTID 一致性。此参数默认为 OFF ,在启用基于 GTID 的复制之前,必须将此变量设置为 ON。该参数有以下三个有效值:
OFF:允许所有事务违反 GTID 一致性。
ON:不允许任何事务违反 GTID 一致性。
WARN:表示允许事务违反 GTID 一致性,但会将警告信息记录到 ERROR LOG。
开启步骤:
使用 root 账号按顺序依次执行下面 5 个 SQL 语句(不能一起执行):
SHOW STATUS LIKE 'Ongoing_anonymous_transaction_count'; 执行后,值为 0 时再执行下一步。
SET GLOBAL enforce_gtid_consistency = ON;
SET GLOBAL gtid_mode = OFF_PERMISSIVE;
SET GLOBAL gtid_mode = ON_PERMISSIVE;
SHOW STATUS LIKE 'Ongoing_anonymous_transaction_count';
SET GLOBAL gtid_mode = ON;
2.3 后续步骤
在 FineDataLink 工程中配置数据连接(数据连接用户可为普通账号),然后创建实时管道任务或实时任务即可。

