介绍
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 语义。
类型映射
|
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。
本页内容是否解决了您的问题?