当前位置: 首页 > news >正文

达梦数据库部署veri数据对比工具

前提条件:dmhs同步复制安装完成:《单机部署dmhs同步复制(DM8—>DM8)》,在这个环境下部署veri。

一、概念

在进行数据库数据的实时同步的时候,需要了解同步的结果是否正确,因此需要有数据对比工具进行数据的对比,并生成详细的对比报告,提供用户参考。对比工具仅仅生成报告, 对数据不一致的情况不做任何操作,仅仅提示用户发生了数据不一致情况,并且告诉用户那些数据不一致。

二、veri构成

系统主要分为对比代理服务和对比校验进程。对比代理服务分源对比代理服务和目的对比代理 服务。对比代理服务的作用是从数据服务器取得数据记录,并取得数据记录的 MD5 值发送到对比校验进程进行校验。对比校验进程对数据进行比对后,直接访问源数据库服务器和目的数据库服务器,生成详细的对比报告。

术语解释如下

这张图片展示了一个数据验证(VERI)流程的架构图,涉及源数据库、目标数据库以及相关的服务和配置文件。以下是详细解析:

1. 组件说明

  • AGENT服务
    • 在源数据库和目标数据库上分别运行的代理服务。
    • 对比工具代理服务,主要用作数据获取,并计算行数据的 MD5,发送给对比模块。
    • 源数据库上的 AGENT 服务读取 agent.xml 配置文件,并与源数据库交互。
    • 目标数据库上的 AGENT 服务同样读取 agent.xml 配置文件,并与目标数据库交互。
  • 源数据库
    • 存储原始数据的数据库系统。
    • 通过虚线箭头与 AGENT 服务进行数据交互。
  • 目标数据库
    • 数据同步或迁移后的目标存储系统。
    • 同样通过虚线箭头与 AGENT 服务进行数据交互。
  • VERI进程
    • 中央验证进程,负责协调整个验证过程。
    • 对比校验进程,主要进行模式下对象对比,数据对比,并且生成对比报告。
    • 读取 veri.xml 配置文件,控制验证任务的执行。

2. 流程解析

2.1、命令方向(实线箭头)

  • 从 VERI 进程到 AGENT 服务
    • VERI 进程向源数据库和目标数据库上的 AGENT 服务发送命令,指示它们执行特定的操作(如数据读取、写入等)。
  • 从 AGENT 服务到数据库
    • AGENT 服务根据收到的命令,与对应的数据库进行交互,执行相应的操作。

2.2、数据方向(虚线箭头)

  • 从源数据库到 AGENT 服务
    • 源数据库将数据传输给源数据库上的 AGENT 服务。
  • 从 AGENT 服务到 VERI 进程
    • 源数据库上的 AGENT 服务将读取的数据传递给 VERI 进程。
  • 从 VERI 进程到 AGENT 服务
    • VERI 进程处理完数据后,将结果或指令传递给目标数据库上的 AGENT 服务。
  • 从 AGENT 服务到目标数据库
    • 目标数据库上的 AGENT 服务将数据写入目标数据库。

3. 配置文件的作用

  • agent.xml
    • 位于源数据库和目标数据库上,为各自 AGENT 服务提供配置信息。
    • 包含连接数据库的参数、数据处理规则等。
  • veri.xml
    • 位于 VERI 进程中,为整个验证过程提供全局配置。
    • 包含验证规则、数据对比逻辑、任务调度等信息。

4、DMHS:达梦数据实时同步工具,本产品包含以下功能:

  • 动态对比:对比工具与 DMHS 协同工作,保证源表与目的表都是执行完相同事务后对查询结果集进行对比。
  • 静态对比:对比工具单独对比,没有 DMHS 的协同。
  • 键值对比:按照主键或者唯一索引值排序进行对比。
  • 非键值对比:按照行数据 MD5 值排序后进行对比。
  • 二次确认对比:在对比过程中,由于 DMHS 同步的时间差,第一次对比会存在不一致,因此需要针对第一次对比的结果,再次进行第二次确认对比,确定 DMHS 同步是否存在延迟或失败。
  • 快速对比:仅仅对表进行记录行数的对比。
  • 锁表动态对比:动态对比的一种,通过锁表控制源表与 DMHS 同步数据一致。
  • 闪回查询动态对比:动态对比的一种,通过闪回查询直接取得某 SCN 的结果集,仅仅适用 Oracle 库中不包 含 LONG, LONG RAW 类型的表。

三、查看链路延迟信息

在对比修复前需要检查该链路是否正常同步,排除因延迟导致对比不一致的情况。在源端控制台输入cpt或者目的端输入exec即可查看,重点数据库状态和检查点时间、日志时间。

在同步链路目的端控制台,输入lag可以查看表延迟情况。

存在延迟情况时,在源端和目的端日志进行排查,搜索关键字ERROR进行查看。

四、执行对比

DMHS对比工具由三部分组成:源端AGENT服务器目的端AGENT服务器VERI对比进程。每次对比都会启动一个VERI对比进程,对比完成后自动退出,并生成对比报告。

对数据不一致的情况不做任何操作,仅仅提示用户发生了数据不一致情况。AGENT、VERI和相关产品手册于DMHS完整安装包可以找到,AGENT和VERI位于bin目录中,操作时复制三个bin目录,用来启动AGENG、VERI进程

1、AGENT配置:

目的端AGENT服务器与源端AGENT服务器相互独立,可以部署在同一台机器上,也可以部署在不同机器,这里分开部署,源端AGENT部署在源dmhs上,目的端AGENT部署在目的端dmhs上,配置完记得启动服务。

1.1、目的端配置(192.168.52.26)可参考如下:

su - dmdba
cd /dm8/dmhs
cp -r bin dest-agent
cd dest-agent
vim agent.xml
<?xmlversion="1.0" encoding="utf-8" standalone="no"?>
<agent><port>5347</port><lang>en</lang><mode>0</mode><max_session>25</max_session><worker_thr>4</worker_thr><max_buf_size>1024</max_buf_size><database><server>192.168.52.26</server><uid>APP</uid> <psw>Dameng123</psw><port>5236</port><type>DM8</type></database>
</agent>

注意:这一点内容复制时候,一定要保证格式的正确;不然启动服务会出现下图报错

启动服务

./dmhs_veri_agent_dm8 agent.xml

格式正确后的成功示例:

1.2、源端配置(192.168.52.25)可参考如下:

su - dmdba
cd /dm8/dmhs
cp -r bin source-agent
cd source-agent
vim agent.xml
<?xmlversion="1.0" encoding="utf-8" standalone="no"?>
<agent><port>5347</port><lang>en</lang><mode>0</mode><max_session>25</max_session><worker_thr>4</worker_thr><max_buf_size>1024</max_buf_size><database><server>192.168.52.25</server><uid>APP</uid><psw>Dameng123</psw><port>5236</port><type>DM8</type></database>
</agent>

注意:这一点内容复制时候,一定要保证格式的正确;不然启动服务会出现下图报错

1.3、启动服务

./dmhs_veri_agent_dm8 agent.xml

2、veri配置(192.168.52.25):

在源端和目的端AGENT服务器部署成功后,还需要部署VERI。部署VERI时,需要配置unixODBC,其次,需要配置veri.xml文件,要求该文件放在dmhs_veri执行文件的工作目录下,注意不要在生产服务器上部署VERI以及业务高峰期进行对比操作(在第三台机器上去对比)。

2.1、部署ODBC:

参考文档:《ODBC连接DM数据库》

2.2、配置veri:

su - dmdba
cd /dm8/dmhs
cp -r bin veri
cd veri
vim veri.xml
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<veri><lang>en</lang><max_thr>2</max_thr><src><agent_server>192.168.52.25</agent_server><port>5347</port><db_type>DM8</db_type><odbc_str><db_server>192.168.52.25</db_server><db_port>5236</db_port><db_user>APP</db_user><db_pwd>Dameng123</db_pwd></odbc_str></src><dest><agent_server>192.168.52.26</agent_server><port>5347</port><db_type>DM8</db_type><odbc_str><db_server>192.168.52.26</db_server><db_port>5236</db_port><db_user>APP</db_user><db_pwd>Dameng123</db_pwd></odbc_str></dest>
</veri>

代码解析

2.3、配置对比文件,对比文件名字为job_all.xml

vim job_all.xml
<?xml version="1.0" encoding="utf-8"?>
<job><name>dmhs_job_crt_2025042218</name><table_list><table_info><table_name>APP.STUDENTS==APP.STUDENTS</table_name></table_info></table_list>
</job>

2.4、启动服务

快速对比(只统计数据量)
./dmhs_veri jobfile=job_all.xml mode=fast
普通对比(一般采用该方法对比,遇到数据变动比较大的表,单独进行对比)
./dmhs_veri jobfile=job_all.xml mode=normal
动态对比(会锁表,除非业务允许)
./dmhs_veri jobfile=job_all.xml mode=dyn待对比结束后,查看对比记录结果即可。

五、执行对比时出现常见报错:

如果执行对比的时候遇到这个报错:./dmhs_veri: error while loading shared libraries: libodbc.so.1: cannot open shared object file: No such file or directory

1、报错解决:

1.1、查找名字为 libodbc.so.1

find / -name "libodbc.so.1"          

找到的文件一般在/usr/local/lib目录下

1.2、配置环境变量:

su - dmdba

vim ~/.bash_profile

追加

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

重载环境变量:

source ~/.bash_profile

1.3、再次启动;

cd /dm8/dmhs/veri快速对比(只统计数据量)
./dmhs_veri jobfile=job_all.xml mode=fast
普通对比(一般采用该方法对比,遇到数据变动比较大的表,单独进行对比)
./dmhs_veri jobfile=job_all.xml mode=normal
动态对比(会锁表,除非业务允许)
./dmhs_veri jobfile=job_all.xml mode=dyn待对比结束后,查看对比记录结果即可。

1.4、对比记录文件

1.5、查看该 .txt 文件里面内容

cat /dm8/dmhs/veri/report/dmhs_job_crt_2025042218_20250422_001/veri_report_dmhs_job_crt_2025042218.txt

这里对比数据是正确的

2、对比数据不一致,进行修复

当进行数据对比,源端数据和目的端数据不一样时

执行下面的操作进行修复

2.1、上传修复工具压缩包到/opt目录

2.2、解压并移动文件到veri对比工具的执行目录下(root用户操作)

cd /opt
unzip /opt/veri_data_repair_20230926.zip
mv /opt/veri_data_repair/* /dm8/dmhs/veri
chown -R dmdba:dinstall /dm8/dmhs/veri

3、执行命令修复数据,保持源端和目的端数据一致

su - dmdba

cd /dm8/dmhs/veri

java -jar veri_data_repair.jar veri.xml job_all.xml /dm8/dmhs/veri/report/dmhs_job_crt_2025042218_20250516_001/detail_dmhs_job_crt_2025042218

# veri_data_repair.jar修复工具

# veri.xml是veri的配置文件

# job_all.xml 是对比文件

# /dm8/dmhs/veri/report/dmhs_job_crt_20240702_20240705_005/detail_dmhs_job_crt_20240702是对比报告,由veri对比工具生成的

java -jar veri_data_repair.jar veri.xml job_all.xml /dm8/dmhs/veri/report/dmhs_job_crt_2025042218_20250516_001/detail_dmhs_job_crt_2025042218

4、修复成功后,去查看源端和目的端的数据是否已经一致,或者再次使用veri对比工具去对比,看看是否一致。

4.1、再次对比

./dmhs_veri jobfile=job_all.xml mode=normal

4.2、查看文件

cat /dm8/dmhs/veri/report/dmhs_job_crt_2025042218_20250516_002/veri_report_dmhs_job_crt_2025042218.txt

达梦数据库社区地址:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台 

相关文章:

  • 3.3.2 纠错编码(海明校验码)
  • 板凳-------Mysql cookbook学习 (十--5)
  • 鸿蒙Next仓颉语言开发实战教程:订单列表
  • Spring Cloud与Alibaba微服务架构全解析
  • Android GreenDAO 通过 Key 查询数据库数据慢问题优化
  • 力扣hot100--反转链表
  • 多线程应用
  • 详细解释aruco::markdetection _detectInitialCandidates函数
  • Java八股文——Spring「MyBatis篇」
  • Linux开发工具之VsCode(Filezila、MobaXterm、Vim三合一)
  • git的常用方法
  • 【Unity优化】提高热更新和打包速度
  • 架空线路智能监控系统的应用与优势剖析
  • Android Studio 无法安装HAXM,点击之后无反应
  • Vue-Typed-JS打字动画效果
  • C#.Net 使用NPOI库导出Excel(含列宽度自适应) 及 根据Excel文件生成DataTable
  • c#实现绝对路径和相对路径的转换
  • 【网络】每天掌握一个Linux命令 - netperf
  • 【题解-洛谷】P2935 [USACO09JAN] Best Spot S
  • 2025年5月一区SCI-状态优化算法Status-based Optimization-附Matlab免费代码
  • 象客企业网站做优化排名/厦门网站推广费用
  • 浙江台州做网站的公司有哪些/关键词优化公司推荐
  • 做影视网站存储视频会侵权吗/新网站seo
  • 如何做好网站推广优化/我赢网seo优化网站
  • 外贸网站建设哪家比较好/微信搜一搜怎么做推广
  • 济南网站建设有限公司/公众号排名优化