帮你快速理解、总结文档立即下载

实时同步任务数据对账

最近更新时间:2026-09-11 18:35:00
我的收藏

概述

数据对账用于在来源端与目标端之间周期性比对数据,及时发现数据不一致问题。DataBuddy 实时同步任务支持基于 数据条数数据内容(主键) 的两种对账规则,覆盖全量与增量两种范围,并提供告警通知与差异详情查看。本文介绍数据对账的支持范围、配置方式与结果查看。

前提条件

已创建实时整库或实时分库分表同步任务。
来源、目标端在 支持的链路 范围内。
如使用「校验数据内容」规则,源表必须包含主键或唯一索引。

使用限制

限制项
说明
任务类型
实时整库迁移任务 / 实时分库分表任务支持
主键
「校验数据内容」仅支持基于主键的对账,无主键且无唯一索引的表不支持
MongoDB
MongoDB 来源端不支持增量对账 (仅支持全量对账)
单任务库表数量
任务涉及库表数量超过 5000 时,无法按单表配置数据对账(不影响整体同步任务运行)
对账周期
最小对账间隔为 60 分钟
差异详情预览
单次最多预览 10000 条差异数据,且仅展示主键字段
资源占用
对账任务与同步任务复用同一计算资源 ,会占用资源组资源
目标端筛选条件
增量对账的筛选 SQL 在 Flink SQL 中执行,仅支持 Flink SQL 语法(如当前日期写作 ${YYYY-MM-dd} 而不是 CURRENT_DATE(),不等于使用 <> 而不是 !=

支持的链路

任务类型
来源端
整库迁移任务
MySQL、TDSQL-C MySQL、Oracle、MongoDB、Kafka
分库分表任务
MySQL、TDSQL-C MySQL、Oracle

操作步骤

步骤 1:开启数据对账

数据对账在任务配置流程的 数据对账 步骤中配置:
1. 实时整库多表任务配置实时分库分表任务配置 流程中进入 数据对账 步骤。
2. 打开 数据对账 开关。关闭时所有表都不进行对账;开启后按全局对账策略统一对账。

步骤 2:配置全局对账策略

参数
说明
是否必填
对账规则
校验数据条数 / 校验数据内容 ,详见下方说明
对账字段
仅在选「校验数据内容」时显示,当前仅支持主键对账
视规则
对账范围
全量对账 / 增量对账 ,详见 对账范围
对账时间
对账周期,最小 60 分钟

对账规则

规则
行为
适用场景
校验数据条数
通过数据源连接直接 count(*) 比较来源表与目标表条数
数据量不大,关注总量一致
校验数据内容
比对来源端与目标端的主键集合,主键不一致即认为数据不一致
主键稳定且关注每条记录是否落库;要求来源 / 目标端有主键或唯一索引

对账范围

范围
行为
用户输入
全量对账
对源 / 目标表全量数据对账
增量对账
通过过滤条件筛选后的数据进行对账,适合按时间分区
来源端筛选条件 + 目标端筛选条件
增量对账提示
时间字段筛选支持 系统内置参数
支持细粒度对账(如按小时分区),可使用分组语法。
来源、目标端筛选条件需各自符合对应数据源的 SQL 语法。
如筛选条件中字段在来源、目标端不存在,需要在「单表对账」中按表修改,否则该表对账会失败。
示例(按小时分区对账):
select count(1), partition from table where partition > ${yyyyMMddHHmmss-8H} group by partition
提示
目标端的筛选 SQL 在 Flink SQL 中执行 ,仅支持 Flink SQL 语法:
当前日期使用 ${YYYY-MM-dd} 表达,不要写 CURRENT_DATE()
不等于使用 <>不要写 !=
不符合 Flink SQL 语法时,对账会失败。

步骤 3:(可选)按单表自定义对账

全局策略对任务下所有表生效。如需差异化处理:
1. 在配置流程的对账步骤中点击需要差异化的单表。
2. 可单表开启、关闭数据对账,或修改单表的增量对账条件。
提示
单表对账修改在任务发布运行后生效。如某张表需要不同的筛选条件或不参与对账,建议在保存前调整完整。

步骤 4:(可选)配置对账告警

实时同步任务的告警规则页面支持配置数据对账告警。仅对开启了数据对账的任务生效
告警指标
说明
阈值
数据对账 / 任务失败
数据对账常驻任务运行失败
失败时按 X 分钟 / 小时 / 天告警 N 次
数据对账 / 对账失败
对账明细中某些表为对账失败状态
失败时按 X 分钟 / 小时 / 天告警 N 次
数据对账 / 对账时间
单次数据对账时间超过阈值
对账时间 > X 分钟 / 小时 / 天
数据对账 / 数据不一致条数
对账明细中某些表的数据差异条数不为 0
数据不一致条数 > N 条
「数据不一致条数」按表粒度 告警——任意一张表的不一致条数超阈值即触发。
告警渠道与基础规则参见 设置通知渠道

查看对账结果

实时同步任务按设置的首次对账时间和对账间隔进行周期持续对账。

入口

进入任务运维详情页(见 实时同步任务运维监控),切换到 数据对账 页面。

对账概览指标

指标
说明
表总数
同步任务涉及的表数量;分库分表场景下按目标端表数量统计
数据一致表数量
来源 / 目标条数或主键完全一致的表数量
数据不一致表数量
来源 / 目标存在差异(差异数 ≠ 0)的表数量
对账失败数量
对账过程中失败的表数量
未对账表数量
未开启数据对账的表数量

对账明细

明细按表逐行展示对账结果。基于主键对账且差异数 ≠ 0 的记录支持 查看差异详情
说明
差异详情预览上限
10000 条
展示字段
仅展示主键字段

对账任务状态与可执行操作

对账任务是常驻任务,按设置的时间周期自动运行:
状态
说明
可执行操作
对账任务未启动
尚未启动
运行
对账任务运行中
正在执行
停止
对账任务已停止
人为停止
运行
对账任务失败
启动失败或运行失败
运行
对账任务操作中
中间态

验证结果

操作完成后,您可以通过以下方式确认:
1. 数据对账 概览看到 表总数 与各分类计数符合预期,未对账表数量 等于未配置对账的表数。
2. 「对账明细」按周期产生新的对账记录。
3. 已配置对账告警时,触发条件下能在告警渠道收到通知。
4. 单表自定义对账配置生效——查看明细时该表的对账规则与全局不同。

常见问题

Q:开启数据对账后会拖慢任务性能吗?

A:会有一定影响。数据对账需要拉取来源端与目标端数据,会对数据源有一定负担 ,并且对账任务与同步任务复用同一计算资源 ,会占用资源组资源。建议:
把对账周期设置得不要过短(最小 60 分钟)。
对大表使用 校验数据条数 ,对中小表再使用 校验数据内容
资源组监控值会包含数据对账实例占用,请按实际负载评估资源组规格。

Q:单表对账失败,怎么排查?

A:常见原因:
1. 筛选条件中字段在来源端或目标端不存在 —— 在单表对账配置中调整该表的增量对账条件,使字段名匹配。
2. 目标端筛选 SQL 使用了非 Flink SQL 语法 —— 如 CURRENT_DATE()!=。改为 ${YYYY-MM-dd}<>
3. MongoDB 配置了增量对账 —— MongoDB 不支持增量对账,请改为全量对账或在该表关闭对账。
4. 任务涉及库表 > 5000,无法按单表配置 —— 当前规模无法支持单表对账,请拆分为多个任务。

Q:基于主键对账,差异条数为 0 但内容仍可能不一致?

A:是。当前 校验数据内容 仅比对主键集合,不比对其他字段值。如果业务需要比对全字段一致性,建议:
通过数据质量任务增加字段值校验(详见 数据质量)。
或通过 SQL 任务自定义比对脚本(详见 SQL 任务)。

Q:差异详情只显示 10000 条,怎么处理超出部分?

A:差异详情仅用于快速定位差异样本。超出 10000 条 时建议:
1. 通过差异样本判断不一致原因(如 DDL 漏同步、过滤条件遗漏、写入失败等)。
2. 修复同步任务后重新启动一次对账。
3. 如需全量比对,建议另起一个 SQL 任务,将来源、目标主键集合分别落到中间表后做差集。

Q:对账任务能单独停止,不影响数据同步吗?

A:可以。对账任务是常驻任务,可以在 数据对账 单独点击 停止不影响数据同步主任务 。停止后再点击 运行 即可恢复。

相关文档