在 Flink CDC 中,如果您未指定任何表过滤条件,那么默认情况下会扫描数据库中的所有表,并尝试对其进行增量数据同步。这是因为 Flink CDC 的设计初衷是支持全量和增量数据同步,以便满足不同的业务需求。
如果您只需要同步部分表的数据,可以通过 Flink CDC 的配置来指定需要同步的表,从而避免扫描所有表。具体来说,您可以在 Flink CDC 的配置文件中使用 table-whitelist 或 table-blacklist 参数来指定需要同步或排除的表。例如:
json
Copy
{
"name": "my-cdc-job",
"connector": {
"type": "cdc",
"property-version": "1",
"scan.startup.mode": "latest-offset",
"database": "mydatabase",
"table-whitelist": "mytable1,mytable2",
"username": "myuser",
"password": "mypassword",
"hostname": "localhost",
"port": "3306"
},
"format": {
"type": "json"
},
"sink": {
"type": "print"
}
}
在上述配置中,table-whitelist 参数指定了需要同步的表名列表,username 和 password 参数指定了连接数据库所需的用户名和密码,hostname 和 port 参数指定了数据库的主机名和端口号。
如果您的 Flink CDC 配置文件中未指定 table-whitelist 或 table-blacklist 参
你用权限低一点的用户试试,你用户能查到多少数据库,执行的时候就会扫多少,最好是只能看到你要处理的那个库。然后databaseList和tableList都配置成你需要的,其他的都不要。此回答整理至钉群“Flink CDC 社区”
在Flink CDC中,需要定义一个触发器来捕获数据变更事件,该触发器通常称为“Snaphot Change Trigger”。
当一个表被添加到Flink CDC中时,Flink会自动创建一个名为“fb_search”的临时表来存储该表的初始状态。在此之后,Flink会通过读取该表的初始状态并将其与后续变更事件进行比较来实现数据同步。因此,当您看到所有数据库都在add时,可能是因为您正在扫描所有表来添加它们到Flink CDC中。
总之,Flink CDC需要先创建一个临时表来存储初始状态,然后通过比较初始状态和变更事件来实现数据同步。在此过程中,所有表都需要被扫描并添加到Flink CDC中。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。