首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

三分钟DMHS速知

本文旨在快速介绍DMHS相关基础,避免项目应急时翻看繁重手册,对DMHS有一个快速系统的理解和认识。

(1)DMHS能干什么

DMHS主要有两种功能: 数据装载(copy) 和数据实时同步。 copy功能可以做类似DTS工具的事情,可以迁移表结构、外键约束、check约束、索引。在部署DMHS时,如果源端数据库一直运行,则需要用DMHS进行初始数据迁移。至于表结构迁移可以使用 DMHS、DTS或者直接使用脚本在目的库创建。

(2)DMHS软件目录结构

当你使用“xxx.bin”后缀为bin的安装包(Linux环境)安装完成DMHS软件以后,会有如下目录:

[root@RedHatEL60x-001 faban08]# ls

bin bin2 doc include install install.log jdk lib log samples scripts uninst.sh web

其中你一般使用的是bin目录下面的执行文件,这个目录下是dmhs的release版本。bin2目录则是debug版本,当出现问题需要调试时,开发一般会让你使用bin2目录去重现问题,便于调试。你可能还需要使用的目录有doc,下面存放有手册,如果你不熟悉DMHS,估计看手册得花费较多时间。scripts目录存放有DDL同步需要的脚本;当你需要使用DMHS 的web界面控制台的时候,web目录就发挥作用了。

所以一般你需要主意这样一个目录 xxx/dmhs/bin

(3)DMHS配置文件

DM7有配置文件dm.ini, DMHS有配置文件dmhs.hs,在哪里? 就是上面的xxx/dmhs/bin下面了。

(4)DMHS怎么启动

关于DMHS部署在此不详述,总体分为安装程序,设置环境变量,编辑配置文件即可。部署完成以后,怎么启动?

在bin目录下有个dmhs_server的程序,执行这个程序就可以启动DMHS管理进程。还有一个dmhs_serverd,注意看多了一个d,是一个shell脚本,用来进行后台启动dmhs_server程序。

刚接触DMHS对于dmhs启动一般存在如下困惑: 不像DM7数据库,执行dmserver后,数据库就运行起来了。当你第一次执行dmhs_server时,是不是同步就开始运行了? 当然没有!!!

执行dmhs_server后,相当于你启动了main主程序,系统做了一些初始化的工作,比如加载配置文件参数到内存中,系统初始化工作,开启监听线程准备接受新连接等等工作。这个时候源端并没有去分析日志,目的端启动的也没有去执行同步。那怎么同步呢? 需要等待你发送同步命令! 什么命令? start exec 和start cpt。

从命令名字理解,startexec就是启动执行,start cpt就是启动捕获capture。所以你在第一次执行dmhs_server后,需要去连接这个管理进程,然后给他发同步命令。怎么连接? 看见bin目录下还有一个dmhs_console了吧,控制台!

利用这个控制台来输入命令。 控制台怎么用?

启动dmhs_console之后,就要进行连接管理进程,输入connect命令。好了,你连接成功了,然后就可以给管理进程发送同步命令了。一般先在执行端发送start exec命令,然后再在源端发送start cpt命令。

管理进程再收到这个命令后,当然不是由它去做工作了,它会创建工作线程去做工作的,对的,你应该知道有这么一个函数的 pthread_create ,就是让它去干这事的。也就是startcpt会创建一个分析线程去分析日志,start exec会创建执行线程,去做执行了。至此,才真正算是启动同步的。

还有一个问题,为什么有时候你启动dmhs_server后,发现它运行起来了,是的,运行起来了,不是要等你发送同步命令么?

这是因为,当你第一发送startcpt成功后,bin目录下会创建一个dmhs_cpt.tmp的东西,这个东西没有内容,大小为0。主要用做标记用。当你第一次发送start exec成功后,bin目录会创建一个dmhs_exec.tmp的东西,道理一样。 搞这个东西干嘛? 当你启动dmhs_server时,main函数里面就会判断了,当前有没有这两个tmp文件,如果有,它就不需要你发同步命令了,自己就创建相应线程了。如果没有,还是需要等你发送命令的。

当然,有创建就有删除。如果你使用stop exec或者stop cpt成功的话,就会自动删除这两个tmp文件。如果你是直接kill进程或者dmhs中途自己core了,那这两个文件就没有删除了

(5)DMHS装载

当你初次接触DMHS,应该对装载和同步会感到模糊。 这两个功能是互斥的,意思是你在同步的时候,就不能装载了。装载的时候,同步肯定也没进行。上面讲了,要同步,目的端就要先start exec,源端要start cpt。那我现在要装载,怎么弄? 先停cpt!!! 在源端执行stop cpt,然后执行copy。注意,这个时候目的执行要一直 运行的。执行要运行,不是说dmhs_server在运行,记得是start exec开启的执行线程运行!!! 怎么看? 在目的端用state命令看,会提示你“执行模块在运行”。

装载完成以后,可以启动cpt进行同步。装载命令在此不详述,感兴趣看手册。

(6)DMHS版本问题

DMHS支持多种源端数据库,所以有多种不同版本。需要注意DM7单机和DM7RAC可以共用版本,但是ORACLE单机和ORACLE RAC版本不一致。另外,不同数据库不要混用,不要把DM7的版本用到ORACLE数据库中。申请版本时明确告知数据库类型,操作系统类型位数。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180112A0KM7I00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券