配置数据校验
本文介绍如何使用数据传输服务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 |
在校验任务列表配置校验任务
此功能正在灰度内测中,仅部分用户可以在校验任务列表配置任务。
进入校验任务的列表页面。
登录DMS数据管理服务。
在顶部菜单栏中,单击集成与开发(DTS)。
在左侧导航栏,选择 。
说明您也可以登录DTS校验任务列表页面。
进入校验任务的配置页面。
已购买校验任务(先购买再配置):找到目标任务,单击操作列的配置任务。
未购买校验任务(先配置再购买):单击创建任务。
参考同步方案概览或迁移方案概览中的相关配置文档,配置源库及目标库信息。
说明先购买再配置任务的实例地区不支持修改。
配置完成后,单击页面下方的测试连接以进行下一步。
如果源或目标数据库是阿里云数据库实例(例如RDS MySQL、云数据库MongoDB版等),DTS会自动将对应地区DTS服务的IP地址添加到阿里云数据库实例的白名单中;如果源或目标数据库是ECS上的自建数据库,DTS会自动将对应地区DTS服务的IP地址添到ECS的安全规则中,您还需确保自建数据库没有限制ECS的访问(若数据库是集群部署在多个ECS实例,您需要手动将DTS服务对应地区的IP地址添到其余每个ECS的安全规则中);如果源或目标数据库是IDC自建数据库或其他云数据库,则需要您手动添加对应地区DTS服务的IP地址,以允许来自DTS服务器的访问。DTS服务的IP地址,请参见DTS服务器的IP地址段。
警告DTS自动添加或您手动添加DTS服务的公网IP地址段可能会存在安全风险,一旦使用本产品代表您已理解和确认其中可能存在的安全风险,并且需要您做好基本的安全防护,包括但不限于加强账号密码强度防范、限制各网段开放的端口号、内部各API使用鉴权方式通信、定期检查并限制不需要的网段,或者使用通过内网(专线/VPN网关/智能网关)的方式接入。
设置数据校验方式。
根据业务需求勾选数据校验的方式,若您勾选了全量校验,您还需要设置如下表所示参数。
说明全量校验:对全量任务中需要校验的数据进行校验。
增量校验:对增量任务的数据进行校验。
结构校验:对需要校验的对象进行结构校验。
结构校验任务执行完成后,才会执行全量和增量校验任务。
参数
说明
全量校验模式
按抽样比例进行HASH校验:配置抽样百分比,对抽中的数据进行全字段校验,取值为10~100的整数。
按表行数进行校验:对全量任务数据的行数进行校验。
说明按表行数进行校验的全量校验模式不收费;按抽样比例进行HASH校验的全量校验模式按实际校验数据量收费,在公测期间免费。
全量校验时间规则
当前仅支持立即开始。
全量校验超时设置
不设置:全量校验任务超时不会强制结束。
设置:设置全量校验任务结束的延迟时间。在全量校验任务启动后开始计时,若校验任务未在指定时间完成则强制结束。取值为1~72的整数。
选择校验基准
默认:以源库和目标库的合集为基准,校验源库和目标库数据的一致性。
源库:以源库为基准,校验目标库与源库数据的一致性(不校验目标库比源库多的数据)。
目标库:以目标库为基准,校验源库与目标库数据的一致性(不校验源库比目标库多的数据)。
每秒读取的最大数据行数rps
全量数据校验会占用数据库一定的读取资源,您可以根据实际情况对全量校验任务进行限速设置(每秒读取的数据行数和数据量),以缓解数据库的压力。
说明参数值为0时表示无限制,当每秒读取的最大数据行数rps和每秒读取最大的Byte数byte/s均为0时,表示不限速。
每秒读取最大的Byte数byte/s
设置校验对象。
在源库对象框中勾选需要进行数据校验的对象,然后单击
将其移动至已选择对象框。
配置校验告警。
根据业务需求,选择配置如下表所示参数。
参数
说明
全量校验告警
不设置:不设置告警。
设置:设置告警,您还需要选择和配置告警规则。告警规则如下:
当全量校验任务失败时触发告警。
设置数据不一致的阈值,当全量校验任务不一致数据大于等于设置的阈值时触发告警。
增量校验告警
不设置:不设置告警。
设置:设置告警,您还需要选择和配置告警规则。告警规则如下:
当增量校验任务失败时触发告警。
设置数据不一致的周期数、统计周期和不一致数量阈值,当增量校验任务累计在设置的若干个周期,数据不一致记录量均大于等于设置的阈值时触发告警。
设置数据延迟的周期数、统计周期和延迟时间阈值,当增量校验任务累计在设置的若干个周期,延迟均大于等于设置的阈值时触发告警。
说明若您选择设置校验告警,您还需要输入告警联系人的手机号码。当校验任务触发告警时,将以短信的形式通知告警联系人。
单击下一步高级配置,进行高级配置。
配置
说明
选择调度该任务的专属集群
DTS默认将任务调度到共享集群上,您无需选择。您可以购买指定规格的专属集群来运行DTS任务,详情请参见什么是DTS专属集群。
源库、目标库无法连接后的重试时间
在同步任务启动后,若源库或目标库连接失败则DTS会报错,并会立即进行持续的重试连接,默认持续重试时间为720分钟,您也可以在取值范围(10~1440分钟)内自定义重试时间,建议设置30分钟以上。如果DTS在设置的重试时间内重新连接上源库、目标库,同步任务将自动恢复。否则,同步任务将会失败。
说明针对同源或者同目标的多个DTS实例,如DTS实例A和DTS实例B,设置网络重试时间时A设置30分钟,B设置60分钟,则重试时间以低的30分钟为准。
由于连接重试期间,DTS将收取任务运行费用,建议您根据业务需要自定义重试时间,或者在源和目标库实例释放后尽快释放DTS实例。
源库、目标库出现其他问题后的重试时间
在同步任务启动后,若源库或目标库出现非连接性的其他问题(如DDL或DML执行异常),则DTS会报错并会立即进行持续的重试操作,默认持续重试时间为10分钟,您也可以在取值范围(1~1440分钟)内自定义重试时间,建议设置10分钟以上。如果DTS在设置的重试时间内相关操作执行成功,同步任务将自动恢复。否则,同步任务将会失败。
重要源库、目标库出现其他问题后的重试时间的值需要小于源库、目标库无法连接后的重试时间的值。
上述配置完成后,单击页面下方的下一步保存任务并预检查。
说明在校验作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动校验作业。
如果预检查失败,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。
如果预检查产生警告:
对于不可以忽略的检查项,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。
对于可以忽略无需修复的检查项,您可以依次单击点击确认告警详情、确认屏蔽、确定、重新进行预检查,跳过告警检查项重新进行预检查。如果选择屏蔽告警检查项,可能会导致数据不一致等问题,给业务带来风险。
查看数据校验任务进度。
已购买校验任务(先购买再配置):预检查通过率显示为100%时,单击返回列表。
未购买校验任务(先配置再购买):预检查通过率显示为100%时,依次单击下一步购买、阅读并勾选《数据传输(按量付费)服务条款》、单击购买并启动、单击确定。
在DTS同步或迁移实例中配置数据校验
进入高级配置页面。
设置数据校验方式。
根据业务需求勾选数据校验的方式,若您勾选了全量校验,您还需要设置如下表所示参数。
说明全量校验:对全量任务中需要校验的数据进行校验。若实例不包含增量任务,则实例创建成功后且全量数据写入完成时开始校验;若实例包含增量任务,则实例创建成功且增量数据写入首次无延迟时开始校验。
增量校验:对增量任务的数据进行校验,实例创建成功后且增量数据写入首次无延迟时开始校验。
结构校验:对需要校验的对象进行结构校验。若实例不包含增量任务,则实例创建成功后且库表结构和全量数据写入完成时开始校验;若实例包含增量任务,则实例创建成功后且增量数据写入首次无延迟时开始校验。
结构校验任务执行完成后,才会执行全量和增量校验任务。
参数
说明
全量校验模式
按抽样比例进行HASH校验:配置抽样百分比,对抽中的数据进行全字段校验,取值为10~100的整数。
按表行数进行校验:对全量任务数据的行数进行校验。
说明按表行数进行校验的全量校验模式不收费;按抽样比例进行HASH校验的全量校验模式按实际校验数据量收费,在公测期间免费。
全量校验时间规则
当前仅支持立即开始。
全量校验超时设置
不设置:全量校验任务超时不会强制结束。
设置:设置全量校验任务结束的延迟时间。在全量校验任务启动后开始计时,若校验任务未在指定时间完成则强制结束。取值为1~72的整数。
选择校验基准
默认:以源库和目标库的合集为基准,校验源库和目标库数据的一致性。
源库:以源库为基准,校验目标库与源库数据的一致性(不校验目标库比源库多的数据)。
目标库:以目标库为基准,校验源库与目标库数据的一致性(不校验源库比目标库多的数据)。
每秒读取的最大数据行数rps
全量数据校验会占用数据库一定的读取资源,您可以根据实际情况对全量校验任务进行限速设置(每秒读取的数据行数和数据量),以缓解数据库的压力。
说明参数值为0时表示无限制,当每秒读取的最大数据行数rps和每秒读取最大的Byte数byte/s均为0时,表示不限速。
每秒读取最大的Byte数byte/s
设置校验对象。
您可以在已选择对象框中勾选不需要进行数据校验的对象,然后单击
进行移除。
说明DTS默认已将待同步或迁移的对象移动至已选择对象框。
配置校验告警。
根据业务需求,选择配置如下表所示参数。
参数
说明
全量校验告警
不设置:不设置告警。
设置:设置告警,您还需要选择和配置告警规则。告警规则如下:
当全量校验任务失败时触发告警。
设置数据不一致的阈值,当全量校验任务不一致数据大于等于设置的阈值时触发告警。
增量校验告警
不设置:不设置告警。
设置:设置告警,您还需要选择和配置告警规则。告警规则如下:
当增量校验任务失败时触发告警。
设置数据不一致的周期数、统计周期和不一致数量阈值,当增量校验任务累计在设置的若干个周期,数据不一致记录量均大于等于设置的阈值时触发告警。
设置数据延迟的周期数、统计周期和延迟时间阈值,当增量校验任务累计在设置的若干个周期,延迟均大于等于设置的阈值时触发告警。
说明若您选择设置校验告警,您还需要输入告警联系人的手机号码。当校验任务触发告警时,将以短信的形式通知告警联系人。
根据提示及相关配置文档,完成后续配置。