本文介绍如何使用数据传输服务DTS(Data Transmission Service)配置数据校验任务,帮助您监控源库与目标库数据的差异,以便及时发现数据不一致的问题。
前提条件
若您需要配置全量校验功能,DTS实例的任务步骤需勾选全量同步或全量迁移。
若您需要配置增量校验功能,DTS实例的任务步骤需勾选增量同步或增量迁移。
注意事项
经典网络的数据库实例暂不支持增量数据校验功能。
开启多表归并的实例暂不支持数据校验功能。
运行状态为已完成的实例暂不支持数据校验功能。
若待校验的表为无主键且无唯一索引的表,则该表的数据超过10000行时DTS将不会进行数据校验。
若待校验的数据既没有主键约束也没有唯一约束,则DTS将不会进行增量数据校验。
若同步或迁移实例进行重启操作(例如先暂停再启动),则实例中的全量校验任务会重新开始校验。
在执行校验任务前需评估源库和目标库的性能,同时建议您在业务低峰期执行数据校验(例如源库和目标库的CPU负载在30%以下)。因为DTS在进行数据校验时将占用源库和目标库一定的读资源,可能会导致数据库的负载上升。在数据库性能较差、规格较低或业务量较大的情况下,可能会加重数据库压力,甚至导致数据库服务不可用。
支持的地域
全量校验和结构校验:全域支持,且支持跨地域的链路。支持的地域,请参见支持的地域列表。
增量校验:华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北3(张家口),不支持跨地域的链路。
支持的链路
源库和目标库间的双向同步链路也支持校验功能。
源库和目标库支持阿里云和自建数据库实例。
数据校验方式 | 源库 | 目标库 |
全量校验 | MySQL | MySQL、AnalyticDB MySQL、PolarDB MySQL版、PostgreSQL、AnalyticDB PostgreSQL、Oracle |
PolarDB MySQL版 | MySQL、AnalyticDB MySQL、PolarDB MySQL版、PostgreSQL、AnalyticDB PostgreSQL、PolarDB PostgreSQL、Oracle | |
PostgreSQL | MySQL、PostgreSQL、AnalyticDB PostgreSQL、PolarDB PostgreSQL、PolarDB PostgreSQL版(兼容Oracle) | |
PolarDB PostgreSQL | 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、AnalyticDB PostgreSQL、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 | |
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默认已将待同步或迁移的对象移动至已选择对象框。
配置校验告警。
根据业务需求,选择配置如下表所示参数。
参数
说明
全量校验告警
不设置:不设置告警。
设置:设置告警,您还需要选择和配置告警规则。告警规则如下:
当全量校验任务失败时触发告警。
设置数据不一致的阈值,当全量校验任务不一致数据大于等于设置的阈值时触发告警。
增量校验告警
不设置:不设置告警。
设置:设置告警,您还需要选择和配置告警规则。告警规则如下:
当增量校验任务失败时触发告警。
设置数据不一致的周期数、统计周期和不一致数量阈值,当增量校验任务累计在设置的若干个周期,数据不一致记录量均大于等于设置的阈值时触发告警。
设置数据延迟的周期数、统计周期和延迟时间阈值,当增量校验任务累计在设置的若干个周期,延迟均大于等于设置的阈值时触发告警。
说明若您选择设置校验告警,您还需要输入告警联系人的手机号码。当校验任务触发告警时,将以短信的形式通知告警联系人。
根据提示及相关配置文档,完成后续配置。