网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务
文档首页/ 数据复制服务 DRS/ 实时同步/ 任务管理/ 数据对比(对比同步项)

数据对比(对比同步项)

更新时间:2025-02-10 GMT+08:00
分享

对比使用场景

对比实时同步项可以清晰反馈出源数据库和目标数据库的数据是否存在差异。为了尽可能减少业务的影响和业务中断时间,实时同步场景提供了以下几种对比方式:

  • 对象级对比:支持对数据库、索引、表、视图、存储过程和函数、表的排序规则等对象进行对比。
  • 数据级对比分为行对比和内容对比。
    • 行对比:对比同步的表的行数是否一致,只查询表的行数,对比速度较快,建议优先使用。
    • 内容对比:对比同步的表内数据是否一致,需要查询每条数据进行对比,相较于行对比,内容对比较慢。
    • 抽样对比:当数据量过大时,行数对比和内容对比需要较长时间,推荐使用抽样对比,设置适当的抽样比例可以在较短时间内获取到对比结果。
  • 用户对比:对源库和目标库的账号名称、权限进行对比。
  • 周期性对比:定时对源数据库与目标数据库表的行数进行对比并展示结果,需要用户开启并设置对比策略

在使用对比功能查看数据一致性时,建议优先使用行数对比,确定行数是否一致。如果出现行数不一致的情况,可以针对不一致的表,使用内容对比,来确定具体有哪些数据不一致。

表1 支持的对比方式

同步方向

数据流向

对象级对比

行对比

内容对比

动态内容对比

用户对比

入云

MySQL->MySQL

支持

支持

支持

支持

不支持

入云

MySQL->PostgreSQL

支持

支持

不支持

不支持

不支持

入云

MySQL->GaussDB分布式版

支持

支持

支持

支持

不支持

入云

MySQL->GaussDB集中式

支持

支持

支持

支持

不支持

入云

MySQL->TaurusDB

支持

支持

支持

支持

不支持

入云

MySQL->GaussDB(DWS)

支持

支持

不支持

不支持

不支持

入云

MySQL->MariaDB

支持

支持

不支持

不支持

不支持

入云

PostgreSQL->PostgreSQL

支持

支持

支持

支持

支持

入云

PostgreSQL->GaussDB(DWS)

支持

支持

支持

支持

不支持

入云

PostgreSQL->GaussDB 集中式版

支持

支持

支持

支持

不支持

入云

PostgreSQL->GaussDB分布式版

支持

支持

支持

支持

不支持

入云

DDM->MySQL

支持

支持

不支持

不支持

不支持

入云

DDM->GaussDB(DWS)

不支持

支持

不支持

不支持

不支持

入云

DDM->DDM

支持

支持

不支持

不支持

不支持

入云

Oracle->MySQL

支持

支持

支持

支持

不支持

入云

Oracle->TaurusDB

支持

支持

支持

支持

不支持

入云

Oracle->GaussDB集中式

支持

支持

支持

支持

不支持

入云

Oracle->GaussDB分布式版

支持

支持

支持

支持

不支持

入云

Oracle->DDM

支持

支持

不支持

不支持

不支持

入云

Oracle->GaussDB(DWS)

支持

支持

不支持

不支持

不支持

入云

Oracle->PostgreSQL

支持

支持

不支持

不支持

不支持

入云

DB2 for LUW->GaussDB集中式

支持

支持

不支持

不支持

不支持

入云

DB2 for LUW->GaussDB分布式版

支持

支持

不支持

不支持

不支持

入云

DB2 for LUW->GaussDB(DWS)

支持

支持

不支持

不支持

不支持

入云

TiDB->TaurusDB

支持

支持

不支持

不支持

不支持

入云

Microsoft SQL Server->GaussDB(DWS)

支持

支持

不支持

不支持

不支持

入云

Microsoft SQL Server->GaussDB集中式

支持

支持

支持

不支持

不支持

入云

Microsoft SQL Server->GaussDB分布式版

支持

支持

支持

不支持

不支持

入云

Microsoft SQL Server->Microsoft SQL Server

支持

支持

不支持

不支持

不支持

入云

Microsoft SQL Server->MySQL

支持

支持

不支持

不支持

不支持

入云

Microsoft SQL Server->TaurusDB

支持

支持

不支持

不支持

不支持

入云

Microsoft SQL Server->PostgreSQL

支持

支持

不支持

不支持

不支持

入云

MongoDB->DDS

支持

支持

不支持

不支持

不支持

入云

MariaDB->MariaDB

支持

支持

支持

支持

不支持

入云

MariaDB->MySQL

支持

支持

不支持

不支持

不支持

入云

MariaDB->TaurusDB

支持

支持

不支持

不支持

不支持

入云

TaurusDB->TaurusDB

支持

支持

支持

支持

不支持

入云

Cassandra->GeminiDB Cassandra

支持

不支持

不支持

不支持

不支持

入云

Dynamo->GeminiDB Dynamo

支持

不支持

支持

不支持

不支持

出云

MySQL->MySQL

支持

支持

支持

支持

不支持

出云

MySQL->kafka

不支持

不支持

不支持

不支持

不支持

出云

MySQL->CSS/ES

支持

支持

不支持

不支持

不支持

出云

MySQL->Oracle

支持

支持

不支持

不支持

不支持

出云

MySQL->MariaDB

支持

支持

不支持

不支持

不支持

出云

DDM->MySQL

支持

支持

不支持

不支持

不支持

出云

DDM->Oracle

支持

支持

不支持

不支持

不支持

出云

DDM->Kafka

不支持

不支持

不支持

不支持

不支持

出云

DDS->MongoDB

支持

支持

支持

不支持

不支持

出云

DDS->Kafka

不支持

不支持

不支持

不支持

不支持

出云

PostgreSQL->PostgreSQL

支持

支持

支持

支持

不支持

出云

PostgreSQL->Kafka

不支持

不支持

不支持

不支持

不支持

出云

GaussDB集中式版->MySQL

支持

支持

支持

不支持

不支持

出云

GaussDB集中式版->Oracle

支持

支持

支持

支持

不支持

出云

GaussDB集中式版->Kafka

不支持

不支持

不支持

不支持

不支持

出云

GaussDB集中式版->GaussDB(DWS)

支持

支持

支持

不支持

不支持

出云

GaussDB集中式版->GaussDB分布式版

支持

支持

支持

支持

不支持

出云

GaussDB集中式版->GaussDB集中式

支持

支持

支持

支持

不支持

出云

GaussDB集中式版->PostgreSQL

支持

支持

支持

不支持

不支持

出云

GaussDB分布式版->MySQL

支持

支持

不支持

不支持

不支持

出云

GaussDB分布式版->Oracle

支持

支持

支持

不支持

不支持

出云

GaussDB分布式版->GaussDB(DWS)

支持

支持

支持

不支持

不支持

出云

GaussDB分布式版->Kafka

不支持

不支持

不支持

不支持

不支持

出云

GaussDB分布式版->GaussDB分布式版

支持

支持

支持

支持

不支持

出云

GaussDB分布式版->GaussDB集中式

支持

支持

不支持

不支持

不支持

出云

GaussDB分布式版->PostgreSQL

支持

支持

支持

不支持

不支持

出云

TaurusDB->MySQL

支持

支持

支持

支持

不支持

出云

TaurusDB->GaussDB(DWS)

支持

支持

不支持

不支持

不支持

出云

TaurusDB->Kafka

不支持

不支持

不支持

不支持

不支持

出云

TaurusDB->CSS/ES

支持

支持

不支持

不支持

不支持

出云

TaurusDB->Oracle

支持

支持

不支持

不支持

不支持

出云

MariaDB->MariaDB

支持

支持

支持

支持

不支持

出云

Microsoft SQL Server->Kafka

不支持

不支持

不支持

不支持

不支持

自建-自建

Oracle->Kafka

不支持

不支持

不支持

不支持

不支持

自建-自建

Oracle->GaussDB集中式

支持

支持

支持

支持

不支持

自建-自建

Oracle->GaussDB分布式版

支持

支持

支持

支持

不支持

自建-自建

MySQL->Kafka

不支持

不支持

不支持

不支持

不支持

自建-自建

MySQL->CSS/ES

支持

支持

不支持

不支持

不支持

自建-自建

MySQL->GaussDB集中式

支持

支持

不支持

不支持

不支持

自建-自建

MySQL->GaussDB分布式版

支持

支持

不支持

不支持

不支持

自建-自建

PostgreSQL->Kafka

不支持

不支持

不支持

不支持

不支持

自建-自建

PostgreSQL->GaussDB 集中式版

支持

支持

支持

支持

不支持

自建-自建

PostgreSQL->GaussDB分布式版

支持

支持

支持

支持

不支持

自建-自建

GaussDB集中式版->MySQL

支持

支持

支持

不支持

不支持

自建-自建

GaussDB集中式版->Oracle

支持

支持

支持

支持

不支持

自建-自建

GaussDB集中式版->Kafka

不支持

不支持

不支持

不支持

不支持

自建-自建

GaussDB集中式版->GaussDB分布式版

支持

支持

支持

支持

不支持

自建-自建

GaussDB集中式版->GaussDB集中式

支持

支持

支持

支持

不支持

自建-自建

GaussDB集中式版->PostgreSQL

支持

支持

支持

不支持

不支持

自建-自建

GaussDB分布式版->Oracle

支持

支持

支持

不支持

不支持

自建-自建

GaussDB分布式版->Kafka

不支持

不支持

不支持

不支持

不支持

自建-自建

GaussDB分布式版->GaussDB布式版

支持

支持

支持

支持

不支持

自建-自建

GaussDB分布式版->GaussDB集中式

支持

支持

不支持

不支持

不支持

自建-自建

GaussDB分布式版->PostgreSQL

支持

支持

支持

不支持

不支持

自建-自建

DB2 for LUW->GaussDB集中式

支持

支持

不支持

不支持

不支持

自建-自建

DB2 for LUW->GaussDB分布式版

支持

支持

不支持

不支持

不支持

自建-自建

Microsoft SQL Server->Kafka

不支持

不支持

不支持

不支持

不支持

约束限制

  • 对比需要在任务处于增量阶段才能手动创建。
  • 对比是大小写敏感的,如果源数据库或目标数据库一端为非大小写敏感,一端为大小写敏感,对比结果可能出现不一致的情况。
  • 对于单全量,在任务结束的时候,DRS会自动创建对象对比和行对比。对比时如果源库有数据操作,可能会导致对比结果不一致。
  • 如果在对比时源库进行DDL操作,为保证对比结果的准确性,需重新进行内容对比。
  • 如果单独对目标库进行数据修改操作,可能会导致对比结果不一致。
  • 如果源数据库字符类型存在编码异常的情况,通过DRS迁移或对比时会因数据库驱动转码转换为异常码点,最终可能导致内容对比一致,实际字节不一致。
  • 内容对比功能目前只支持带有主键的表,对于不支持内容对比的表可以使用行数对比功能。所以数据级对比功能需要结合业务场景,选用行数对比或者内容对比。
  • DRS进行内容比对期间不能暂停DRS任务,否则可能导致比对任务失败。
  • 部分数据类型不支持内容对比,详情参考内容对比不支持哪些数据类型
  • 为避免占用资源,DRS限制对比任务的时长,超过限制时长,对比任务自动停止。
    • 对于单全量任务结束时自动创建的对比任务,超时限制时长30分钟,超过后行对比和对象对比任务自动停止,DRS单全量任务结束。
    • 对于增量阶段用户手动创建的行对比任务,当源库是关系型数据库时,行对比限制时长为60分钟;源库为非关系数据库,比如MongoDB,行对比限制时长为30分钟。
  • 为避免占用资源,DRS任务的对比结果限制保留60天,60天后自动清除。
  • MySQL为源链路,源数据库中的虚拟列不支持内容对比,对比时会过滤虚拟列。
  • 对于支持内容对比、抽样对比的同步链路,如果创建任务时可以选择实例规格,那么仅支持大规格及以上规格进行内容对比、抽样对比。
  • 行对比的多对一场景,是将源库中的表与映射到目标库中的聚合表中对应的那部分数据做行数比对。
  • 对于多对一同步任务场景,不建议使用内容对比,因为内容对比无法保证一致性。
  • 不支持一个库中的表映射到多个库的任务进行内容对比。
  • MySQL、TaurusDB、MariaDB为源链路,源数据库中的虚拟列不支持内容对比,对比时会过滤虚拟列。
  • PostgreSQL为源的链路,在表映射场景下,索引和约束名称也会被修改,导致索引和约束的对比不一致。
  • MySQL为源的链路,如果源数据库的表中存在定长的binary字段,MySQL驱动会在数据末尾按照长度补齐\0,可能导致同步到目标库GaussDB后出现数据不一致的情况。
  • Oracle数据库中插入的空字符会被当成NULL来处理,因此对于Oracle为目标数据库的链路,DRS对比时会把空字符串和NULL做等价处理。源数据库是空字符串,目标数据库是NULL,对比结果显示一致。
  • Oracle->GaussDB分布式内容比对,因为GaussDB分布式的BLOB用DBE_LOB.LOB_GET_LENGTH查询失败,当LOB比对策略选择比对LOB长度时,比对会忽略BLOB比对。
  • Dynamo->GeminiDB Dynamo内容比对进行数据过滤时,过滤条件不支持二进制类型。内容比对以源为准,无法识别目标比源多记录的情况。

对数据库影响

  • 对象对比:会查询源库及目标库的系统表,占用10个左右的session的连接数,正常情况不会对数据库产生影响。但是如果对象数量巨大(比如几十万张表),可能会对数据库产生一定的查询压力。
  • 行数对比:会查询源库及目标库的表行数,占用10个左右的session的连接数,正常的select count语句基本不会对数据库产生影响。但是如果表数据量巨大(亿级)会对数据库产生一定的查询压力,返回查询结果会比较慢。
  • 内容对比:会查询源库及目标库的全部数据,涉及每个字段都会对比,所以会对数据库产生一定的查询压力,主要体现在IO上,查询速度受限于源库和目标库的IO和网络带宽。占用1-2个CPU,占用10个左右的session的连接数。
  • 用户对比:会查询源库及目标库的账户和权限,基本不会对数据库产生影响。

对比耗时预估

  • 对象对比:根据源库查询性能,一般会在几分钟内返回结果,如果对象数据量特别巨大,对比时长可能达到几十分钟。
  • 行数对比:使用select count方式,查询速度跟数据库性能相关。
  • 内容对比:在数据库没有压力并且网络正常的情况下,对比速度大概是5M/s。
  • 用户对比:与对象对比同时返回结果,如果对象不多的情况下,基本会在几分钟就会返回结果。

前提条件

  • 已登录数据复制服务控制台。
  • 已启动同步任务。

创建对比任务

  1. “实时同步管理”界面,选中指定同步任务,单击任务名称,进入“基本信息”页签。
  2. 单击“同步对比”页签,进入“同步对比”信息页面。
  3. 对比同步项。

    • 创建对象级对比:选择“对象级对比”页签,单击“开始对比”后稍等一段时间再单击,观察源数据库和目标数据库的各个对比项结果是否一致。若需要查看结果详情,可单击指定对比项操作列的“详情”按钮。
      图1 同步对象对比
    • 创建数据级对比(行数、内容对比):选择“数据级对比”页签,单击“创建对比任务”,选择“对比类型”、“对比方式”、“对比时间”和“对象选择”,单击“是”提交对比任务。
      图2 创建数据对比任务
      • 对比类型:分为行数对比和内容对比。
        • 行数对比:用于对比源和目标端的表的行数是否相等。
          说明:
          • 任务进入增量阶段后,用户可以创建行对比任务。
          • Oracle->GaussDB同步任务,当全量任务结束的时候会自动触发行对比任务。
        • 内容对比:用于对比源和目标端的表的数据是否一致。
          说明:
          • 任务进入增量阶段后,用户可以创建内容对比任务。全量同步完成后,源库数据不能发生变更,否则内容对比结果会不一致。
          • Oracle->GaussDB集中式版、Oracle->GaussDB分布式进入增量校验状态后,对比服务会开始通过解析的该任务涉及的表的增量日志抽取数据,持续对比。如果用户想要对比其他表的同步状态,可以取消正在对比的任务,创建新的对比任务。

          由于内容对比功能目前只支持带有主键的表,不支持内容对比的表可以使用行数对比功能。所以数据级对比功能需要结合业务场景,选用行数对比或者内容对比。

      • 对比策略:分为普通对比和多对一对比两种。
        • 普通对比策略:源库中的一张表跟映射到目标库中的那张表做整表的行数比对。
        • 多对一对比策略:源库中的一张表跟映射到目标库中的聚合表中对应的那部分数据做行数比对。
          说明:

          对比类型为行数对比时,支持对比策略选择。

      • 对比方式:分为静态对比和动态对比两种。
        • 静态对比:对源数据库和目标数据库进行一次全量内容对比,内容对比完成后对比任务结束,适用于无数据变化的非业务时间。
        • 动态对比:先对源数据库和目标数据库进行一次全量内容对比,对比任务完成后进入增量对比阶段,实时比对源数据库和目标数据库的增量数据,适用于有数据变化的业务时间。
          说明:
          • 对比类型为内容对比时,支持对比方式的选择。
          • 选择库级同步时,动态对比过程中不支持在源库创建新表。如需创建,请先取消动态对比,待新表创建并同步完成后,再重新启动动态对比。
      • 对比时间:可设置为“立即启动”“稍后启动”。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现符合实际情况的少量数据不一致对比结果,推荐结合对比定时功能,选择在业务低峰期进行对比,得到更为具有参考性的对比结果。
      • LOB对比策略:分为忽略LOB比对、比对长度、比对hash、和比对内容四种。
        说明:

        目前仅支持Oracle->GaussDB设置LOB对比策略。

        • 忽略LOB比对:内容比对时忽略LOB字段。建议选择忽略LOB比对,LOB比对可能会对数据库产生一定的压力,压力大小取决于LOB比对方式和数据量的大小,请根据源和目标数据库情况进行评估和测试,以确保数据库的性能和稳定性。
        • 比对长度:内容比对时采用源端和目标端的内置函数获取LOB数据长度进行数据比对。
        • 比对hash:采用源端和目标端的内置函数获取LOB数据哈希值进行数据比对,Oracle使用DBMS_CRYPTO包中的HASH函数来获取LOB哈希值,使用DBMS_CRYPTO包需要SYSDBA对用户赋权,赋权语句参考:
          GRANT EXECUTE ON DBMS_CRYPTO TO USER;
        • 比对内容:源端采用流式读取数据后再做哈希,目标库采用内置函数获取LOB数据哈希值,这种方式相对hash比对会减轻一些源库压力,但运行时间会久一些。
      • 进行数据过滤:开启后,可根据配置的过滤条件进行对象比对。
        说明:

        目前仅支持Oracle->GaussDB、GaussDB->Oracle、GaussDB->GaussDB、MySQL->MySQL、MySQL-GaussDB设置数据过滤对比。

        1. 选择开启数据过滤后,需要为选择对比的表对象添加过滤条件。
        2. 在过滤条件区域,填写过滤条件后,单击“校验规则”
          说明:
          • 每张表仅支持添加一个校验规则。
          • 数据过滤每次最多支持512张表,如超过512张表,请分多次进行规则校验。
          • 过滤表达式不支持使用某种数据库引擎特有的package、函数、变量、常量等写法,须使用通用SQL标准。
          • 请直接输入SQL语句中WHERE之后的部分(不包含WHERE和分号,例如:sid > 3 and sname like "G %"),最多支持输入512个字符。
          • 过滤条件填写的SQL语句中,关键字需要用字段标识符,datetime类型(包含日期和时间)和字符串类型的值需要用单引号,例如:`update` > '2022-07-13 00:00:00' and age >10、`update` ='abc' 。
          • 使用timestamp类型做过滤条件时,字符类型的时间应填写为UTC时区的时间值,例如MySQL中对timestamp类型固定按UTC时区存储,需要使用UTC时区的时间值进行比较才能达到预期效果。
          • 过滤条件不支持使用隐式转换规则,请填写正确的数据类型条件。例如Oracle的c列是字符类型varchar2,过滤条件应该设置为 c > '10',而不是c > 10。
          • 不支持对LOB字段设置过滤条件,如CLOB、BLOB、BYTEA等大字段类型。
          • 不支持使用非幂等表达式或函数作为数据加工条件,如SYSTIMESTAMP,SYSDATE等,因其每次调用返回的结果可能会有差异,导致达不到预期。
          • Oracle为源同步链路进行数据过滤时,定长字符类型NCHAR、CHAR需要使用完整固定长度字符进行匹配。
          • 建议不要对非精确类型字段设置过滤条件,如FLOAT、DECIMAL、DOUBLE等。
          • 建议不要对带有特殊字符的字段设置过滤条件。
          • 暂不支持对库名、shema名、表名大小写混用的对象进行过滤比对。
          • 暂不支持单库超过5万张表情况下进行条件过滤。
          • 基于安全考虑,SQL片段不允许使用带有更新含义的关键字或函数,例如 for update语句、updatexml函数等。
        3. 校验通过后,单击“生成加工规则”,即可在加工规则表格中看到该规则。
        4. 检查无误后,单击“确定”,创建对比任务。
      • 对象选择:可根据具体的业务场景选择需要进行对比的对象。
    • 创建数据级对比(抽样对比):当数据量过大时,行数对比和内容对比需要较长时间,推荐使用抽样对比,设置适当的抽样比例可以在较短时间内获取到对比结果。
      在“数据级对比”页签,单击“创建对比任务”,选择“抽样对比”,设置“抽样比例”、“对比时间”和“对象选择”后,单击“确定”提交对比任务。
      说明:
      • 目前实时同步支持MongoDB->DDS、DDS->MongoDB、GaussDB分布式版->GaussDB分布式版子任务进行抽样对比。
      • 仅支持大规格及以上规格的任务进行抽样对比。
      • MongoDB抽样方法采用MongoDB提供的$sample命令进行数据抽样:{ $sample: { size: <positive integer N> } }。

        其中size为设置的固定值1000,DRS提供的MongoDB抽样对比实际为多次执行$sample命令,直到抽样的数据量达到用户指定的抽样比例。

      • 单次抽样对比任务会执行多次$sample命令,多次$sample命令可能会获取到源库相同的数据。
      • 集合的总数据量通过estimatedDocumentCount方法获取,为估算值而非精确值,实际的抽样数据量与抽样比例可能会有所浮动,属于正常现象。
      • 抽样对比不支持_id为BinData数据类型的Document,抽到_id为BinData数据类型的Document将会过滤不进行对比。
      • MongoDB单个抽样对比任务的不一致数据量若超过10000条数据,则不再继续对比,最多只能展示出10000条不一致数据。
      图3 抽样对比
    • 创建用户对比:单击“用户对比”页签,可查看数据库账号及权限的对比结果。
      说明:
      • 全量同步中的任务无法进行用户对比。
      • 实时同步目前仅PostgreSQL->PostgreSQL的同步支持用户对比。

  4. 对比任务提交成功后,返回“数据级对比”页签,单击刷新列表,可以查看到所选对比类型的对比结果。

    图4 同步数据对比

    由于内容对比功能目前只支持带有主键的表,不支持内容对比的表可以使用行数对比功能。所以数据级对比功能需要结合业务场景,选用行数对比或者内容对比。

    若需要查看行数对比或者内容对比详情,可单击指定对比类型操作列的“查看对比报表”,页面将跳转至新的窗口,可观察对比结果的详细情况。

    若需要下载行数对比或者内容对比结果,可单击指定对比类型操作列的“导出报告”。

    图5 行数对比详情
    图6 内容对比详情
    说明:
    • 运行中的任务可以随时取消,已取消的对比任务也支持查看对比报表。
    • 行对比结果可按照“源库表行数”或“目标库表行数”,对当前页面显示的结果进行升序或者降序排列,方便进行筛选。
    • 行对比差异显示为负数时,代表目标库表行数比源库表行数多;显示为正数时,代表源库表行数比目标库表行数多。

周期性对比

周期性对比是DRS定时对源数据库与目标数据库表的行数进行对比,并展示结果。

  1. “实时同步管理”界面,选中指定同步任务,单击任务名称,进入“基本信息”页签。
  2. 单击“同步对比”页签,进入“同步对比”信息页面。
  3. 选择“周期性对比”页签,单击“修改对比策略”

    说明:

    目前仅支持MySQL->MySQL、MySQL->TaurusDB、MySQL->GaussDB(DWS)、TaurusDB->MySQL同步支持周期性对比设置。

  4. 在“修改对比策略”对话框中,开启周期性对比并设置对比频率、时间等策略,单击“是”完成设置。

    说明:
    • 开启后,DRS会按照设置的定时策略进行行数对比,对比结果需要在数据级对比中查看。
    • 关闭周期性对比后,下一次的周期性对比将不会再进行,历史对比结果仍可正常查看。
    • 修改检查设置不会影响当前在进行的周期性对比任务,修改后的设置下次生效。
    • 周期性对比会在源和目标端执行一定的读取操作,请选择无业务期时间点进行对比。
    • 周期性对比自动剔除超大表(行数超过一亿行),该类大表建议采用数据级对比功能进行抽查,不建议作为周期性对比表。
    图7 修改对比策略

数据修复(公测中)

当静态内容对比结果中存在不一致数据时,可在对比报表的明细页中选取不一致的表进行数据修复。数据修复结果为可在目标库执行的修复SQL。修复完成后可在对比报表的修复进度明细页查看不一致行的修复SQL生成详情,也可导出和下载针对本次对比所有已生成的不一致SQL,并结合实际情况在目标库手动执行修复SQL。数据修复具有如下约束。

  1. 数据修复功能仅支持白名单用户使用,当前仅支持MYSQL-MYSQL链路。
  2. 对于修复SQL为INSERT或UPDATE语句的场景,修复SQL中将展示不一致行的所有列内容,列值为对应列在源库的当前值。
  3. 历史的比对任务可能由于缺少修复信息而修复失败,需要重新比对后再进行修复。
  4. 每个同步任务仅保留最新一次数据修复的修复进度明细信息页面。
  5. 单个不一致行的数据大小最大支持4M,超过时对应的修复SQL将生成失败。
  6. DRS生成的修复SQL中,时间类型字段的内容是基于UTC时间的,如果表中存在时间字段,目标库执行修复SQL前需先将会话时区设置为0时区。各数据库类型对应的会话时区设置SQL示例如下表。
  7. 请谨慎执行修复SQL中的DELETE语句。
表2 各数据库类型设置会话时区为0时区的SQL示例

数据库类型

时区设置SQL

MYSQL

SET session time_zone='+00:00';

提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容