本文旨在快速介绍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数据库中。申请版本时明确告知数据库类型,操作系统类型位数。
上海腾科教育科技有限公司聚焦ICT人才培养和教育服务、培养数字化时代的新型ICT人才、促进良性的ICT人才生态发展,提供面授教育、在线教育、IT人才培养与就业、高校专业共建与实验室建设、企业人才定制培养,以及教育科技领域内的技术开发、咨询、服务以及解决方案,专注高校ICT课程课件研发、基于华为公有云的云实验实训平台建设,致力于ICT技术在高等院校的引进、开发和推广,是一家全国性的专业ICT行业技术认证服务公司。
腾科教育是华为授权的培训合作伙伴,专业提供华为ICT技术架构认证、平台与服务认证、行业服务认证等华为职业认证服务,连续多年荣获华为年度最佳合作伙伴贡献奖、华为优秀战略合作伙伴、上海HCIE精英俱乐部伙伴,连续多年举办腾科技术嘉年华华为专场,并协办华为ICT大赛、华为生态伙伴精英赛伙伴赛分赛场、华为人才双选会上海场等活动和赛事,提供面向华为生态合作伙伴和ICT学员的人才供需双选平台及ICT学员就业通道,培养ICT行业所需创新型、融合型人才。