反馈已提交

网络繁忙

实时采集任务功能说明

  • 文档创建者:Roxy
  • 历史版本:21
  • 最近更新:Aaron.Wu 于 2026-04-28
  • 1. 概述

    1.1 版本

    FineDataLink版本
    功能变动
    4.2.4.3-
    4.2.14.1实时采集任务运行逻辑优化
    4.2.17.4采集任务重试逻辑优化

    1.2 应用场景

    当多个实时任务、实时管道任务对同一个数据库的不同表进行实时同步时,会重复解析数据库的日志,导致数据库压力过大,特别是在实时任务场景下,不同表会在不同实时任务中处理,就很容易导致日志被解析多次。

    1.3 功能简介

    实时采集任务支持对数据库日志解析进行管理,存储日志解析产生的变更数据,实时任务/实时管道任务能够消费实时采集任务的数据。

    注:所有实时任务/实时管道任务的 CDC 输入,都默认走实时数据采集任务。

    2. 实时管道/实时任务与采集任务关系

    2.1 架构演进

    2.1.1 历史架构

    在早期架构中,实时管道任务是一个完全独立的、端到端的单元。每个管道任务都内置了完整的 E-T-L(抽取-转换-加载)能力。这意味着,每创建一个实时管道任务,系统就会启动一个独立的进程,该进程会直接连接到源端数据库,执行日志读取(如 Oracle Logminer、MySQL Binlog)或 CDC 表查询操作。

    这种模式的弊端在高并发、多任务场景下尤为突出:

    • 源端压力巨大:如果有 10 个管道任务需要从同一个 Oracle 数据库同步数据,就会建立 10 个独立的 Logminer 连接。这会急剧增加源端数据库的 CPU 和 I/O 负担,甚至影响核心业务的稳定性。

    • 资源浪费严重:每个管道任务都在重复地执行相同的“日志读取”和“数据解析”工作,造成了计算和网络资源的极大浪费。

    • 扩展性受限:每增加一个管道任务,对源端的压力就增加一分,使得整个数据同步系统的横向扩展能力受到源端数据库性能的严重制约。

    2.1.2 全新架构:采集任务与管道任务的分离

    新架构引入了「实时数据共享中心」的概念,其核心思想就是“采传分离”(采集与传输分离)。

    我们将数据读取(采集)的能力从实时管道任务中剥离出来,形成一个独立的、可共享的单元——采集任务。

    类型
    说明
    采集任务

    职责:

     连接到一个特定的数据源(例如一个数据库实例),并持续不断地捕获其数据变更事件(增、删、改),并将这些数据标准化后推送到一个内部的高速消息队列(如 Kafka)中

    特性:

    一个采集任务对应一个数据源。它是一个可被多个下游任务复用的共享资源

    实时管道任务/实时任务

    职责:

    专注于数据的“消费、转换与加载”。它不再直连源端数据库进行日志解析,而是从一个或多个已经配置好的“采集任务”那里订阅并获取数据

    特性: 

     一个或多个实时管道任务可以订阅消息队列(从 Kafka 中)。每个实时管道任务根据自身的配置,只从队列中拉取自己感兴趣的表的数据进行后续处理

    1.3 功能简介



    2. 实时采集任务运行说明

    50.png

    2.1 新建实时采集任务

    2.1.1 新建流程

    1)点击「管理系统>数据连接>实时采集任务」,设置 缓存设置

    2)创建实时管道或者实时任务后,在「管理系统>数据连接>实时采集任务」中自动新增实时采集任务,不需要用户手动新增。如下图所示:

    30.png

    2.1.2 实时采集任务与数据连接关系

    4.2.14.1 之前版本:

    采集任务根据数据连接URL来区分:

    • 如果不同数据连接URL完全一致,只会创建一个实时采集任务。

    • 数据连接URL发生变化,比如加个空格/加个后缀参数之类,就会创建一个新的采集任务。

    1767782192724909.png

    4.2.14.1 及之后版本:

    采集任务以「数据连接的名称」来区分。

    2.1.3 示例说明

    注:重置启动实时管道任务/实时任务,相当于新建任务,参考下方表格说明即可。

    场景
    说明

    已有实时采集任务,新建一个新表的任务:

    • 已经有link1的实时采集任务1在运行,正在收集table1、table2表的CDC数据

    • 新建link1下table3表的任务1,并启动

    任务启动时,在实时采集任务1中自动新增table3的日志解析:
    • 按照table3的时间点解析日志单独收集table3的数据

    已有实时采集任务,新建一个已存在表的任务:
    • 已经有link1的实时采集任务1在运行,正在收集table1、table2、table3表的CDC数据

    • 新建link1下table1的任务1,并启动

    任务1直接使用实时采集任务1收集的日志数据:

    1)当任务1使用「全量+增量」或「启动时间」时,使用实时采集任务1

    2)当任务1使用「自定义时间」时:

    • 当自定义时间早于实时采集任务1的最早时间时,按照table1的时间点解析日志,自动补齐table1缺失数据;当自动补齐时,数据库已经没有相应时间点的日志,则任务1中止报错,实时采集任务1正常运行

    • 当自定义时间晚于实时采集任务1的最早时间时,直接使用实时采集任务1

    2.2 暂停/中止实时管道或实时任务对采集任务的影响

    4.2.14.1 之前版本:

    场景
    说明
    • 已经有link1的实时采集任务1在运行,正在收集table1、table2、table3表的CDC数据

    • 有一个任务1在同步table1、table2、table3的数据,停止任务1/因为非CDC数据的原因导致任务异常中止

    检查任务中使用的所有来源表的CDC数据是否有其他任务在使用:

    • 如果没有其他任务使用,实时采集任务1继续采集 24h,24h 后自动停止

    • 如果有其他任务使用,实时采集任务1继续运行

    • 已经有link1的实时采集任务1在运行,正在收集table1、table2、table3表的CDC数据

    • 有一个任务1在同步table1的数据,停止任务1/因为非CDC数据的原因导致任务异常中止

    检查任务中使用的所有来源表的CDC数据是否有其他任务在使用:

    • 如果没有其他任务使用,实时采集任务1自动暂停收集table1的CDC数据,继续收集table2、table3的CDC数据

    • 如果有其他任务使用,实时采集任务1继续收集table1、table2、table3的CDC数据

    4.2.14.1 及之后版本:

    当实时管道/实时任务暂停时,不再自动触发采集任务中表的暂停(若实时采集任务中存在表未被使用,会进行提示;同时,实时采集任务中支持 手动删除表 )。

    2.3 删除实时管道或实时任务对采集任务的影响

    4.2.14.1 之前版本:

    场景
    说明
    • 已经有link1的实时采集任务1在运行,正在收集table1、table2、table3表的CDC数据

    • 有一个任务1在同步table1、table2、table3的数据,停止任务1后,删除任务1

    删除任务时,检查任务中使用的所有来源表的CDC数据是否有其他任务在使用:
    • 如果没有其他任务使用,自动删除实时采集任务1,并自动删除已经收集的table1、table2、table3的CDC数据

    • 如果有其他任务使用,在实时采集任务1中继续收集table1、table2、table3的CDC数据

    • 已经有link1的实时采集任务1在运行,正在收集table1、table2、table3表的CDC数据

    • 有一个任务1在同步table1的数据,停止任务1后,删除任务1

    删除任务时,检查任务中使用的所有来源表的CDC数据是否有其他任务在使用:
    • 如果没有其他任务使用,在实时采集任务1不再收集table1的CDC数据,并且自动删除table1已经收集的数据,继续收集table2、table3的CDC数据

    • 如果有其他任务使用,在实时采集任务1中继续收集table1、table2、table3的CDC数据

    4.2.14.1 及之后版本:

    当实时管道/实时任务删除时,不再自动触发采集任务中表的删除(若实时采集任务中存在表未被使用,会进行提示;同时,实时采集任务中支持 手动删除表 )。

    2.4 启动实时管道任务或实时任务对采集任务的影响

    场景
    说明
    • 有一个任务1之前同步table1、table2、table3的数据,现在暂停,并且有一个实时采集任务1对tablea1、table2、table3进行数据采集

    • 恢复启动任务1

    恢复任务时,检查任务中使用的所有来源表的CDC数据是否在收集:

    1)如果是在收集,说明有其他任务正在使用这些表的CDC数据,按照当前任务的断点从实时数据共享中心取数进行同步即可

    • 如果断点时间早于在实时数据共享中心最早的数据,则该任务报错中止

    2)如果没有在收集,说明也没有其他任务正在使用这些表的CDC数据,自动恢复启动该实时采集任务收集,继续收集table1、table2、table3的数据,按照当前任务的断点从实时数据共享中心取数进行同步即可

    • 如果断点时间早于在实时数据共享中心最早的数据,则该任务报错中止

    3)任务1恢复启动时,有三种情况:

    • 情况一:实时数据共享中心该表的数据有断点时间的数据,可以正常恢复同步

    • 情况二:断点时间早于实时数据共享中心的最早数据,则自动补数

    • 情况三:断点时间晚于实时数据共享中心中的最晚数据,先恢复实时采集任务收集到相应断点后,再继续进行同步

    51.png

    • 有一个任务1之前同步table1的数据,现在暂停,并且有一个实时采集任务1对tablea1、table2、table3

    • 恢复启动任务1

    恢复任务时,检查任务中使用的所有来源表的CDC数据是否在收集:

    1)如果是在收集,说明有其他任务正在使用这些表的CDC数据,按照当前任务的断点从实时数据共享中心取数进行同步即可

    • 如果断点时间早于在实时数据共享中心最早的数据,则该任务报错中止

    2)如果没有在收集,说明也没有其他任务正在使用这些表的CDC数据,自动恢复启动该实时采集任务收集,继续收集table1的数据,按照当前任务的断点从实时数据共享中心取数进行同步即可

    • 如果断点时间早于在实时数据共享中心最早的数据,则该任务报错中止

    4.2.14.1 及之后版本,逻辑优化:

    1)当采集任务被手动暂停后,因为某一个实时任务重新触发启动时,启动时就恢复所有表的采集。

    2)当实时管道、实时任务恢复启动时:

    • 对应的采集任务不存在或者对应的表不存在时,实时管道报表级错误、实时任务报任务级错误;采集任务中,报错:没有解析${表名}的数据,请重新同步,自动添加该表的解析

    • 对应的表运行错误时,实时管道报表级错误、实时任务报任务级错误;采集任务中,报错:${表名}解析错误,请重新同步,自动重置该表的解析

    • 对应的表最早消息时间晚于所需时间时,实时管道报表级错误,实时任务报任务级错误;采集任务中,${表名}的增量数据已过期,请重新同步

    2.5 实时采集任务运行错误

    场景
    说明

    实时采集任务从运行中→ 运行错误:

    • 有一个任务1在实时同步link1中的table1、table2、table3的数据

    • link1的实时采集任务1,因为各种原因出错,比如与数据库连接中断、日志文件不存在等

    • 实时采集任务1运行错误中止

    • 任务1报错中止,并且打印出实时采集任务1具体的错误原因

    所有依赖实时采集任务1的任务全部运行错误中止,并且打印出实时采集任务1具体的错误原因

     用户按照具体的错误原因,采取针对性的操作即可 

    实时采集任务被异常停止:

    • 有一个任务1在实时同步link1中的A1、table2、table3的数据

    • link1的实时采集任务1,被其他原因停止

    • 所有依赖实时采集任务1的任务全部运行错误中止,并且打印出具体错误原因:实时采集任务(任务一)已停止

    • 用户恢复启动某个任务,会自动恢复启动实时采集任务,其他的任务恢复启动即可

    2.6 实时采集任务中表异常

    1)实时采集任务中表的异常情况都在实时、管道任务中体现。

    当实时采集任务中表运行错误、异常删除时,依赖该实时采集任务的实时任务报错中止,实时管道任务移除异常表的同步,正常的表照常同步,当实时管道任务中所有表都异常时,管道任务才整体报错。

    比如解析相应时间点的日志时,如果相应时间点的日志丢失,则实时采集任务报错中止、依赖该实时采集任务的任务也报错。

    2)当新建的实时任务、实时管道任务的启动时间早于实时数据共享中心的数据最早的数据时,会自动补齐数据。

    2.7 对实时任务、实时管道的影响

    1)实时采集任务将数据库中所有CDC数据都写入到实时数据共享中心,由各个业务决定使用哪一类数据。比如对于 DDL 的数据,数据管道会进行使用,实时任务暂时没有使用 DDL 的功能。

    icon提示:

    实时采集任务暂不支持脏数据容忍,遇到脏数据时,先走重试逻辑,重试 3 次失败后,则实时采集任务报错中止

    1)4.2.17.4 之前版本,如果报错相同,不会重置重试次数,即重试三次后,再遇到相同报错,不会进行重试;若遇到不同报错,会进行第一次重试。

    2)4.2.17.4 及之后版本,只要异常距离上次启动时间超过 30 分钟,重置重试次数。

    2)对实时、管道任务运行逻辑的变动:

    1)重试逻辑:管道、实时任务的重试不控制与 CDC 数据源的重试,只控制管道和实时数据共享中心连接的重试和其输出端的重试。

    2)删除表情况:

    • 实时任务需要基于删除的 ddl 事件,报错中止、打印相应报错日志,并触发相应的结果通知。

    • 实时管道任务会基于删除表的ddl事件,触发通知和打印日志,继续同步其他表。

    3)自定义同步时间:在实时任务、实时管道任务中同步方式选择「自定义时间」时,可以设置「数据库日志最早时间」和「共享中心最早时间」中的最早时间;实时管道任务中需要取「当前任务的所有表各自的最早时间」中的最晚时间。

    4)恢复启动:当实时、管道任务恢复启动时,如果实时数据共享中心中最早的数据晚于断点时间,任务报错中止。

    3. 任务运维

    详情请参见:实时采集任务运维





    附件列表


    主题:

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持