本文介绍如何使用数据传输服务DTS(Data Transmission Service)配置数据校验任务,帮助您监控源库与目标库数据的差异。您可以在同步或迁移实例的高级配置阶段选择相应的数据校验方式,以便及时发现数据不一致的问题。
注意事项
经典网络的数据库实例暂不支持增量数据校验功能。
开启多表归并的实例暂不支持数据校验功能。
运行状态为已完成的实例暂不支持数据校验功能。
若待校验的表为无主键且无唯一索引的表,则该表的数据超过10000行时DTS将不会进行数据校验。
若待校验的数据既没有主键约束也没有唯一约束,则DTS将不会进行增量数据校验。
若同步或迁移实例进行重启操作(例如先暂停再启动),则实例中的全量校验任务会重新开始校验。
在执行校验任务前需评估源库和目标库的性能,同时建议您在业务低峰期执行数据校验(例如源库和目标库的CPU负载在30%以下)。因为DTS在进行数据校验时将占用源库和目标库一定的读资源,可能会导致数据库的负载上升。在数据库性能较差、规格较低或业务量较大的情况下,可能会加重数据库压力,甚至导致数据库服务不可用。
增量校验任务仅支持校验增量同步或增量迁移任务中变更的数据,不支持校验手动在目标库中变更的数据。
采用按抽样比例进行HASH校验方式对MongoDB进行数据校验时,抽样百分比默认为100%,且不支持修改。
若全量校验模式选择了按抽样比例进行HASH校验,则不建议同时使用ETL功能。否则,ETL功能修改后的数据会被校验为不一致数据。
支持的地域
全域支持,且支持跨地域的链路。支持的地域,请参见支持的地域列表。
支持的链路
源库和目标库间的双向同步链路也支持校验功能。
源库和目标库支持阿里云和自建数据库实例。
数据校验方式 | 源库 | 目标库 |
全量校验 | MySQL | MySQL、AnalyticDB MySQL、PolarDB MySQL版、PostgreSQL、AnalyticDB PostgreSQL版、Oracle |
PolarDB MySQL版 | MySQL、AnalyticDB MySQL、PolarDB MySQL版、AnalyticDB PostgreSQL版、Oracle | |
PostgreSQL | MySQL、PostgreSQL、AnalyticDB PostgreSQL版、PolarDB PostgreSQL版、PolarDB PostgreSQL版(兼容Oracle)、Oracle | |
PolarDB PostgreSQL版 | MySQL、PostgreSQL、AnalyticDB PostgreSQL版、PolarDB PostgreSQL版、Oracle | |
单节点架构的MongoDB | 单节点架构的MongoDB | |
副本集架构的MongoDB | 副本集架构的MongoDB | |
分片集群架构的MongoDB | 分片集群架构的MongoDB | |
主从复制集群架构的Tair/Redis | 主从复制集群架构的Tair/Redis | |
Redis Cluster集群架构的Tair/Redis | Redis Cluster集群架构的Tair/Redis | |
SQL Server | MySQL、AnalyticDB MySQL、PolarDB MySQL版、SQL Server、AnalyticDB PostgreSQL版 | |
Oracle | AnalyticDB MySQL、AnalyticDB PostgreSQL版、MySQL、PolarDB MySQL版、PolarDB PostgreSQL版、PolarDB PostgreSQL版(兼容Oracle)、PostgreSQL、Oracle | |
PolarDB PostgreSQL版(兼容Oracle) | PolarDB PostgreSQL版(兼容Oracle)、AnalyticDB MySQL、Oracle | |
Db2 for LUW | MySQL、PolarDB MySQL版、AnalyticDB MySQL、AnalyticDB PostgreSQL版 | |
Db2 for i(AS/400) | MySQL | |
增量校验 | MySQL | MySQL、AnalyticDB MySQL、PolarDB MySQL版、PostgreSQL、AnalyticDB PostgreSQL版、PolarDB PostgreSQL版 |
PolarDB MySQL版 | MySQL、AnalyticDB MySQL、PolarDB MySQL版、AnalyticDB PostgreSQL版 | |
PostgreSQL | MySQL、PostgreSQL、AnalyticDB PostgreSQL版、PolarDB PostgreSQL版 | |
PolarDB PostgreSQL版 | PostgreSQL、AnalyticDB PostgreSQL版、PolarDB PostgreSQL版 | |
单节点架构的MongoDB | 单节点架构的MongoDB | |
副本集架构的MongoDB | 副本集架构的MongoDB | |
分片集群架构的MongoDB | 分片集群架构的MongoDB | |
SQL Server | MySQL、AnalyticDB MySQL、PolarDB MySQL版、SQL Server、AnalyticDB PostgreSQL版 | |
Oracle | AnalyticDB MySQL、MySQL、PolarDB MySQL版、PolarDB PostgreSQL版(兼容Oracle) | |
结构校验 | MySQL | MySQL、PolarDB MySQL版 |
PolarDB MySQL版 | MySQL、PolarDB MySQL版 | |
PostgreSQL | PostgreSQL、PolarDB PostgreSQL版 | |
PolarDB PostgreSQL版 | PostgreSQL、PolarDB PostgreSQL版 |
在DTS同步或迁移实例中配置数据校验
进入校验配置页面。
说明若您使用的是旧版配置页,则需要进入高级配置页面。
设置数据校验方式。
根据业务需求勾选数据校验的方式,若您勾选了全量校验,您还需要设置如下表所示参数。
说明全量校验:对全量任务中需要校验的数据进行校验。若实例不包含增量任务,则实例创建成功后且全量数据写入完成时开始校验;若实例包含增量任务,则实例创建成功且增量数据写入首次无延迟时开始校验。
增量校验:对增量任务的数据进行校验,实例创建成功后且增量数据写入首次无延迟时开始校验。
结构校验:对需要校验的对象进行结构校验。若实例不包含增量任务,则实例创建成功后且库表结构和全量数据写入完成时开始校验;若实例包含增量任务,则实例创建成功后且增量数据写入首次无延迟时开始校验。
结构校验任务执行完成后,才会执行全量和增量校验任务。
参数
说明
全量校验模式
按抽样比例进行HASH校验:配置抽样百分比,对抽中的数据进行全字段校验,取值为10~100的整数。
按表行数进行校验:对全量任务数据的行数进行校验,不会对具体的数据内容进行校验。
说明按表行数进行校验的全量校验模式不收费;按抽样比例进行HASH校验的全量校验模式按实际校验数据量收费。
全量校验时间规则
当前仅支持立即开始。
全量校验超时设置
不设置:全量校验任务超时不会强制结束。
设置:设置全量校验任务结束的延迟时间。在全量校验任务启动后开始计时,若校验任务未在指定时间完成则强制结束。取值为1~72的整数。
选择校验基准
默认:以源库和目标库的合集为基准,校验源库和目标库数据的一致性。
源库:以源库为基准,校验目标库与源库数据的一致性(不校验目标库比源库多的数据)。
目标库:以目标库为基准,校验源库与目标库数据的一致性(不校验源库比目标库多的数据)。
每秒读取的最大数据行数rps
全量数据校验会占用数据库一定的读取资源,您可以根据实际情况对全量校验任务进行限速设置(每秒读取的数据行数和数据量),以缓解数据库的压力。
说明参数值为0时表示无限制,当每秒读取的最大数据行数rps和每秒读取最大的Byte数byte/s均为0时,表示不限速。
每秒读取最大的Byte数byte/s
设置校验对象。
您可以在已选择对象框中勾选不需要进行数据校验的对象,然后单击进行移除。
说明DTS默认已将待同步或迁移的对象移动至已选择对象框。
配置校验告警。
根据业务需求,选择配置如下表所示参数。
参数
说明
全量校验告警
不设置:不设置告警。
设置:设置告警,您还需要选择和配置告警规则。告警规则如下:
当全量校验任务失败时触发告警。
设置数据不一致的阈值,当全量校验任务不一致数据大于等于设置的阈值时触发告警。
增量校验告警
不设置:不设置告警。
设置:设置告警,您还需要选择和配置告警规则。告警规则如下:
当增量校验任务失败时触发告警。
设置数据不一致的周期数、统计周期和不一致数量阈值,当增量校验任务累计在设置的若干个周期,数据不一致记录量均大于等于设置的阈值时触发告警。
设置数据延迟的周期数、统计周期和延迟时间阈值,当增量校验任务累计在设置的若干个周期,延迟均大于等于设置的阈值时触发告警。
重要若您设置了校验告警,且需要在校验任务触发告警时接收告警通知,还需要前往云监控平台进行告警消息订阅设置。更多信息,请参见通过云监控平台为DTS任务设置报警规则。
根据提示及相关配置文档,完成后续配置。
相关API
API接口 | 说明 |
配置数据校验任务。 |
常见问题
使用映射功能修改的库、表、列名,是否会被校验为不一致数据?
数据校验已适配数据库和表的映射功能。若使用映射功能修改了库、表、列名,其中仅列名会被校验为不一致数据,数据库名和表名则不会。
为什么在DTS实例中无法勾选校验方式?
可能是当前实例不支持相应的数据校验功能,或者在配置任务对象及高级配置阶段未选择相应的同步类型或迁移类型。
使用过滤条件功能过滤的数据,是否会被校验为不一致数据?
全量校验:否,全量数据校验已适配过滤条件功能。
增量校验:是,增量数据校验暂未适配过滤条件功能。