FLinkCDC引起的生产事故(二)

背景:

最近在做实时数据的抽取工作,利用FLinkCDC实时抽取目标库Oracle的数据到Doris中,但是在抽取的过程中,会导致目标库的生产库数据库非常卡顿,为了避免对生产环境的数据库造成影响,对生产环境的数据库利用OGG技术做了备库,从备库中利用FlinkCDC抽取数据到Doris,但是在抽取的过程中出现了同样的错误,导致备库数据库卡顿,数据异常,数据库宕机,至于这些原因,怀疑我们当时的方案出了严重的问题

第一次发方案:

 直接利用FLINKCDC抽取Oralce的binglog日志,这种方案就是在Dinky中启动的每一个任务都会去Oracle的源端数据库中读取binglog日志,从而有大量的进程和线程出现,导致cpu和内存无限上升(刚开始cpu是8核,后面升级到了32核,问题还是出现)

架构图如下:

改进后的方案:

Oracle CDC数据表主要用于获取Oracle 数据,并可以实时同步数据表中的修改,经常用在复杂的计算场景。例如,作为一张维表和其他数据表做Join操作。在使用中,同一张MySQL表可能被多个作业依赖,当多个任务使用同一张MySQL表做处理时,MySQL数据库会启动多个连接,对MySQL服务器和网络造成很大的压力。

为了缓解对上游Oracle 数据库的压力,Flink实时计算已提供Oracle 整库同步到Kafka的能力,通过引入Kafka作为中间层,利用OGG将数据推送到Kafka,然后FLink从Kafka获取数据,这样减少了源端数据库的压力

架构图如下:

基本操作如下:

CREATE TEMPORARY TABLE tempOrder (
  `key_order_id` BIGINT NOT NULL,
  `value_product` STRING,
  PRIMARY KEY (key_order_id) NOT ENFORCED
) WITH (
  'connector' = 'upsert-kafka',
  'topic' = 'order',
  'properties.bootstrap.servers' = 'xxxx',
  'key.format' = 'json',
  'key.fields-prefix' = 'key_',
  'value.format' = 'json',
  'value.fields-prefix' = 'value_',
  'value.fields-include' = 'EXCEPT_KEY',
  'value.json.infer-schema.flatten-nested-columns.enable' = 'false',
  'value.json.infer-schema.primitive-as-string' = 'false'
);

 

利用这种方案从而减少了源端数据库的压力

常见问题:1. 源端库的链接数沾满

                  2.FlinkCDC 引起的Flink服务器cpu卡顿问题

相关推荐

  1. 垃圾flinkcdc

    2024-07-11 09:52:02       35 阅读
  2. <span style='color:red;'>flinkCDC</span>

    flinkCDC

    2024-07-11 09:52:02      33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 09:52:02       101 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 09:52:02       108 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 09:52:02       91 阅读
  4. Python语言-面向对象

    2024-07-11 09:52:02       98 阅读

热门阅读

  1. 开源项目有哪些机遇与挑战?

    2024-07-11 09:52:02       21 阅读
  2. 多器官功能障碍综合征

    2024-07-11 09:52:02       25 阅读
  3. ABAP中预制会计凭证的BAPI使用方法

    2024-07-11 09:52:02       26 阅读
  4. 力扣题解( 最长湍流子数组)

    2024-07-11 09:52:02       26 阅读
  5. ORACLE 数据库ADG切换

    2024-07-11 09:52:02       24 阅读
  6. Memcached介绍和详解

    2024-07-11 09:52:02       28 阅读
  7. js实现打印

    2024-07-11 09:52:02       28 阅读
  8. dlib简介

    2024-07-11 09:52:02       30 阅读
  9. PDF文件在线处理工具(侧重数理及论文)

    2024-07-11 09:52:02       21 阅读
  10. 20.js获取页面卷去的距离以及滚到到指定位置

    2024-07-11 09:52:02       28 阅读
  11. 【人脸识别、Python实现】PyQt5人脸识别管理系统

    2024-07-11 09:52:02       25 阅读
  12. Flutter EasyRefresh:介绍与使用指南

    2024-07-11 09:52:02       27 阅读
  13. Perl编译器架构:前端与后端的精细分工

    2024-07-11 09:52:02       26 阅读