有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

介绍

MySQL 数据源表支持对 MySQL 数据库的全量和增量读取,并保证 Exactly Once 语义。MySQL 数据源表底层使用 Debezium 来做 CDC(Change Data Capture)。其工作机制如下:
1. 获取一个全局读锁,从而阻塞住其他数据库客户端的写操作。
2. 开启一个可重复读语义的事务,来保证后续在同一个事务内读操作都是在一个一致性快照中完成的。
3. 读取 Binlog 的当前位置。
4. 读取连接器中配置的数据库和表的模式(schema)信息。
5. 释放全局读锁,允许其他的数据库客户端对数据库进行写操作。
6. 扫描全表,当全表数据读取完后,会从第3步中得到的 Binlog 位置获取增量的变更记录。
Flink 作业运行期间会周期性执行快照,记录下 Binlog 位置,当作业崩溃恢复时,便会从之前记录的 Binlog 点继续处理,从而保证 Exactly Once 语义。

类型映射

MySQL 字段类型
Flink 字段类型
TINYINT
TINYINT
SMALLINT
SMALLINT
TINYINT UNSIGNED
INT
INT
MEDIUMINT
SMALLINT UNSIGNED
BIGINT
BIGINT
INT UNSIGNED
BIGINT UNSIGNED
DECIMAL(20, 0)
FLOAT
FLOAT
DOUBLE
DOUBLE
DOUBLE PRECISION
NUMERIC(p, s)
DECIMAL(p, s)
DECIMAL(p, s)
BOOLEAN
BOOLEAN
TINYINT(1)
DATE
DATE
TIME [(p)]
TIME [(p)] [WITHOUT TIMEZONE]
DATETIME [(p)]
TIMESTAMP [(p)] [WITHOUT TIMEZONE]
TIMESTAMP [(p)]
TIMESTAMP [(p)]
TIMESTAMP [(p)] WITH LOCAL TIME ZONE
CHAR(n)
STRING
VARCHAR(n)
TEXT
BINARY
BYTES
VARBINARY
BLOB

注意事项

用户权限

用于同步的源数据库的用户必须拥有以下权限 SHOW DATABASES、REPLICATION SLAVE、REPLICATION CLIENT、SELECT 和 RELOAD。

数据库参数设置

binlog_row_image 参数的参数运行值应当设置为 FULL。

WITH 参数

MySQL 数据源表基于数据库 MySQL CDC 开发,两者具有相同的 WITH 参数,具体参数配置方式可参见 数据库 MySQL CDC