1. 概述
1.1 版本
| FineDataLink 版本 | 功能变动 |
|---|---|
| 4.2.20.5&5.0.13.5 | 实时管道支持数据一致性检测 |
1.2 应用场景
实时管道任务运行后,用户需要确认目标端数据与源端是否一致,若不一致希望能被快速通知,避免业务使用数据时才暴露问题。
目前虽然有「数据检测」功能,但存在以下问题:
交互割裂:用户需要跨多个功能模块操作,数据检测任务不能读取实时管道已有的配置项,不支持批量设置等操作。
检测不可靠:读取期间数据更新导致频繁误报,用户对检测结果缺乏信任。
1.3 功能简介
实时管道任务内提供数据一致性检测功能,可定期检测实时管道任务目标端与来源端数据是否一致,当检测不通过时支持通知给对应负责人,确保 IT/运维人员发现问题先于业务感知。如下图所示:

2. 配置数据一致性检测
2.1 前提条件
需要同时满足以下条件,才支持使用「数据一致性检测」功能:
1)数据源类型符合要求
实时管道任务支持的数据源请参见:FineDataLink支持的数据源
实时管道任务的来源端和目标端需要在以下列表中,才支持「数据一致性检测」功能。
| MySQL、Oracle、SQL Server、PostgreSQL、达梦、StarRocks、Doris、Greenplum、YMatrix、SelectDB |
2)来源表需要有主键。
3)源端非 分组表
2.2 添加规则
实时管道任务配置完成后,才能使用「数据一致性检测」功能。
实时管道任务详情页中,点击「数据一致性检测」Tab,点击「添加规则」按钮,配置规则:

2.2.1 检测对象

1)基于实时管道任务已配置的表,选择数据一致性检测的对象。
注:来源表需要有主键,才能被选择
2)支持配置来源表和目标表的数据范围,基于筛选后的数据,进行比对。

3)支持「快速选表」功能,可输入来源表名进行匹配。如下图所示:
每行填写一个来源表名,可填写多行。

2.2.2 检测方式
检测方式提供两种:数据统计值比对、数据明细值比对。
数据统计值比对:
基于数据行数进行快速一致性校验:

若目标端为逻辑删除,目标表统计行数时自动去除已删除数据。
数据明细值比对:
基于全量数据逐行、逐字段比对:

适用于:表数量不过大(千万级)、数据库负载较低、网络带宽充裕的场景。
比对维度:字段值;仅检测已配置映射的字段,未配置映射的字段不纳入检测范围。
| 设置项 | 说明 |
|---|---|
| 检测范围 | 1)完整检测:
2)抽样检测:
|
2.2.3 预期范围

1)差异行数/差异率可以只设置一个,若都设置,满足任一条件,即符合预期。
2)差异行定义:源端与目标端按主键 / 比对键取并集后,无法判定为两端完全一致的数据行数。
差异行数=目标端缺失行数 + 字段值不一致行数 + 目标端多出行数。
3)差异率=差异行数 / 总检测行数
差异行数=目标端缺失行数 + 字段值不一致行数 + 目标端多出行数。
总检测行数=来源端检测行数+目标端检测行数。
示例:源端行数:1000,目标端行数:1200,目标端缺失:100 行,字段值不一致:50 行,目标端多出:300 行,总异常行数 = 100 + 50 + 300 = 450,总检测行数=1000+1200=2200。
2.2.4 复检配置
数据高频变动、同步延迟或检测期间持续写入时,检测结果可能产生偏差。建议开启此能力,以提升检测结果准确性。

1)当检测不通过时,快速复检,用于校验一致性,降低误报影响。
复检次数:正整数,范围为1-5。
复检间隔:正整数,范围1-10分钟。
2)实时管道任务来源和目标延迟过高时,复检也一定会有差异。
3)复检通过规则说明:
若任意一次复检结果为通过,则本次检测最终判定为通过,并立即结束复检流程,不再执行后续复检。若所有有效复检结果均为不通过,则本次检测最终判定为不通过,返回复检次数及对应的结果。
若某次复检运行失败,该次复检不参与通过/不通过判定,系统记录失败阶段和失败原因,并根据剩余复检次数继续执行。若所有复检均运行失败,且未产生有效复检结果,则本次检测最终判定为运行失败。
如复检结果中同时存在运行失败和检测不通过,且不存在复检通过记录,则以已成功执行的复检结果作为最终判定依据,当前规则检测实例状态更新为检测不通过。
2.2.5 差异明细存储
详细说明请参见:异常明细存储
1)定义差异明细(本文 2.4.2 节内容)存储的格式。
2)产品界面内支持设置差异明细存储的保留时间上限、存储行数上限:
保留时间上限:默认保存7天。

2.2.6 相同对象添加多个规则
支持一张表添加多个规则,点击「添加规则」按钮即可。详情请参见:实时管道数据一致性检测规则运维

2.3 运行数据检测
提示:与实时模块公用一个资源池,即受 负载分配 功能限制(内存限制和并发控制),资源不足时,规则检测状态为排队中。
数据一致性检测规则配置后,可手动运行或者为其设置执行频率。如下图所示:

2.3.1 手动运行
点击「运行」按钮,运行数据一致性检测规则。
注:仅当规则未在检测中时可启动,运行中不可重复触发。
2.3.2 设置执行频率
若希望自动运行数据一致性检测,可设置执行频率:
设置项说明请参见:定时调度
注:若对应检测规则正在检测中,本次调度将跳过。

2.4 查看检测结果
2.4.1 运行记录
运行后,可查看运行结果及运行记录。如下图所示:

| 显示项 | 说明 |
|---|---|
| 差异情况 | 按规则中配置的预期范围,显示对应的差异行数或差异率;检测方式为「数据明细值比对」时,可查看差异详情 |
| 差异行 | 差异行与差异率定义请参见本文 2.2.3 节内容。 1)预期范围为差异行数: 三个数字依次代表差异行、来源检测行、目标检测行
2)预期范围为差异率: 检测方式为「数据明细值比对」时,差异率右侧才有「详情」按钮,点击后,可查看差异详情(本文 2.4.2 节内容)
|
2.4.2 差异详情
检测方式为「数据明细值比对」且检测不通过时,可查看差异详情。
途径:
1)点击「差异情况」字段值右侧的「详情」按钮,可查看最近一次检查结果的差异详情。

2)在运行记录中点击「详情」按钮,可根据需要查看任一运行记录的差异详情。

差异详情界面说明:
可查看差异详情:

| 展示内容 | 说明 |
|---|---|
| 导出按钮 | 异常明细内容支持下载,说明如下:
|
2.4.3 复检详情
运行记录中,可点击「复检详情」按钮,查看复检详情。

1)存在复检记录的检测记录,开始时间为首次开始时间,结束时间为最后一次复检完成的时间。复检失败,也记录对应时间。
2)复检记录检测的记录数量,应随着每次检测逐步递减;最终展示的运行记录的异常行数=复检未通过不一致行数/第一次检测的总行数
例如首次运行发现100/1000,则第一次复检只检测100条,结果为50/100,第二次复检应为10/50,如果此时未通过,则展示检测结果为10/1000。
3)若检测方式为「数据明细值比对」,复检详情中可查看差异详情。

2.5 设置结果通知
2.5.1 运行监控
可统一为所有规则设置结果通知:

1)应用场景
降低通知噪音:多表批量检测时,单表逐条通知可能在短时间内产生大量消息,容易造成刷屏,影响用户对关键异常的关注。
提升异常可读性:合并通知可以汇总展示窗口内的检测结果,例如通过数量、不通过数量、运行失败数量,用户不需要逐条查看单表消息。
便于判断整体影响范围:用户可以快速判断异常是少量表问题,还是大面积异常,从而区分表级问题和管道、数据源、目标端等系统性问题。
批量检测:帮助用户判断整体数据同步质量。
2)功能说明
部分设置项说明如下:
| 功能项 | 说明 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 监听内容 | 可勾选:运行失败、检测不通过、检测通过 | ||||||||||||
| 统计时机 | 需要输入正整数
| ||||||||||||
| 通知渠道 | 平台、邮件、短信、钉钉群机器人、飞书群机器人、企业微信群机器人、WeLink 详情请参见:任务控制-结果通知 | ||||||||||||
| 通知内容 |
|
2.5.2 每条规则设置结果通知
支持为每条规则配置结果通知,当运行失败、检测不通过、检测通过时,通知给指定负责人。

| 功能项 | 说明 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 设置项 | 详情请参见:任务控制-结果通知 | ||||||||||||
| 通知内容 |
|
3. 实时管道其他状态影响
| 管道变化情况 | 场景 | 处理策略 |
|---|---|---|
| 源表 DDL 变化 | 源表新增字段 | 自动纳入对应检测规则(新增字段) |
源表删除字段 | 自动移除对应字段 | |
源表字段重命名 | 需要用户手动处理目标端数据 | |
源表类型变更 | 自动调整字段类型 | |
| 表进入补数据状态 | 表进入补数据状态 | 正常检测,不做特殊处理 |
对应的表从管道任务中被移除,又重新添加 | 需要重新配置检测规则,不缓存之前的配置 | |
管道配置修改 | 更改增量同步起点 | 正常检测 |
重置启动 | ||
切换同步方式由全量+增量变为仅增量 | ||
切换逻辑删除为物理删除 | 需用户手动处理,删除对应逻辑删除字段 | |
| 切换物理删除为逻辑删除 | 自动过滤掉逻辑删除字段 | |
