培训机构做网站宣传,小程序代理商怎么赚钱,西安网站建设网络公司熊掌号,上海福步外贸论坛背景#xff1a;
最近在做实时数据的抽取工作#xff0c;利用FLinkCDC实时抽取目标库Oracle的数据到Doris中#xff0c;但是在抽取的过程中#xff0c;会导致目标库的生产库数据库非常卡顿#xff0c;为了避免对生产环境的数据库造成影响#xff0c;对生产环境的数据库利…背景
最近在做实时数据的抽取工作利用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卡顿问题