DRS运行过程中的DVS数据对比

发布于:2025-08-18 ⋅ 阅读:(19) ⋅ 点赞:(0)

一、DMDRS和DMDVS产品简介

        达梦数据复制软件(简称DMDRS)是一种用于同构数据库、异构数据库以及各种数据管理系统之间的数据复制软件。DMDRS采用模块化的设计,通过灵活配置不同的功能模块,实现多功能的数据复制服务,以满足多种场景下的数据复制业务需求。基于数据复制业务的应用场景,DMDRS提供数据迁移、数据同步、数据分发和数据转换等功能,而且数据同步功能还支持一对一、双向、一对多、多对一、级联同步、环形同步和DMDRS主备等多种同步拓扑结构。

        达梦数据校验软件(简称DMDVS)是一种用于同构或异构数据库数据差异识别,并支持对差异数据进行修复、备份与还原的数据校验软件。DMDVS采用模块化的设计,实现多功能的数据校验服务,满足静态数据校验、动态数据校验、单向数据校验、中转数据校验和分布式数据校验等多种场景下的数据校验业务需求。

        DMDVS是达梦的新产品,所以比起DRS,大家对DVS可能没什么了解,在本博客中我就不再介绍DRS了,之前在别的博客中介绍过了。今天主要就是介绍一下如何在DRS运行过程中,使用DVS进行动态的数据对比。

二、静态数据对比

        在介绍本博客的重点即动态数据对比之前,先用一个简单的静态对比带大家了解一下DMDVS的使用方法。

2.1 启动dvs服务

./dvs_serverd start

(启动脚本要自己配,相信大家都会,就bin目录下cp service_template/TemplateService嘛)

2.2进入控制台

./drcsl dvs.xml

先连接

connect

输入两台数据库信息来添加校验数据库

CMP ADD DB <db_type> <db_info_name> "<server>" <user> <pwd> [<port>] [<db_name>][<server_name>] [<ssl_path> <ssl_pwd>]

比如

cmp add db dm8 dm_a “主调ip” SYSDBA 密码 5236

cmp add db dm8 dm_b “被调ip” SYSDBA 密码 5236

2.3静态校验指令

cmp job jobname=test1 db1 db2 "SYSDBA.*==SYSDBA.*"

2.4查看报告

show report test1

很简单对吧,下面就来看重点

三、动态数据校验

3.1概述

        动态数据校验主要应用于在使用DMDRS服务进行数据增量同步的同时校验数据一致性的场景。动态数据校验通过指定源DMDRS的连接信息与源DMDRS服务建立连接,获取需要校验的源数据库信息,由源DMDRS通知目标DMDRS将目标数据库信息发送给DMDVS,再由DMDVS校验当前已同步的数据的一致性。

3.2准备

        动态数据校验仅支持DM8和Oracle 10g及以上版本的数据库使用。使用该功能前,需要开启数据库的闪回功能,即ENABLE_FLASHBACK 置为 1。

        DM8数据库开启闪回功能后,还需设置“dm.ini”文件的TRX_VIEW_MODE和TRX_VIEW_POLICY参数值为1。

3.3运行

(1)首次执行动态数据校验作业。

DCMP JOB [JOBNAME=<job_name>] "<cpt_conn_info>" "<cpt_cmp_table>" [<mask>]

cpt_conn_info:

CPT模块的IP、端口号以及CPT模块的名称组成的连接信息,格式为"IP:Port[:CPT_NAME]"

注意:端口号不是数据库端口号,是drs配置文件中的mgr_port

cpt_cmp_table:

源数据库需要进行校验的表信息。支持模式下所有表的校验,也支持模式下的单张表或者多张表的校验

比如:

DCMP JOB jobname=dcmp_person "192.168.160.161:5347:cpt_dm8" "PERSON.*"

(这张图是我测试RESOURCES表的图,PERSON的没截,大家知道这个意思就好)

(2)重复执行动态数据校验作业。

DCMP JOB JOBNAME=<job_name>

(3)查看报告

SHOW REPORT JOBNAME=<job_name>

(4)我们来测试一下

原来的数据(不要在意性别,随机生成的)

新插入5行数据

数据成功同步到目的端

这时再直接重复运行校验任务,结果如下

可以看到当前已同步的数据是一致的

        看到这大家可能觉得这和多次的静态数据对比没什么区别,但是大家可以思考一下,上面的例子是数据量比较小的情况,如果数据量很大,那同步就需要花费一定时间,如果我们想知道已经同步了的增量数据的一致性在数据同步的过程中进行数据的校验,就需要利用动态数据校验

四、遇到的一些问题

4.1执行dcmp校验任务后dvs服务直接停了,执行show task会发现所有任务只有开始时间,没有结束时间

这个应该是内存的问题,我换了台虚拟机就可以了

4.2执行动态数据校验任务成功后,想看报告却有如下报错

我们可以在bin/log/dvs_时间.log中看到如下错误信息

这是因为在部署 DMDVS 时需配置动态库依赖路径,该报错一般都是需要的数据库驱动路径没加到环境变量里面导致,通过 ldd 检查动态库文件 libdvora.so 和 libdvdm.so 发现存在缺失

 

我们可以用find / -name libclntsh.so.11.1的方式找到该文件路径并把它添加到动态库文件中,然后重启DMDVS即可

社区地址:https://eco.dameng.com


网站公告

今日签到

点亮在社区的每一天
去签到