Flink CDC2.2.1 支持通过source 指定 binlog或者timestamp的方式做增量同步吗?
Flink CDC 支持通过 Source 连接器从诸如 MySQL,MariaDB, RDS MySQL,Aurora MySQL,PolarDB MySQL,PostgreSQL,Oracle,MongoDB,SqlServer,OceanBase,PolarDB-X,TiDB等数据库采集数据。对于增量同步,Flink可以消费binlog数据来实现。在Flink中,可以通过在Flink SQL中使用 CREATE TABLE
语句来定义一个 Flink CDC 表,并使用 STARTUP
选项来指定 binlog 的起始位置或起始时间点。例如:
CREATE TABLE my_source (
id INT,
name STRING,
ts TIMESTAMP(3),
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'mysql-cdc',
'hostname' = 'localhost',
'port' = '3306',
'username' = 'root',
'password' = 'password',
'database-name' = 'test_db',
'table-name' = 'test_table',
'scan.startup.mode' = 'latest-offset' -- or 'specific-offset' to specify the binlog position to start reading data from
);
这样,Flink CDC 就可以通过 Source 连接器以 binlog 或者时间戳的方式做增量同步了。
Flink CDC 2.2.1 版本不支持通过 source 指定 binlog 或者 timestamp 的方式来做增量同步。在 Flink CDC 2.2.1 版本中,增量同步是基于数据库的 binlog 日志来实现的,而不是通过指定具体的 binlog 文件或者时间戳。
然而,Flink CDC 2.2.1 版本支持在执行 checkpoint 时将位点存储到 state,以支持 exacty-once 语义。这意味着,如果你想要从特定的位点开始同步数据,你可以通过从 savepoint 恢复的方式来实现。
需要注意的是,这种方法并不能精确地控制同步的起始位点,因为它依赖于 Flink 任务的 checkpoint 机制。此外,由于 Flink CDC 依赖于 Debezium engine 来捕获数据更改,因此在恢复位点的同时,还需要恢复 HistoryDatabase,这可能会增加恢复过程的复杂性。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。