开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flinkcdc 2.4.2 抽取Oracle RAC, 多环境下的数据,后续怎么办?

flinkcdc 2.4.2 抽取Oracle RAC, 多环境下的数据,但是采用的补充日志是主键补充日志,昨天9点54分时候,有一条INSERT 语句在归档日志里面有数据,但是CDC程序没有采集到(那段时间程序没有报错等情况),并发度设置的是6,这儿有影响吗 还是必须设置为1?

展开
收起
小小鹿鹿鹿 2024-05-01 08:56:14 17 0
1 条回答
写回答
取消 提交回答
  • Flink CDC 2.4.2在抽取Oracle RAC环境下的数据时,如果遇到特定时间点的数据没有被正确捕获,而该时间段内程序未报错,这种情况可能涉及多个因素。并发度设置为6并不直接意味着会有问题,但确实可能间接影响数据捕获的逻辑,尤其是在特定的场景下。以下是可能的原因及排查方向:

    1. 并发度配置:并发度设置为6意味着有6个并行的source任务在读取Oracle的binlog。理论上,只要每个任务负责读取不同的binlog段或者通过恰当的分区逻辑分配任务,这不应导致数据丢失。但在某些情况下,如果并行任务之间的协调出现问题,或者任务分配逻辑未能均匀且正确地处理binlog事件,可能会出现数据遗漏。一般而言,对于Oracle RAC环境,正确的并行度设置应该基于RAC实例的数量和数据分布来决定,不一定需要设置为1。
    2. 主键补充日志:你提到使用的是主键补充日志。Flink CDC早期版本在处理无主键表时可能存在数据丢失问题,但如果你的数据表都有主键,并且Flink CDC配置正确,理论上不应因为主键补充日志而直接导致数据丢失。不过,如果某些表的主键设计不合理或存在特殊情况(如复合主键、非唯一主键等),可能会影响数据解析的准确性。
    3. Oracle LogMiner配置:确保Oracle的LogMiner参数配置正确,尤其是SUPPLEMENTAL_LOG_DATA_PKSUPPLEMENTAL_LOG_DATA_UI设置为YES,以确保所有必要的变更信息都被记录下来。同时,要检查归档日志是否完整,且Flink CDC能够访问到所需时间段的所有日志。
    4. 时间戳与偏移量处理:检查Flink CDC任务的checkpoint或保存点机制,确保在恢复时能够准确地从上次中断的位置继续消费binlog,而不是从头开始或跳过某些事件。
    5. 网络与资源问题:虽然你提到程序没有报错,但仍需检查那段时间的网络状况、资源使用情况(CPU、内存、磁盘I/O等),以及Oracle RAC本身的稳定性,因为这些问题也可能间接导致数据处理的中断。
    6. Flink CDC配置:仔细检查Flink CDC的配置,确保没有配置错误或遗漏,比如scan.startup.modedatabase.history.skip.unparseable.ddl等参数,这些都可能影响数据的捕获。

    为了解决这个问题,建议先从日志入手,详细检查那段时间Flink CDC任务的日志,寻找是否有任何潜在的警告或信息可能指向问题所在。同时,对比Flink CDC的配置与Oracle的LogMiner配置,确保两者协同工作无误。如果问题仍然无法定位,考虑降低并发度至1作为测试,以排除并发处理的潜在影响,但这应该是最后的手段,因为合理的并行处理通常能提升整体性能。

    2024-05-02 19:28:55
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
Oracle云上最佳实践 立即下载

相关镜像