Flink-cdc-tidb,读取数据向hologres写入数据时,运行一段时间后就不同步数据了吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您描述的问题,Flink CDC在从TiDB读取数据并向Hologres写入数据时,运行一段时间后停止同步数据。以下是可能的原因分析及解决方案:
Flink CDC在全量读取完成后切换到增量读取时,需要等待一个Checkpoint以确保全量数据已正确写入下游。如果Checkpoint间隔时间设置过长(例如20分钟),可能会导致增量数据同步延迟或停止。
TiDB的Binlog日志是Flink CDC读取增量数据的关键。如果TiDB的Binlog日志未正确生成或丢失,可能导致Flink CDC无法读取增量数据。
如果写入Hologres时存在数据倾斜或后端压力过大,可能导致写入性能下降,进而影响Flink作业的正常运行。
SELECT hg_shard_id, count(1) FROM t1 GROUP BY hg_shard_id ORDER BY hg_shard_id;
如果发现数据倾斜,可以通过修改Distribution Key
使数据分布更加均衡。
target-shards.enabled
参数,将写入锁粒度降至Shard级别,减少表锁的发生。如果Flink作业的Sink节点出现反压,可能导致数据同步中断。
如果TiDB中新增了表,而Flink CDC未同步这些表的数据,可能是因为未启用相关配置。
scan.newly-added-table.enabled: true
并确保tables
配置匹配新增表的正则表达式。
针对Flink CDC从TiDB读取数据并向Hologres写入数据时运行一段时间后停止同步的问题,建议按照以下步骤逐一排查: 1. 检查Checkpoint配置,确保增量数据能够及时同步。 2. 确认TiDB Binlog日志的完整性和可用性。 3. 优化Hologres写入性能,避免数据倾斜和后端压力。 4. 排查Flink作业的反压情况,必要时拆分Sink节点。 5. 启用新增表同步配置,确保新增表的数据能够被正确同步。
如果以上方法仍无法解决问题,请提供Flink作业日志和相关配置信息,以便进一步分析和定位问题。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。