达梦数据库 | 教程 | 7.DMHS: Install on CentOS7
说明
DMHS:Heterogeneous database Synchronization for DM
达梦数据同步软件是达梦推出的支持异构环境的高性能、高可靠、高扩展的数据库实时同步工具,它类似于Oracle数据库生态中的工具:Oracle Golden Gate。
DMHS可以做到:
- 跨多种软硬件平台
- 支持强大而灵活的拓扑结构
- 能以极少的系统开销实现秒级数据实时同步
DMHS的场景:
- 应急系统
- 容灾备份
- 负载均衡
- 数据移植
- 联机维护
- 订阅分发
- 多业务中心
- … 等业务领域
相比于传统的系统,DMHS的优势:
- 通过秒级数据实时同步可以有效避免传统备份系统导致的无法完全满足企业对于信息系统不中断服务的问题
- 通过变化日志捕捉可以有效的降低传统的ETL工具因为创建触发器、影子表等对业务系统带来的性能影响
- 通过可读写的备机数据库系统可以解决传统备机系统仅仅作为后备,而无法对外提供数据服务的问题
DMHS的技术示意图:

DMHS – 产品特点:
- 体系结构高可扩展
- 确保业务系统高可用
- 高效的数据实时同步
- 高可靠的数据传输
- 可读写的备机系统
- 数据同步内容可定制
- 轻量级涉及实现快速部署
- 跨平台软硬件支持
DMHS:安装介质
DMHS的安装介质无法在公共网络上获取,官网网站(dameng.com 与 eco.dameng.com)无法下载,如果希望获取DMHS的安装介质,可以联系达梦公司的官方销售。
这里,我将拿到的安装介质上传目标服务器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
[root@node1 dameng]# pwd /software/dameng [root@node1 dameng]# [root@node1 dameng]# ls -ltr total 648680 -rwxr-xr-x 1 6000 5000 664240128 Jul 1 20:23 dm8_20200907_x86_rh7_64_ent_8.1.1.126.iso -rwxr-xr-x 1 6000 5000 6039 Jul 1 20:23 dmdbms_install_on_rhel7.xml [root@node1 dameng]# [root@node1 dameng]# rz rz waiting to receive. Starting zmodem transfer. Press Ctrl+C to cancel. Transferring dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin... 100% 461418 KB 51268 KB/sec 00:00:09 0 Errors [root@node1 dameng]# [root@node1 dameng]# ls -ltr total 1110100 -rwxr-xr-x 1 6000 5000 664240128 Jul 1 20:23 dm8_20200907_x86_rh7_64_ent_8.1.1.126.iso -rwxr-xr-x 1 6000 5000 6039 Jul 1 20:23 dmdbms_install_on_rhel7.xml -rw-r--r-- 1 root root 472492063 Jul 20 00:08 dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin [root@node1 dameng]# [root@node1 dameng]# du -sh * 634M dm8_20200907_x86_rh7_64_ent_8.1.1.126.iso 8.0K dmdbms_install_on_rhel7.xml 451M dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin [root@node1 dameng]# [root@node1 dameng]# id dmdba uid=5000(dmdba) gid=4000(dinstall) groups=4000(dinstall) [root@node1 dameng]# [root@node1 dameng]# chown -R dmdba.dinstall /software/dameng/ [root@node1 dameng]# [root@node1 dameng]# ls -ltr total 1110100 -rwxr-xr-x 1 dmdba dinstall 664240128 Jul 1 20:23 dm8_20200907_x86_rh7_64_ent_8.1.1.126.iso -rwxr-xr-x 1 dmdba dinstall 6039 Jul 1 20:23 dmdbms_install_on_rhel7.xml -rw-r--r-- 1 dmdba dinstall 472492063 Jul 20 00:08 dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin [root@node1 dameng]# |
可以看到,DMHS的安装介质【dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin】大小:451MB
DMHS:安装
创建DMHS的按照安装目录:
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@node1 dameng]# mkdir /opt/dmhs [root@node1 dameng]# chown -R dmdba.dinstall /opt/dmhs/ [root@node1 dameng]# [root@node1 dameng]# ls -ltr /opt/ total 0 drwxr-xr-x. 2 root root 6 Oct 30 2018 rh drwxr-xr-x 16 dmdba dinstall 251 Jul 14 19:46 dmdbms drwxr-xr-x 2 dmdba dinstall 6 Jul 20 00:35 dmhs [root@node1 dameng]# [root@node1 dameng]# ls -ltr /opt/dmhs/ total 0 [root@node1 dameng]# |
DMHS的安装介质是没有静默的安装方式的,因此只能通过图形化的交互式方式安装;
如果无法运行图形化窗口,那么可以使用选项【-i】,以命令行的交互方式执行:
1 |
./dmhs_xxxxx.bin -i |
这是我在另外的节点上用命令行的方式安装的,大概的过程如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
[dmdba@node2 dameng]$ pwd /software/dameng [dmdba@node2 dameng]$ [dmdba@node2 dameng]$ ls -ltr total 1110100 -rwxr-xr-x 1 dmdba dinstall 664240128 Jul 2 19:23 dm8_20200907_x86_rh7_64_ent_8.1.1.126.iso -rwxr-xr-x 1 dmdba dinstall 6039 Jul 2 19:23 dmdbms_install_on_rhel7.xml -rw-r--r-- 1 dmdba dinstall 472492063 Jul 20 15:08 dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin [dmdba@node2 dameng]$ [dmdba@node2 dameng]$ chmod 755 dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin [dmdba@node2 dameng]$ [dmdba@node2 dameng]$ ls -ltr total 1110100 -rwxr-xr-x 1 dmdba dinstall 664240128 Jul 2 19:23 dm8_20200907_x86_rh7_64_ent_8.1.1.126.iso -rwxr-xr-x 1 dmdba dinstall 6039 Jul 2 19:23 dmdbms_install_on_rhel7.xml -rwxr-xr-x 1 dmdba dinstall 472492063 Jul 20 15:08 dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin [dmdba@node2 dameng]$ [dmdba@node2 dameng]$ ./dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin -i Extract install files.......... 1.English(English) 2.Simplified Chinese(简体中文) Select the language to install[2.Simplified Chinese(简体中文)]:1 /tmp/DMHSInstall/install.log 1.Welcome to free trial DMHS 2.Enter the license key file Verify the license key file[1.Welcome to free trial DMHS]: 1.Lite Edition 2.Full Edition (Web Service) 3.Custom Edition Install type[1.Lite Edition]:2 1.DMHS Server 2.DMHS Agent 3.DMHS Web Manager 4.Build In Database 5.DMHS Configuration Assitant 6.Manual Space required:843 MB Destination Folder:[/home/dmdba/dmhs]/opt/dmhs Please select the correct folder path...[Y or N]Y The path maybe exist 1.Unify Deploy 2.Now init Init Dmhs[1.Unify Deploy]: Installing... default start ... default finished. server start ... server finished. hs_agent start ... hs_agent finished. webmanager start ... webmanager finished. db start ... db finished. hsca start ... hsca finished. doc start ... doc finished. doc start ... doc finished. postinstall start ... postinstall finished. Creating shortcuts... The installation was successful DMHS Agent config name[HsAgent]: server_ip[192.168.117.12](192.168.117.12,192.168.232.12):192.168.232.12 lsn_port[5456](1000-65535): status_interval[3](1-60): status_server[192.168.117.12]:192.168.232.12 status_port[15236]: status_user[SYSDBA]: status_pwd[SYSDBA]: Service script configuration Dependent library path tip:This configuration item is for users to confiure the source or destination database path and the ODBC dependent library path.Multiple paths are separated by ":"(for example:/opt/dmdbms/bin:/usr/local/lib).This configuration item whill added to the variable value of NEED_LIB_PATH in the service script. Please configure the dependent library path: Built-in database Service 1.Automatic 2.Demand Start type:[2.Demand]2 Installing web Service DMHSV4.0Install Finish For more information,see the install log file: /opt/dmhs/log/install.log [dmdba@node2 dameng]$ [dmdba@node2 dameng]$ cd /opt/dmhs [dmdba@node2 dmhs]$ ls -ltr total 28 drwxr-xr-x 2 dmdba dinstall 25 Jul 20 16:55 log drwxr-xr-x 3 dmdba dinstall 36 Jul 20 16:55 install -rwxr-xr-x 1 dmdba dinstall 862 Jul 20 16:55 uninst.sh drwxr-xr-x 8 dmdba dinstall 218 Jul 20 16:55 jdk drwxr-xr-x 2 dmdba dinstall 26 Jul 20 16:55 JAPI drwxr-xr-x 3 dmdba dinstall 19 Jul 20 16:55 desktop -rwxr-xr-x 1 dmdba dinstall 6 Jul 20 16:55 version.txt drwxr-xr-x 3 dmdba dinstall 300 Jul 20 16:55 scripts -rwxr-xr-x 1 dmdba dinstall 1194 Jul 20 16:55 license.txt -rwxr-xr-x 1 dmdba dinstall 1315 Jul 20 16:55 license_en.txt drwxr-xr-x 4 dmdba dinstall 4096 Jul 20 16:55 bin drwxr-xr-x 4 dmdba dinstall 4096 Jul 20 16:55 bin2 drwxr-xr-x 2 dmdba dinstall 6 Jul 20 16:55 include drwxr-xr-x 10 dmdba dinstall 232 Jul 20 16:55 web drwxr-xr-x 5 dmdba dinstall 40 Jul 20 16:55 db drwxr-xr-x 5 dmdba dinstall 144 Jul 20 16:55 tool drwxr-xr-x 2 dmdba dinstall 195 Jul 20 16:55 doc drwxr-xr-x 2 dmdba dinstall 147 Jul 20 16:55 samples drwxr-xr-x 2 dmdba dinstall 4096 Jul 20 16:56 hs_agent [dmdba@node2 dmhs]$ |
进入Linux用户dmdba,然后执行DMHS的安装:






这里需要注意:
如果前面没有创建目标路径,并且目标路径的权限不正确。
那么这一步会报错。


等待安装结束。

这一步是可选的,这一步是添加数据库的ODBC驱动。
配置DMHS的Agent:

注意:
1. status_server – 指定DMHS内置数据库的IP地址;在一套DMHS的架构中,该地址在不同的节点之间,应该配置为一样的;只有一套DMHS架构中的内置数据库IP设置为了一样的,目标节点才可以被DMHS管理到,否则可能DMHS中会缺失节点。
如果安装好了DMHS,希望修改DMHS Agent的配置,那么需要修改:DMHS安装目录下的hs_agent目录中的文件:dmhs_agent.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[dmdba@node2 hs_agent]$ pwd /opt/dmhs/hs_agent [dmdba@node2 hs_agent]$ [dmdba@node2 hs_agent]$ ls -ltr | grep dmhs_agent.xml -rw-r--r-- 1 dmdba dinstall 453 Jul 20 16:55 dmhs_agent.xml [dmdba@node2 hs_agent]$ [dmdba@node1 hs_agent]$ cat dmhs_agent.xml <?xml version="1.0" encoding="GB2312"?> <hs_agent> <name>HsAgent</name> <lang>ch</lang> <server_ip>192.168.117.11</server_ip> <lsn_port>5456</lsn_port> <status_interval>3</status_interval> <status_server>192.168.117.11</status_server> <status_port>15236</status_port> <status_user>SYSDBA</status_user> <status_pwd>SYSDBA</status_pwd> <dmhs_support>1</dmhs_support> <veri_support>1</veri_support> </hs_agent> [dmdba@node1 hs_agent]$ |
然后重启服务【DmhsAgentServiceHsAgent】,即可应用变更。
接下来配置Service:





这样,DMHS就安装完成了。
安装完成后,看看安装目录中的状态:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
[root@node1 ~]# cd /opt/dmhs/ [root@node1 dmhs]# [root@node1 dmhs]# ls -ltr total 28 drwxr-xr-x 2 dmdba dinstall 25 Jul 20 00:37 log drwxr-xr-x 3 dmdba dinstall 36 Jul 20 00:37 install -rwxr-xr-x 1 dmdba dinstall 862 Jul 20 00:37 uninst.sh drwxr-xr-x 8 dmdba dinstall 218 Jul 20 00:37 jdk drwxr-xr-x 2 dmdba dinstall 26 Jul 20 00:37 JAPI drwxr-xr-x 3 dmdba dinstall 19 Jul 20 00:37 desktop drwxr-xr-x 3 dmdba dinstall 300 Jul 20 00:37 scripts -rwxr-xr-x 1 dmdba dinstall 6 Jul 20 00:37 version.txt -rwxr-xr-x 1 dmdba dinstall 1194 Jul 20 00:37 license.txt -rwxr-xr-x 1 dmdba dinstall 1315 Jul 20 00:37 license_en.txt drwxr-xr-x 4 dmdba dinstall 4096 Jul 20 00:37 bin drwxr-xr-x 4 dmdba dinstall 4096 Jul 20 00:37 bin2 drwxr-xr-x 2 dmdba dinstall 6 Jul 20 00:37 include drwxr-xr-x 10 dmdba dinstall 232 Jul 20 00:37 web drwxr-xr-x 5 dmdba dinstall 40 Jul 20 00:37 db drwxr-xr-x 7 dmdba dinstall 67 Jul 20 00:38 odbc drwxr-xr-x 5 dmdba dinstall 144 Jul 20 00:38 tool drwxr-xr-x 2 dmdba dinstall 195 Jul 20 00:38 doc drwxr-xr-x 2 dmdba dinstall 147 Jul 20 00:38 samples drwxr-xr-x 2 dmdba dinstall 4096 Jul 20 00:48 hs_agent [root@node1 dmhs]# [root@node1 dmhs]# ls -ltr bin/ total 19456 -rwxr-xr-x 1 dmdba dinstall 757321 Jul 20 00:37 libdmhs_net.so -rwxr-xr-x 1 dmdba dinstall 220215 Jul 20 00:37 veri_xml_crt -rwxr-xr-x 1 dmdba dinstall 52353 Jul 20 00:37 dmhs_guard -rwxr-xr-x 1 dmdba dinstall 582870 Jul 20 00:37 libdmhs_ld_dm8.so -rwxr-xr-x 1 dmdba dinstall 870647 Jul 20 00:37 dmhs_veri -rwxr-xr-x 1 dmdba dinstall 491808 Jul 20 00:37 dmhs_veri_agent_dm8 -rwxr-xr-x 1 dmdba dinstall 33291 Jul 20 00:37 libdmhs_lic_dll.so -rwxr-xr-x 1 dmdba dinstall 3552167 Jul 20 00:37 libdmhs_ucvt.so -rwxr-xr-x 1 dmdba dinstall 303144 Jul 20 00:37 libexec_ins_dm8.so -rwxr-xr-x 1 dmdba dinstall 1147985 Jul 20 00:37 libdmhs_pub.so -rwxr-xr-x 1 dmdba dinstall 399104 Jul 20 00:37 dmhs_console -rwxr-xr-x 1 dmdba dinstall 3631347 Jul 20 00:37 libdmhs_exp.so -rwxr-xr-x 1 dmdba dinstall 8123 Jul 20 00:37 set_log -rwxr-xr-x 1 dmdba dinstall 1074838 Jul 20 00:37 dmhs_server -rwxr-xr-x 1 dmdba dinstall 126274 Jul 20 00:37 libdmhs_dm_obj.so -rwxr-xr-x 1 dmdba dinstall 14425 Jul 20 00:37 TemplateDmhsGuardService -rwxr-xr-x 1 dmdba dinstall 1689660 Jul 20 00:37 libcpt_dm8.so -rwxr-xr-x 1 dmdba dinstall 1024716 Jul 20 00:37 libdmhs_cvt.so -rwxr-xr-x 1 dmdba dinstall 109223 Jul 20 00:37 libdmhs_bool_parse.so -rwxr-xr-x 1 dmdba dinstall 108642 Jul 20 00:37 libdmhs_xml.so -rwxr-xr-x 1 dmdba dinstall 20566 Jul 20 00:37 libdmuts.so -rwxr-xr-x 1 dmdba dinstall 215436 Jul 20 00:37 libdmhs_api.so -rwxr-xr-x 1 dmdba dinstall 3269568 Jul 20 00:37 libdmhs_exec.so -rwxr-xr-x 1 dmdba dinstall 14420 Jul 20 00:37 TemplateDmhsService -rwxr-xr-x 1 dmdba dinstall 16746 Jul 20 00:37 TemplateDmhsGuardServiceHA -rwxr-xr-x 1 dmdba dinstall 86452 Jul 20 00:37 libdmhs_lic.so drwxr-xr-x 2 dmdba dinstall 4096 Jul 20 00:37 stat -rwxr-xr-x 1 dmdba dinstall 29620 Jul 20 00:37 clear_log drwxr-xr-x 2 dmdba dinstall 4096 Jul 20 00:47 service_template [root@node1 dmhs]# |
在前面DMHS的安装过程中,配置了几个服务:
DmServiceHSDB
DmhsWebService
DmhsAgentServiceHsAgent
————————
通常:
1. 内置数据库所在的主机需要开启上面三个服务
2. 一般的DMHS同步的节点主机只需要开启代理服务【DmhsAgentServiceHsAgent】
3. 如果选用的是精简版的安装,通常也会只有代理服务一个选项
服务: DmServiceHSDB
该服务实际上位于DMHS安装目录的db子目录中,它是DMHS内置的数据库服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
[dmdba@node1 ~]$ cd /opt/dmhs/ [dmdba@node1 dmhs]$ ls -ltr total 28 drwxr-xr-x 2 dmdba dinstall 25 Jul 20 00:37 log drwxr-xr-x 3 dmdba dinstall 36 Jul 20 00:37 install -rwxr-xr-x 1 dmdba dinstall 862 Jul 20 00:37 uninst.sh drwxr-xr-x 8 dmdba dinstall 218 Jul 20 00:37 jdk drwxr-xr-x 2 dmdba dinstall 26 Jul 20 00:37 JAPI drwxr-xr-x 3 dmdba dinstall 19 Jul 20 00:37 desktop drwxr-xr-x 3 dmdba dinstall 300 Jul 20 00:37 scripts -rwxr-xr-x 1 dmdba dinstall 6 Jul 20 00:37 version.txt -rwxr-xr-x 1 dmdba dinstall 1194 Jul 20 00:37 license.txt -rwxr-xr-x 1 dmdba dinstall 1315 Jul 20 00:37 license_en.txt drwxr-xr-x 4 dmdba dinstall 4096 Jul 20 00:37 bin drwxr-xr-x 4 dmdba dinstall 4096 Jul 20 00:37 bin2 drwxr-xr-x 2 dmdba dinstall 6 Jul 20 00:37 include drwxr-xr-x 10 dmdba dinstall 232 Jul 20 00:37 web drwxr-xr-x 5 dmdba dinstall 40 Jul 20 00:37 db drwxr-xr-x 7 dmdba dinstall 67 Jul 20 00:38 odbc drwxr-xr-x 5 dmdba dinstall 144 Jul 20 00:38 tool drwxr-xr-x 2 dmdba dinstall 195 Jul 20 00:38 doc drwxr-xr-x 2 dmdba dinstall 147 Jul 20 00:38 samples drwxr-xr-x 2 dmdba dinstall 4096 Jul 20 00:48 hs_agent [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ ls db/bin | grep 'DmServiceHSDB' DmServiceHSDB [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ db/bin/DmServiceHSDB status DmServiceHSDB is stopped [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ db/bin/DmServiceHSDB start Starting DmServiceHSDB: [ OK ] [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ db/bin/DmServiceHSDB status DmServiceHSDB (pid 114977) is running... [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ ps -ef | grep 114977 dmdba 114977 1 0 01:22 pts/8 00:00:00 /opt/dmhs/db/bin/dmserver /opt/dmhs/db/data/DAMENG/dm.ini -noconsole dmdba 115089 114799 0 01:22 pts/8 00:00:00 grep --color=auto 114977 [dmdba@node1 dmhs]$ |
服务: DmhsWebService
这个服务实际上位于DMHS安装目录的web子目录中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[dmdba@node1 dmhs]$ ls web/bin | grep 'DmhsWebService' DmhsWebService [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ web/bin/DmhsWebService status Using CATALINA_BASE: /opt/dmhs/web Using CATALINA_HOME: /opt/dmhs/web Using CATALINA_TMPDIR: /opt/dmhs/web/temp Using JRE_HOME: /opt/dmhs/jdk/jre Using CLASSPATH: /opt/dmhs/web/bin/bootstrap.jar:/opt/dmhs/web/bin/tomcat-juli.jar Using CATALINA_PID: /opt/dmhs/web/bin/pids/DmhsWebService.pid Tomcat stopped. [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ web/bin/DmhsWebService start Using CATALINA_BASE: /opt/dmhs/web Using CATALINA_HOME: /opt/dmhs/web Using CATALINA_TMPDIR: /opt/dmhs/web/temp Using JRE_HOME: /opt/dmhs/jdk/jre Using CLASSPATH: /opt/dmhs/web/bin/bootstrap.jar:/opt/dmhs/web/bin/tomcat-juli.jar Using CATALINA_PID: /opt/dmhs/web/bin/pids/DmhsWebService.pid Tomcat started. [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ web/bin/DmhsWebService status Using CATALINA_BASE: /opt/dmhs/web Using CATALINA_HOME: /opt/dmhs/web Using CATALINA_TMPDIR: /opt/dmhs/web/temp Using JRE_HOME: /opt/dmhs/jdk/jre Using CLASSPATH: /opt/dmhs/web/bin/bootstrap.jar:/opt/dmhs/web/bin/tomcat-juli.jar Using CATALINA_PID: /opt/dmhs/web/bin/pids/DmhsWebService.pid Existing PID file found during start. Tomcat appears to still be running with PID 115110. [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ ps -ef | grep 115110 dmdba 115110 1 61 01:23 pts/8 00:00:11 /opt/dmhs/jdk/jre/bin/java -Djava.util.logging.config.file=/opt/dmhs/web/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m -Djdk.tls.ephemeralDHKeySize=2048 -Dignore.endorsed.dirs= -classpath /opt/dmhs/web/bin/bootstrap.jar:/opt/dmhs/web/bin/tomcat-juli.jar -Dcatalina.base=/opt/dmhs/web -Dcatalina.home=/opt/dmhs/web -Djava.io.tmpdir=/opt/dmhs/web/temp org.apache.catalina.startup.Bootstrap start dmdba 115181 114799 0 01:24 pts/8 00:00:00 grep --color=auto 115110 [dmdba@node1 dmhs]$ |
这个时候观察端口会发现WEB端口8080已经被监听了:
1 2 3 4 |
[root@node1 ~]# netstat -tupln | grep 115110 tcp6 0 0 :::8080 :::* LISTEN 115110/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 115110/java [root@node1 ~]# |
服务: DmhsAgentServiceHsAgent
该服务是DMHS的代理服务,位于DMHS安装目录的hs_agent子目录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
[dmdba@node1 dmhs]$ pwd /opt/dmhs [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ ls -ltr hs_agent/ total 31352 -rwxr-xr-x 1 dmdba dinstall 516095 Jul 20 00:37 libssl.so -rwxr-xr-x 1 dmdba dinstall 49733 Jul 20 00:37 libdmmem.so -rwxr-xr-x 1 dmdba dinstall 86452 Jul 20 00:37 libdmhs_lic.so -rwxr-xr-x 1 dmdba dinstall 207484 Jul 20 00:37 libdmbcast.so -rwxr-xr-x 1 dmdba dinstall 619722 Jul 20 00:37 libdmcfg.so -rwxr-xr-x 1 dmdba dinstall 148733 Jul 20 00:37 libdmos.so -rwxr-xr-x 1 dmdba dinstall 52895 Jul 20 00:37 libdmutl.so -rwxr-xr-x 1 dmdba dinstall 152706 Jul 20 00:37 libdmcomm.so -rwxr-xr-x 1 dmdba dinstall 26805 Jul 20 00:37 libdmfldr_dll_java.so -rwxr-xr-x 1 dmdba dinstall 1243956 Jul 20 00:37 dmhs_agent -rwxr-xr-x 1 dmdba dinstall 374094 Jul 20 00:37 libdmcalc.so -rwxr-xr-x 1 dmdba dinstall 757321 Jul 20 00:37 libdmhs_net.so -rwxr-xr-x 1 dmdba dinstall 14435 Jul 20 00:37 TemplateDmhsAgentService -rwxr-xr-x 1 dmdba dinstall 50488 Jul 20 00:37 libdmstrt.so -rwxr-xr-x 1 dmdba dinstall 7694676 Jul 20 00:37 libdmoci.so -rwxr-xr-x 1 dmdba dinstall 17858 Jul 20 00:37 libdmelog.so -rwxr-xr-x 1 dmdba dinstall 427860 Jul 20 00:37 libdmmout.so -rwxr-xr-x 1 dmdba dinstall 2814966 Jul 20 00:37 libcrypto.so -rwxr-xr-x 1 dmdba dinstall 328332 Jul 20 00:37 libdmclientlex.so -rwxr-xr-x 1 dmdba dinstall 7184071 Jul 20 00:37 libdmdpi.so -rwxr-xr-x 1 dmdba dinstall 71577 Jul 20 00:37 libdmcyt.so -rwxr-xr-x 1 dmdba dinstall 1147985 Jul 20 00:37 libdmhs_pub.so -rwxr-xr-x 1 dmdba dinstall 108642 Jul 20 00:37 libdmhs_xml.so -rwxr-xr-x 1 dmdba dinstall 3552167 Jul 20 00:37 libdmhs_ucvt.so -rwxr-xr-x 1 dmdba dinstall 109223 Jul 20 00:37 libdmhs_bool_parse.so -rwxr-xr-x 1 dmdba dinstall 215436 Jul 20 00:37 libdmhs_api.so -rwxr-xr-x 1 dmdba dinstall 9396 Jul 20 00:37 libdmcpr.so -rwxr-xr-x 1 dmdba dinstall 3511520 Jul 20 00:37 libdmcvt.so -rwxr-xr-x 1 dmdba dinstall 495630 Jul 20 00:37 libdmdta.so -rwxr-xr-x 1 dmdba dinstall 26712 Jul 20 00:37 libdmdcr.so -rw-r--r-- 1 dmdba dinstall 453 Jul 20 00:46 dmhs_agent.xml -rwxr-xr-x 1 dmdba dinstall 14479 Jul 20 00:48 DmhsAgentServiceHsAgent [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ ls -ltr hs_agent/ | grep 'DmhsAgentServiceHsAgent' -rwxr-xr-x 1 dmdba dinstall 14479 Jul 20 00:48 DmhsAgentServiceHsAgent [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ hs_agent/DmhsAgentServiceHsAgent status DmhsAgentServiceHsAgent is stopped [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ hs_agent/DmhsAgentServiceHsAgent start Starting DmhsAgentServiceHsAgent: [ OK ] [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ hs_agent/DmhsAgentServiceHsAgent status DmhsAgentServiceHsAgent (pid 115246) is running... [dmdba@node1 dmhs]$ [dmdba@node1 dmhs]$ ps -ef | grep 115246 dmdba 115246 1 0 01:26 pts/8 00:00:00 /opt/dmhs/hs_agent/dmhs_agent /opt/dmhs/hs_agent/dmhs_agent.xml -noconsole dmdba 115314 114799 0 01:26 pts/8 00:00:00 grep --color=auto 115246 [dmdba@node1 dmhs]$ |
DMHS:WEB
上述三个服务启动没问题的话,就可以访问WEB Portal了:
http://192.168.232.11:8080/manager/
默认用户:admin
默认口令:888888


可以看到,当前只有一个HS实例,也就是我们刚刚安装的这台节点(192.168.232.11)
这个是因为,我的第二台节点的DMHS Agent的服务的内置数据库的IP写的是:192.168.232.12,应该是:192.168.232.11,应该与第一台节点保持一致。
(修复方法在上面配置错误的地方已经标注了)
修复完成后:

在另一个节点【192.168.232.12】上以一样的方式安装好DMHS,并启动DMHS的代理服务。
另一个节点启动DMHS代理服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[dmdba@node2 dmhs]$ hs_agent/DmhsAgentServiceHsAgent status DmhsAgentServiceHsAgent is stopped [dmdba@node2 dmhs]$ [dmdba@node2 dmhs]$ hs_agent/DmhsAgentServiceHsAgent start Starting DmhsAgentServiceHsAgent: [ OK ] [dmdba@node2 dmhs]$ [dmdba@node2 dmhs]$ hs_agent/DmhsAgentServiceHsAgent status DmhsAgentServiceHsAgent (pid 75809) is running... [dmdba@node2 dmhs]$ [dmdba@node2 dmhs]$ ps -ef | grep 75809 dmdba 75809 1 0 16:59 pts/1 00:00:00 /opt/dmhs/hs_agent/dmhs_agent /opt/dmhs/hs_agent/dmhs_agent.xml -noconsole dmdba 75908 72087 0 17:00 pts/1 00:00:00 grep --color=auto 75809 [dmdba@node2 dmhs]$ |
DMHS:架构说明
在我的实验环境中会涉及两个节点:
192.168.232.11 | DMHS + DAMENG | 目标端(EXEC) |
192.168.232.12 | DMHS + MySQL | 源端(CPT) |
如上所示,我们要通过DMHS,将12节点上的MySQL的数据,同步到11节点上的DAMENG数据库中。
源端:MySQL数据库
在源端准备测试环境:
- 安装MySQL数据库(本文不作详述)
- 创建测试库、测试表,并且写入测试数据(本文不作详述,仅仅展示最终写入的测试数据)
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
[root@node2 software]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.7.34-37 Percona Server (GPL), Release 37, Revision 7c516e9 Copyright (c) 2009-2021 Percona LLC and/or its affiliates Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) mysql> mysql> create database adamhuan; Query OK, 1 row affected (0.00 sec) mysql> use adamhuan; Database changed mysql> mysql> create table people(name varchar(30),age int,location text); Query OK, 0 rows affected (0.00 sec) mysql> mysql> desc people; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | name | varchar(30) | YES | | NULL | | | age | int(11) | YES | | NULL | | | location | text | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.01 sec) mysql> mysql> insert into people values('caoyuan',24,'China'); Query OK, 1 row affected (0.00 sec) mysql> insert into people values('Angela Baby',28,'China'); Query OK, 1 row affected (0.00 sec) mysql> commit; Query OK, 0 rows affected (0.00 sec) mysql> mysql> select * from adamhuan.people; +-------------+------+----------+ | name | age | location | +-------------+------+----------+ | caoyuan | 24 | China | | Angela Baby | 28 | China | +-------------+------+----------+ 2 rows in set (0.00 sec) mysql> |
DMHS:WEB
架构图:

接下来的步骤是在DMHS Web Portal上配置DMHS的实例;
DMHS配置的过程中,官方建议优先配置目标端的HS实例。
在开始配置之前,先看看当前的DMHS的状态:

在服务器上的配置文件:
节点一:192.168.232.11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[dmdba@node1 hs_agent]$ pwd /opt/dmhs/hs_agent [dmdba@node1 hs_agent]$ [dmdba@node1 hs_agent]$ ls -ltr | grep dmhs_agent.xml -rw-r--r-- 1 dmdba dinstall 419 Jul 20 23:33 dmhs_agent.xml [dmdba@node1 hs_agent]$ [dmdba@node1 hs_agent]$ cat dmhs_agent.xml <?xml version="1.0" encoding="GB2312"?> <hs_agent> <name>HsAgent</name> <lang>ch</lang> <server_ip>192.168.232.11</server_ip> <lsn_port>5456</lsn_port> <status_interval>3</status_interval> <status_server>192.168.232.11</status_server> <status_port>15236</status_port> <status_user>SYSDBA</status_user> <status_pwd>SYSDBA</status_pwd> <dmhs_support>1</dmhs_support> <veri_support>1</veri_support> </hs_agent> [dmdba@node1 hs_agent]$ |
节点二:192.168.232.12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[dmdba@node2 hs_agent]$ pwd /opt/dmhs/hs_agent [dmdba@node2 hs_agent]$ [dmdba@node2 hs_agent]$ ls -ltr | grep dmhs_agent.xml -rw-r--r-- 1 dmdba dinstall 419 Jul 21 14:33 dmhs_agent.xml [dmdba@node2 hs_agent]$ [dmdba@node2 hs_agent]$ cat dmhs_agent.xml <?xml version="1.0" encoding="GB2312"?> <hs_agent> <name>HsAgent</name> <lang>ch</lang> <server_ip>192.168.232.12</server_ip> <lsn_port>5456</lsn_port> <status_interval>3</status_interval> <status_server>192.168.232.11</status_server> <status_port>15236</status_port> <status_user>SYSDBA</status_user> <status_pwd>SYSDBA</status_pwd> <dmhs_support>1</dmhs_support> <veri_support>1</veri_support> </hs_agent> [dmdba@node2 hs_agent]$ |
目标端
执行器:EXEC_11 – DAMENG


源端
捕获器:CPT_12 – MySQL


启动

在这里,由于我的源库端的数据库是MySQL,因此,我遇到了一个DMHS的CPT服务启动的时候报错:找不到libcpt_mysql.so的错误
因为在DMHS中,针对不同的数据库有不同的版本的安装包,而我以上的环境配置中都没有注意到安装包的差异,因此遇到了问题。
后续,从官方获得了DMHS for MySQL的安装包后,再继续完成该文档。