反馈已提交

网络繁忙

实时管道的表配置数据检测任务说明

  • 文档创建者:Wendy123456
  • 历史版本:5
  • 最近更新:Wendy123456 于 2026-03-03
  • 1. 概述

    实时管道任务运行后,用户希望检查来源表和目标表的一致性。

    数据检测任务 提供两种规则检测两表的一致性:

    规则
    说明
    两表字段统计值比对(字段级)

    1)原理:对源表和目标表进行聚合计算,比较计算结果

    2)可选统计方式:

    • 字段值计数 (Count):统计总行数(最常用,不限类型)

    • 字段唯一值计数 (Distinct Count):统计去重后的行数

    • 字段值求和 (Sum):统计某个数值字段的总和(仅限数值类型)

    3)特点:速度快,资源消耗低,但无法定位具体哪一行出错

    两表数据明细值比对(表级)1)原理:基于主键逐行对比两边的具体数据

    2)配置要素:

    主键映射(必填):用于确定数据的唯一性。

    • 若主键不同:判定为“缺行”或“多行”

    • 若主键相同:进一步判断“比对字段”的值是否一致

    比对字段(选填):以左表为基准。若不选,仅比对主键是否存在;若选择,则会标记出字段内容不一致的行。

    3)特点:结果精确,可直接用于修复,但资源消耗较高

    本文为您讲解如何根据实际情况配置检测规则。

    2. 操作步骤

    2.1 面对海量表,如何制定检测策略

    面对 3000+ 张表的同步任务,如果试图对每张表都配置高频的一致性检测,不仅配置工作量巨大,更会导致源端数据库 IO 耗尽,甚至影响核心业务的稳定性。

    高效的检测策略应该是「分级治理哨兵监控

    2.1.1 分级治理

    请将您的 3000 张表按照业务重要性放入下面的金字塔中,不同层级采用不同的策略:

    分级
    说明
    顶层:核心资产(约占 5%-10%)
    • 定义:涉及金钱、结算、库存等一旦出错后果严重的表

    • 策略:严防死守。配置【明细值比对】,高频运行(如每小时)

    • 心态:这几百张表,我必须确保一行都不差

    中层:一般业务(约占 20%-30%)
    • 定义:配置表、维表、非核心流转记录

    • 策略:定期巡检。配置「统计值比对,低频运行(如每天一次)

    • 心态:只要总数对得上,大概率没问题

    底层:日志/流水/归档(约占 60% 以上)
    • 定义:海量的操作日志、历史归档数据

    • 策略:抽样或不测。仅配置几张代表性的表作为“哨兵”,或者完全不配置检测

    • 心态:这些数据量太大且价值密度低,只要管道没报错,我就默认它是对的

    2.1.2 哨兵模式

    为什么不需要测所有表呢?

    FDL 的管道同步机制是标准化的。通常情况下,如果同一个管道任务中的几张“最难同步的表”(写入最频繁、结构最复杂)的数据是一致的,那么同一个管道里其他几百张静止的、简单的表几乎不可能出问题。

    我们推荐的“哨兵”策略:

    • 从您的 3000 张表中,找出 写入量最大、变动最频繁 的 10-20 张表(通常是核心业务表)。

    • 给这 20 张表配置高频的【明细值比对】。

    • 结论:只要这 20 个“哨兵”没有报警,整个 FDL 管道链路就是健康的,其余 2980 张表也就是安全的。

    2.2 规则选择说明

    关卡判断标准说明
    第一关源端数据库现在是否处于高负载或业务高峰
    • 是  -->  停止配置,或仅配置为“夜间 02:00 执行”

    • 否  -->  进入下一关

    第二关
    表是否有主键或唯一索引
    • 无  -->   建议先去给逻辑主键配置唯一索引, 否则【统计值比对】会触发全表扫描

    • 有  -->  进入下一关

    表是否有修改时间戳
    • 无  -->  锁定方案为 【统计值比对】(无法做增量明细)------非最终方案,还需进一步判断

    • 有  -->  进入下一关

    第三关这是核心交易/结算表,且存在 Update 修改吗
    • 是  -->  初选方案 【明细值比对】,进入下一关继续判断

    • 否(日志表/非核心表/纯Insert表)  -->  锁定方案: 【统计值比对】进入下一关继续判断

    第四关数据量是否巨大(>亿级)或带宽紧张
    • 是  -->  降级:即便上一关选了明细,这里也建议改回统计值;或在明细比对中增加 Exclude 排除大字段

    •  -->  进入下一个问题

    写入是否非常高频(7*24h)

    1)是  -->【明细值比对】 

    • 加窗口:配置 Where update_time < 30分钟前,避开误报

    • 若业务有明确停止窗口(如夜间),建议将检测任务调度在停止写入的时间段(如凌晨 2 点)运行,此时结果最准确

    2)否:【明细值比对】

    若出现差异,建议复测一次以排除瞬间延迟

    20.png

    3. 补充说明

    • 如果实时管道任务开启了逻辑删除的话,需要在检测对象上配置过滤条件 _fdl_marked_deleted = 'false'

    • 如果实时管道任务开启了分组表同步, 需要在检测对象上配置过滤条件过滤 _fdl_src_schema_table = 'schema.table_name'

    3.1 发现来源表和目标表数据不一致如何处理

    3.1.1 步骤一:查看实时管道日志

    首先确认差异是由“管道堵了(延迟)”引起的,还是真正的“数据错了”。

    • 待同步数:如果数值很高,说明数据还在排队。这是延迟,不是不一致。请耐心等待同步完成。

    • 读写时间:如果最新写入时间显著落后于最新读取时间,也是延迟

    • 脏数据:如果有脏数据记录,说明数据写入报错被丢弃了。这是明确的数据不一致

    3.1.2 步骤二:再运行一次数据检测任务

    或者根据前几次的运行结果来辅助判断是否误报。

    如果排除了明显的延迟积压,建议手动重新触发一次检测任务

    • 原因:在检测执行期间,源端发生的实时高频变更可能导致瞬时差异。

    • 判断:

      • 差异消失,忽略(属于动态比对的正常误差)。

      • 差异依然存在且稳定,进入第三步。

    3.1.3 根因排查

    请对照下表逐一检查:

    排查维度检查项常见原因说明
    A. 链路因素[ ] 任务异常重启检查管道日志,确认故障期间是否有异常中止或 OOM 重启,可能导致内存中数据丢失
    [ ] 脏数据堆积检查 FDL 脏数据列表,是否有因字段超长、类型不兼容导致数据入库失败
    [ ] 外部多头写入确认目标表是否被其他管道、定时任务或人工操作写入了数据(非常常见)
    B. 配置因素[ ] 主键逻辑冲突源表和目标表的“主键”定义必须一致。若目标表主键设置错误,会导致更新变成插入(重复)或覆盖错误
    [ ] 过滤条件差异确认同步任务的过滤条件与检测任务的过滤条件范围是否完全一致
    C. 源端因素[ ] DDL 变更源端是否加减了字段?如果管道未开启 DDL 同步,新结构数据可能无法写入
    [ ] 日志解析异常某些数据库特性导致的日志解析丢失









    附件列表


    主题: 数据管理
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

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

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

    不再提示

    10s后关闭



    AI

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