首页 > 数据库 > 国内数据库 > 达梦DMHS对比工具
在同构/ 异构数据库之间进行实时同步的时候,需要了解同步的结果是否正确,因此需要有数据对比工具进行数据的对比,并生成详细的对比报告,提供用户参考。对比工具仅仅生成报告,对数据不一致的情况不做任何操作,仅仅提示用户发生了数据不一致情况,并且告诉用户那些数据不一致。
目前对比工具支持的功能有:
1. 支持同构数据库与同构/ 异构数据库之间单表对比、模式下所有表的数据对比。
2. 支持ORACLE 、 DM 、 DB2 、 MySQL 、 PostgreSQL 等数据库。
3. 支持 row_partition( 行分区 ) 方式选取表中部分数据进行对比。
4. 支持对象定义对比。
5. 支持多种对比方式。
6. 支持键值对比(含主键或唯一索引)、非键值对比(计算行记录 MD5 值)
7. 支持 xml 配置自动对比任务。
系统统主要分为对比代理服务和对比校验进程。
对比代理服务分源对比代理服务和目的对比代理服务。对比代理服务的作用是从数据服
务器取得数据记录,并取得数据记录的 MD5 值发送到对比校验进程进行校验。对比校验进程对数据进行比对后,直接访问源数据库服务器和目的数据库服务器,生成详细的对比报告。
1. AGENT 服务
对比工具代理服务,主要用作数据获取,并计算行数据的MD5 ,发送给对比模块。
2. VERI 进程
对比校验进程,主要进行模式下对象对比,数据对比,并且生成对比报告。
DMHS 对比工具的运行原理:通过 agent.xml 配置数据库连接信息,启动服务后调用 oci 接口进行数据库访问,利用 VERI 对比校验进程对指定的模式下的对象对比、数据对比,从而生成数据对比报告:总体报告和详细报告。
DMHS 对比工具支持多种对比方式,包括静态对比、动态对比、快速对比、二次确认对比等对比方式,按照是否使用键值对比分为:键值对比和非键值对比;
1. 静态对比
单独启动DMHS 工具进行对比,不需要 DMHS 同步软件协同。
2. 动态对比
对比工具与 DMHS 协同工作,保证源表与目的表都是执行完相同事务后对查询结果集进行对比。动态对比按照对比表之间是否存在关联分为:普通对比和组表对比,前者表示表之间的对比没有关联,相互独立;后者表示表之间存在关联,如外键引用,对比时关联表会在相同的 SCN 下比较。组表对比只支持源代理数据库为 Oracle 的情况 , 且不支持 LONG 和 LONGRAW 数据类型。
动态对比按照执行方式不同分为:锁表动态对比和闪回查询动态对比。普通对比可以使
用其中任意一种执行方式,组表对比只能使用闪回查询动态对比。在不支持闪回查询的数据库对比中,默认使用锁表动态对比。
3. 快速对比
不需要DMHS 软件协同,仅仅对表进行记录行数的对比。
4. 二次确认对比
需要DMHS 同步软件协同, 在对比过程中,由于 DMHS 同步的时间差,第一次对比会存在不一致,因此需要针对第一次对比的结果,再次进行第二次确认对比,确定 DMHS 同步是否存在延迟或失败。 同时二次确认对比只支持主键表。
对比工具支持单独部署和配合DMHS 同步软件进行部署。单独部署 DMHS 对比工具目前只支持静态对比、快速对比两种对比方式。
1. 内存需求
DMHS 对比工具需要的内存总量取决于执行的分析线程以及执行线程的并发数,最少需要 1GB 内存。
2. 磁盘需求
DMHS 对比工具安装文件占用 277MB ,包括了管理工具以及管理界面占用的空间,另外需要一些额外的空间存储 DMHS 对比工具运行的日志文件和报告生成,以及非键值对比排序生成的中间文件。
1. Windows 系列操作系统
Windows 2003 、 Windows XP 、 Windows 7 及以上。
2. Linux 系列操作系统
各种主流的 Linux 操作系统(如 Redhat 、 Kylin 等)。
数据库支持 ORACLE 、 DM 、 DB2 、 MySQL 、 PostgreSQL 等数据库。
1. TCP/IP 配置
系统支持 TCP/IP 服务 ( 对比工具安装的所在机器必须配置主机名或者 IP 地址 ) , DMHS 对比工具的校验进程( DMHS_VERI 进程)需要使用未预留的 TCP/IP 端口,默认使用 5347 ,可以配置使用其他端口。
2. 操作系统权限
在 Windows 安装时,安装和执行 DMHS_VERI 和 DMHS_VERI_AGENT 的用户必须是管理员身份。
在 UNIX 环境下安装,安装用户必须有权限读写 DMHS 对比工具安装目录,将涉及的数据库接口动态库添加到系统共享库环境变量中。
以下部署工作以Oracle-Oracle 数据库对比为例子进行 DMHS 对比工具部署;
需要声明的是,只有在校验进程 dmhs_veri 运行的机器才需要安装并配置 unixODBC ,且 unixODBC 版本需要使用 2.3.0 及以上的版本。获取 unixODBC-2.3.0.tar.gz 后执行以下命令,并 配置 unixODBC 的 odbc.ini 和 odbcinst.ini 文件。
|
[root@localhost ~]# tar -xzvf unixODBC-2.3.0.tar.gz [root@localhost ~]# cd unixODBC-2.3.0 / [root@localhost ~]# ,./configure [root@localhost ~]# make |
在 oracle 根目录下 .bash_profile 中添加如下两行:
|
[root@localhost ~]# vi ~/.bash_profile #~/.bash_profile export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:$ORACLE_HOME/lib [root@localhost ~]# source ~/.bash_profile |
执行lsnrctl status ,确保 listener.ora 文件中 HOST 参数与当前机器 hostname 或IP 地址保持一致。
以root 用户进入到 /usr/local/etc 文件夹下,编辑如下文件 odbcinst.ini ,其中 Driver 为 oracle 的 libsqora.so .11 . 1 文件的路径 (以Oracle 11G 为例) 。
|
[root@localhost ~]# cat / usr/local/etc / odbcinst.ini [Oracle in OraDb11g_home1] Description = ODBC DRIVER FOR ORACLE Driver = /u01/oracle/lib/libsqora.so.11.1 threading = 0 |
配置 odbcinst.ini ,继续配置odbc.ini 文件。
|
[root@localhost ~]# cat / usr/local/etc / odbc.ini [ORCL] Description = ORACLE ODBC DSN Driver = Oracle in OraDb11g_home1 SERVERNAME=orcl UID = dmhs PWD = dmhs PORT = 1521 |
配置完成之后,验证配置是否正确:
|
[root@localhost ~]#cd /usr/local/bin [root@localhost ~]# ./isql orcl dmhs/dmhs -v |
如果 isql 连接成功,则配置成功,如果连接不成功,可以检查如下几处的配置: listener.ora/tnsnames.ora , .bash_profile , /etc/hosts 。其中源库机器的 hosts 文件中应添加源机和目的机器的 ip 以及其对应主机名。
1. 操作系统权限
Linux 平台下, Oracle 对应的版本 AGENT 需要使用和 Oracle 用户同组的用户执行 AGENT 程序。文件要有可执行权限,并且文件夹的用户组为 Oracle 用户所在的组相同。例如: 操作系统用户为dmdba , 需要给予Oracle 同组 oinstall 全西安, 则需要执行:
|
[root@localhost ~]#useradd -g o install –m –d /home/dmdba -s /bin/bash dmdba |
2. 数据库权限
在进行对比的之前,如果用户不是 DBA 用户,则需要对该用户进行对象授权,以 “ DMHS ” 用户为例:
|
grant select on all_tables to TEST; grant select on dba_cons_columns to TEST; grant select on dba_tab_columns to TEST; grant select on dba_constraints to TEST; |
# 注:上述权限仅限用于静态对比、快速对比使用,如其他对比需要加上相关权限才能进行对比操作。
安装DMHS 对比工具,并配置 agent.xml 代理服务配置文件,执行以下操作:
|
[ dmdba @localhost ~]# cd /dmhs [ dmdba @localhost ~]# unzip dmhs_V3.1.3_rac_rev88888_rh6_64_veri_beta.zip [ dmdba @localhost ~]# cd bin [ dmdba @localhost ~]# vi agent.xml ####################### 把以下内容粘贴进去 ############################ <?xml version="1.0" encoding="utf-8"?> <agent> <port>5347</port> <lang>ch</lang> <max_session>100</max_session> <database> <type>Oracle11g</type> <server>orcl</server> <uid> DMHS </uid> <psw> DMHS </psw> </database> </agent> ################### 配置完成后启动 agent 代理服务 ####################### [ dmdba @localhost ~]# ./dmhs_veri_agent_ora |
在源端服务器上配置veri.xml 配置文件,执行以下操作:
|
[ dmdba @localhost ~]# cd /dmhs/bin [ dmdba @localhost ~]# vi veri.xml ####################### 把以下内容粘贴进去 ############################ <?xml version="1.0" encoding="utf-8"?> <veri> <lang>ch</lang> <max_thr>40</max_thr> <max_obj_thr>40</max_obj_thr> <src> <agent_server>223.254.19.92</agent_server> <port>5347</port> <db_type>ORACLE11g</db_type> <odbc_str> <dsn> orcl </dsn> <db_user> DMHS </db_user> <db_pwd> DMHS </db_pwd> </odbc_str> </src> <dest> <agent_server>223.254.19.92</agent_server> <port>5348</port> <db_type>ORACLE11g</db_type> <odbc_str> <dsn> orcl </dsn> <db_user> DMHS </db_user> <db_pwd> DMHS </db_pwd> </odbc_str> </dest> </veri> ################### 配置完成后启动 VERI 对比服务 ####################### [ dmdba @localhost ~]#./dmhs_veri “table=( DMHS .*== DMHS .*)” mode=NORMAL |FAST |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69975816/viewspace-2694734/ ,如需转载,请注明出处,否则将追究法律责任。