同步任务数据对账能力

最近更新时间:2025-07-18 15:48:02

我的收藏

什么是数据对账

数据对账是指在不同数据源之间进行比对,确保数据的一致性和准确性。WeData 数据集成提供的数据对账能力,用于监控来源表与目标表的数据差异,及时发现数据一致性问题。目前离线同步和实时同步任务均支持数据对账,但支持的链路和对账功能上有些差异,具体见下文。

离线同步任务数据对账

数据对账支持的链路

当前仅离线同步任务的以下链路支持数据对账。
来源端支持的数据源类型:
MySQL、腾讯云 MySQL、TDSQL-C MySQL、Oracle、达梦 DM、Starrocks/EMR Starrocks、Hive、Doris/TCHouse-D、TCHouse-P、MongoDB、腾讯云MongoDB、Iceberg、EMR Iceberg、TBDS Iceberg、DLC数据源。
目标端支持的数据源类型:
MySQL、腾讯云 MySQL、TDSQL-C MySQL、Oracle、达梦 DM、Starrocks/EMR Starrocks、Hive、Doris/TCHouse-D、TCHouse-P、MongoDB、腾讯云MongoDB、Iceberg、EMR Iceberg、TBDS Iceberg、DLC数据源。

数据对账逻辑说明

1. 当前支持按来源表和目标表的条数进行对账,支持全量统计条数(全量对账),也支持通过数据过滤统计数据条数(增量对账)。
2. 离线同步任务的数据对账会在任务运行成功后执行,任务未运行完成或运行失败,不会进行数据对账。数据对账的结果不会影响同步任务本身的运行状态。
3. 数据对账任务跟集成任务复用同一个资源组,会占用资源组资源,所以在资源组监控页面的统计值中也包含数据对账实例。
注意:
1. 当用户选择的资源组为2025年2月20日之前购买的资源组时,无法支持数据对账功能。如有需要,请 联系我们 升级资源组版本或使用2025年2月20日之后购买的资源组。
2. 新增支持 MongoDB、腾讯云 MongoDB、Iceberg、EMR Iceberg、TBDS Iceberg、DLC 数据源数据对账能力,当用户选择的资源组为2025年6月11日之前购买的资源组时,无法支持该类数据对账功能。如有需要,请 联系我们 升级资源组版本或使用2025年6月11日之后购买的资源组。
4. 分库分表的情况下会统计所有分表。如源端多张表到目标端1张表,会统计源端多个表的条数总和与目标表的条数进行比对。源端1张表到目标端多张表(MySQL 分库分表写入场景),会统计目标端多个表的条数总和与来源表的条数进行比对。

如何配置数据对账

数据集成模块离线同步任务和离线开发模块的离线同步任务均支持数据对账。如果仅涉及数据同步,不涉及数据开发任务,可在数据集成模块创建离线同步任务并配置数据对账;如果涉及数据同步,也涉及数据开发任务,建议在离线开发模块创建离线同步任务并配置数据对账。

数据集成模块

数据集成模块支持单个任务创建,也支持批量创建同步任务。单个任务配置的时候支持配置数据对账;批量创建任务的时候也支持批量配置数据对账。
单个任务配置数据对账
单个任务的数据对账配置在右侧的任务属性里。当同步任务的数据来源和数据去向在数据对账支持的链路范围内,且资源组也符合购买时间要求时,用户可打开数据对账开关,显示数据对账相关配置:

参数
说明
数据对账规则
当前支持校验数据条数,对来源端和目标端的表进行条数统计和比对。
来源端对账范围
支持全量对账、增量对账
全量对账:基于来源表的所有数据进行对账。
增量对账:基于来源表筛选后的数据进行对账。若此处没有填筛选条件,则默认按同步任务上来源端配置的筛选条件进行筛选。若同步任务上来源端也没有配置筛选条件,则等同于全量对账。

目标端对账范围
支持全量对账、增量对账
全量对账:基于目标表的所有数据进行对账。
增量对账:基于目标表筛选后的数据进行对账。比如按分区进行过滤,分区值支持时间调度系统参数。若此处没有填筛选条件,则等同于全量对账。
当同步任务的数据来源和数据去向不在数据对账支持的链路范围内,或者资源组不符合购买时间要求时,数据对账开关不支持开启,如下:

批量任务配置数据对账
批量创建离线同步任务的时候支持在第3步的运行设置中开启数据对账。
注意:
此处配置的对账规则和范围对本次批量创建的所有同步任务生效。但筛选条件涉及的过滤字段如果在某些表里没有这些字段,则筛选条件对这些表不生效。
当同步任务的数据来源和数据去向在数据对账支持的链路范围内,且资源组也符合购买时间要求时,用户可打开数据对账开关,显示数据对账相关配置:

参数
说明
数据对账规则
当前支持校验数据条数,对来源端和目标端的表进行条数统计和比对。
来源端对账范围
支持全量对账、增量对账
全量对账:基于来源表的所有数据进行对账。
增量对账:基于来源表筛选后的数据进行对账。若此处没有填筛选条件,则默认按同步任务上来源端配置的筛选条件进行筛选。若同步任务上来源端也没有配置筛选条件,则等同于全量对账。
目标端对账范围
支持全量对账、增量对账
全量对账:基于目标表的所有数据进行对账。
增量对账:基于目标表筛选后的数据进行对账。比如按分区进行过滤,分区值支持时间调度系统参数。若此处没有填筛选条件,则等同于全量对账。
当同步任务的数据来源和数据去向不在数据对账支持的链路范围内,或者资源组不符合购买时间要求时,数据对账开关不支持开启。
当批量创建完成后,可查看具体生成的离线同步任务。如果需要修改某个任务的数据对账配置,可单击具体任务名称进入任务配置页面:

在任务属性里可按需修改数据对账配置:

查看数据对账详情
任务提交后会按配置的调度策略进行周期性运行。每次运行产生的实例如果都是成功状态,则每次都会进行数据对账。进入具体实例的运行详情页面可看到数据对账的结果。如果数据同步任务实例为非成功状态,则不会进行数据对账。

对账任务如果异常,用户可查看异常信息,并对本次实例对应的数据对账任务进行终止和重跑操作。不同状态支持的操作如下:
状态
终止
重跑
等待资源
-
对账中
-
对账成功
-
对账失败
-
终止中
-
-

离线开发模块

配置数据对账
离线开发同步任务的数据对账配置在右侧的任务属性里。当同步任务的数据来源和数据去向在数据对账支持的链路范围内,且资源组也符合购买时间要求时,用户可打开数据对账开关,显示数据对账相关配置:

参数
说明
数据对账规则
当前支持校验数据条数,对来源端和目标端的表进行条数统计和比对。
来源端对账范围
支持全量对账、增量对账
全量对账:基于来源表的所有数据进行对账。
增量对账:基于来源表筛选后的数据进行对账。若此处没有填筛选条件,则默认按同步任务上来源端配置的筛选条件进行筛选。若同步任务上来源端也没有配置筛选条件,则等同于全量对账。

目标端对账范围
支持全量对账、增量对账
全量对账:基于目标表的所有数据进行对账。
增量对账:基于目标表筛选后的数据进行对账。比如按分区进行过滤,分区值支持时间调度系统参数。若此处没有填筛选条件,则等同于全量对账。
当同步任务的数据来源和数据去向不在数据对账支持的链路范围内,或者资源组不符合购买时间要求时,数据对账开关不支持开启。
查看数据对账详情
任务提交后会按配置的调度策略进行周期性运行。每次运行产生的实例如果都是成功状态,则每次都会进行数据对账。进入具体实例的运行详情页面可看到数据对账的结果。如果数据同步任务实例为非成功状态,则不会进行数据对账。

对账任务如果异常,用户可查看异常信息,并对本次实例对应的数据对账任务进行终止和重跑操作。不同状态支持的操作如下:
状态
终止
重跑
等待资源
-
对账中
-
对账成功
-
对账失败
-
终止中
-
-

配置数据对账告警

目前仅离线开发的运维中心支持配置离线同步任务的数据对账告警。支持以下告警指标。
说明:
数据对账告警仅针对开启数据对账的离线集成任务生效。

告警指标
指标说明
指标阈值
数据对账任务失败
对应的数据对账常驻任务运行失败则告警

数据对账任务运行耗时
每一次的数据对账时间超过阈值则告警
若 数据对账任务运行耗时 超过 xx 分钟
数据对账数据不一致条数
对账明细中某些表的数据差异条数不为0则告警
若 数据对账数据不一致条数 超过 xx 条
注意:
数据不一致条数是按表粒度进行告警,只要其中某一个表的不一致条数大于阈值就告警。

实时同步任务数据对账

说明:
目前数据对账功能在邀请测试阶段,您可以单击 试用申请 进行申请。

数据对账支持的链路

实时同步任务支持的数据对账链路如下:
任务类型
数据来源类型
数据目标类型
整库迁移任务
MySQL、TDSQL-C MySQL、Oracle、MongoDB、Kafka
Iceberg、TCHouse-P、Starrocks、DLC、TCHouse-D/Doris
分库分表任务
MySQL、TDSQL-C MySQL、Oracle
Iceberg、DLC、TCHouse-D/Doris
实时单表任务
暂不支持数据对账

数据对账逻辑说明

1. 支持按来源表和目标表的条数和主键进行对账。基于条数的数据对账不依赖主键;基于数据内容的数据对账目前仅支持主键对账,所以需要源表包含主键。无主键且无唯一索引的表不支持基于主键的内容校验。
2. 支持基于源表和目标表的全量数据进行对账(全量对账),也支持通过数据过滤后的结果数据进行对账(增量对账)。数据对账会拉取来源端和目标端数据源的数据,会对数据源有一定负担。
3. 实时同步任务的数据对账会在任务处于【运行中】状态时启动第一次数据对账,后续按用户设定的对账时间间隔进行对账。
4. 数据对账任务跟集成任务复用同一个资源组,会占用资源组资源,所以在资源组监控页面的统计值中也包含数据对账实例。
注意:
老版本的实时资源组不支持数据对账,需提工单升级到最新版本。
5. 分库分表的情况下会统计所有分表。如源端多张表到目标端1张表,会统计源端多个表的条数总和/主键与目标表的条数/主键进行比对。

如何配置数据对账

配置数据对账

整库迁移任务、分库分表任务在任务配置过程中支持配置数据对账:

1. 全局对账策略
全局对账策略配置,对任务中包含的所有库表生效。
参数
说明
数据对账
关闭时任务中的所有表都不进行数据对账
开启时按对账配置的内容进行对账
对账规则
支持校验数据条数和校验数据内容
校验数据条数:基于来源表和目标表的数据条数进行对账。关系型数据库通过数据源链接直接从数据库中count条数。
校验数据内容:基于来源表和目标表的主键进行内容比对,若主键不一致则认为数据不一致。要求来源表、目标表中有主键或唯一索引。
对账字段
当对账规则为校验数据内容时显示此配置项。当前仅支持主键对账。
对账范围
全量对账:基于源表和目标表的全量数据进行对账。适用于数据量不是很大的情况。
增量对账:基于数据过滤后的结果数据进行对账。需要用户输入来源端筛选条件和目标端筛选条件。
其中按时间字段筛选场景支持时间系统参数。如果有细粒度对账需求,如按小时分区进行数据对账,可用where过滤条件的分组语法,如select count(1) , partition from table where partition> ${yyyyMMddHHmmss-8H} group by partition
说明:
筛选条件里面如果来源表或目标表无对应字段,需要在单表配置页面进行修改,否则该表的数据对账会失败;
MongoDB不支持增量对账;
where筛选语句支持的语法和数据源类型相关,理论上数据源jdbc支持的语法此处都支持。但Iceberg 和 DLC目标端筛选条件SQL是在FLINK SQL里执行,仅支持FLINK SQL语法,如当前日期使用${YYYY-MM-dd}表示当前时间,而不是CURRENT_DATE();不等于需要使用<>,而不是 != 。

按单表编辑筛选条件:

对账时间
数据对账会对源端和目标端产生一定压力,对账周期不宜设置过短。如果数据源压力较大或对账任务运行较长,请适当延长对账周期。目前最小按照60分钟对账一次。
2. 单表对账策略
如果有个性化对账需求,支持按单表粒度进行对账策略配置,如按单表粒度进行数据对账开启或关闭、按单表修改增量对账条件。
说明:
如果单个任务涉及的库表数量超过5000,无法正常获取源表和目标表映射,无法按照单表进行数据对账配置,但是不影响整体数据同步任务运行。
无主键且无唯一索引的表不支持基于主键的内容校验。


查看对账详情

实时集成任务成功运行后会启动第一次数据对账。对账结果可以在任务详情里查看:

对账任务会按用户设置的对账周期定时执行,每次生成对账记录,显示在左侧列表。单击具体的对账记录可查看本次对账的概览和明细数据。
对账概览展示指标说明
表总数:同步任务里涉及的表数量,分库分表场景下按目标端表数量统计。
数据一致表数量:源表和目标表数据条数/主键完全一致的表数量
数据不一致表数量:源表和目标表数据条数/主键不一致(差异数不为0或-)的表数量
对账失败数量:对账失败的表数量
未对账表数量:未开启数据对账的表数量
对账明细里展示具体每张表的对账情况,基于主键对账差异数不为0的记录支持查看差异详情

差异详情最大预览10000条差异数据,当前仅展示主键字段:

对账任务是个常驻任务,会按用户设置的时间定时进行对账。如果临时不想进行数据对账,可单击停止

对账任务状态与支持的操作对应如下表:
场景
状态显示
支持的操作
对账任务尚未启动
对账任务未启动
运行
正常运行的对账任务
对账任务运行中
停止
人为停止的对账任务
对账任务已停止
运行
对账任务一开始启动失败或中途运行失败
对账任务失败
运行
对账任务操作中
对账任务操作中

配置数据对账告警

在实时同步的告警规则页面支持配置数据对账告警,支持以下告警指标。
说明:
数据对账告警仅针对开启数据对账的实时集成任务生效。

告警指标
指标说明
指标阈值
数据对账/任务失败
对应的数据对账常驻任务运行失败则告警
若 数据对账/任务失败 则 xx 分钟/小时/天 告警 xx 次
数据对账/对账失败
对账明细中某些表为对账失败状态则告警
若 数据对账/对账失败 则 xx 分钟/小时/天 告警 xx 次
数据对账/对账时间
每一次的数据对账时间超过阈值则告警
若 数据对账/对账时间 > xx 分钟/小时/天 则 xx 分钟/小时/天 告警 xx 次
数据对账/数据不一致条数
对账明细中某些表的数据差异条数不为0则告警
若 数据对账/数据不一致条数 > xx条 则 xx 分钟/小时/天 告警 xx 次
注意:
数据不一致条数是按表粒度进行告警,只要其中某一个表的不一致条数大于阈值就告警。