接着上一篇的理论学习,本文继续对DMHS的部署实践进行动手操作分享。DMHS是基于数据库日志,支持同构、异构数据库的实时同步软件,可以实现双业务中心架构。
一、DMHS软件部署说明
1.1 DMHS软件支持的平台及数据库
DMHS支持多种数据库同步。支持异构数据库(如 DM、MySQL、PostgreSQL、SQL Server、DB2、ORACLE)之间的数据同步,也支持上述数据库的数据向消息中间件(如 HIVE、KAFKA)或 DMETL 流转。
1.2 安装软件包的获取
可以联系达梦客服获取最新安装包。
1.3 本次部署环境涉及到的系统架构
1.3.1源端主要模块
CPT模块:日志捕获模块。通过解析源端数据库的交易日志,获取数据的增量变化,并将增量变化封装为DMHS消息。
NET模块:数据传输模块。源端为NET发送子模块将CPT捕获的数据发送给目标端NET接受子模块。
MGR模块:调度管理模块。负责调度CPT、NET模块等其他功能。
1.3.2目标端(或者执行端)主要模块
EXEC模块:数据入库。主要的功能是对CPT捕获的增量数据提取并进行事务归类入库。
NET模块:数据传输模块。目标端为NET接收子模块接受源端传输过来的数据。
MGR模块:调度管理模块。负责调度EXEC、NET模块等其他功能。
扩展功能模块:guard进程守护(dmhs agent)、stat监控统计、数据比对校验工具、WEB管理平台。(本次实验环境未涉及扩展模块。)
DMHS 同步服务主要分为三大模块,分别是日志分析(CPT)、数据入库(EXEC)和消息发送(NET),这三个模块统一由管理模块(MGR)进行调度执行。
二、DMHS软件安装
2.1 部署环境需求
服务器 |
IP |
操作系统 |
DB |
HS版本 |
源端 |
192.168.1.9 |
Centos 8 |
DM8 |
dmhs_V4.1.2_dm8_rev100195_rh6_64_ veri_20210618_pack2.bin |
目标端 |
192.168.1.10 |
内存方面:
DMHS 需要的内存总量取决于执行的分析线程以及执行线程的并发数,最少需要 1G 内存。
磁盘方面:
DMHS 安装文件占用 277M,包括了管理工具以及管理界面占用的空间,另外需要一些额外的空间存储 DMHS 运行的日志文件。
操作系统权限:
在 Windows 安装时,安装和执行 DMHS 的用户必须是管理员身份;在 Linux 平台下安装,安装用户必须有权限读写 DMHS 安装目录,将涉及的数据库接口动态库添加到系统共享库环境变量中。
网络要求:
配置系统支持 TCP/IP 服务(DMHS 安装的所有机器必须配置主机名或者 IP地址)。 DMHS 需要使用以下 TCP/IP 端口:管理进程间通信的默认端口 5345;发送(源端)和执行(目的端)子系统之间通信的默认端口 5346;用户可以自行定义这些端口。如果有安全防护系统,请打开相应网络访问端口。
2.2 软件部署安装
DMHS软件部署前,请在源端和目的端分别安装好DM8数据库软件并进行数据库初始化,具体安装教程可以查看之前的部署实践。
(1)源端 数据库初始化
[dmdba@dsc1 ~]$ cd /dm8/dmdbms/bin
[dmdba@dsc1 bin]$./dminit PATH=/dmdata EXTENT_SIZE=32 PAGE_SIZE=16 LOG_SIZE=256 UNICODE_FLAG=1 SYSDBA_PWD=123456789 DB_NAME=hms INSTANCE_NAME=shms BUFFER=300
(2)目的端 数据库初始化
[dmdba@dsc2 ~]$ cd /dm8/dmdbms/bin
[dmdba@dsc2 bin]$ ./dminit PATH=/dmdata EXTENT_SIZE=32 PAGE_SIZE=16 LOG_SIZE=256 UNICODE_FLAG=1 SYSDBA_PWD=123456789 DB_NAME=hmt INSTANCE_NAME=shmt BUFFER=300
2.2.1 将安装包传到服务器上,给安装包赋权
chown -R dmdba:dinstall /dm8/dmhs/dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin
chmod 755 /dm8/dmhs/dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin
2.2.2 命令行方式安装
Linux平台:
图形界面安装:
./dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin
命令行界面:
./dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin -i
本次部署是 命令行方式安装。
大致过程如下:
由于我们此次安装的是实验环境,所以 web管理平台的安装相关项不做特别说明和设置。
2.2.3 确认库文件的完整
安装过程中遇到libdmoci.so相关问题,从dmdci压缩包中复制到DMHS的bin目录,并赋予执行权限。
2.3 源端和目标端的数据库参数修改及配置
2.3.1 数据库归档和逻辑日志相关参数修改
以下修改在 源端 和 目标端 都要执行。
(1)vi dm.ini ;添加如下参数:
ARCH_INI = 1 #开启归档
RLOG_APPEND_LOGIC = 1 #开启逻辑附加日志
RLOG_APPEND_SYSTAB_LOGIC = 0 #注意:如果要执行DDL脚本,则此参数设置为0。详见2.3.2说明。
FAST_COMMIT = 0 #dm8默认是0;其他版本的DM库请自行修订该参数值。
(2)添加归档配置文件。在“dm.ini”同目录下创建文件“dmarch.ini”
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch #归档目录
ARCH_FILE_SIZE = 128 #归档文件大小,单位 MB
ARCH_SPACE_LIMIT = 0 #空间大小限制,0 表示不限
(3)启动数据库,验证配置的正确性:
SQL>SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE='LOCAL' AND ARCH_IS_VALID='Y';
SQL>SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
SQL>SELECT PATH FROM SYS.V$RLOGFILE;
2.3.2 DDL同步触发器配置
DDL同步支持2种配置方式。
(1):辅助表方式(推荐)
如果要求 DDL 同步,那么需要创建 DDL 触发器和辅助表。创建的脚本参见 DMHS 安
装目录下 scripts 子目录中“ddl_sql_dm8.sql”。注意创建时需要使用 SYSDBA 用户。
(2)系统表日志方式(可根据需求来决定采用那种方法)
另外一种方式同步 DDL:系统表附加日志的方式同步 DDL,该方式同步 DDL 时,只
能同步常规对象,如:table、index、constraint、trigger、procedure、function、view、sequence;对应的操作类型:create、drop、alter、truncate。同时,不支持分区表。
系统表附加日志方式同步 DDL 的配置方法为:将 DM8 数据库的配置文件“dm.ini”中的“RLOG_APPEND_SYSTAB_LOGIC”设置为 1,再重启数据库实例即可。
在此次试验中,我使用 SYSDBA 用户来执行DMHS 安装目录下scripts 子目录中“ddl_sql_dm8.sql”。由于本次实验是单项同步,因此只需要在源端节点执行即可。(如果是双向同步,则目标端与源端都需要执行该脚本)
操作步骤如下:
在源端服务器上,通过disql连接数据库:
start /dm8/dmhs/scripts/ddl_sql_dm8.sql
该脚本会在源端库新建9个表和4个触发器,可通过以下sql 检查是否成功
select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status = 'VALID';
select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DMHS%' and status = 'Y';
如果存在以上的查询结果,表示DMHS辅助表创建有效。
2.4 DMHS启动相关参数在源端和目标端的配置
2.4.1 DMHS单向同步配置dmhs.hs
在DMHS安装目录下的bin子目录,创建dmhs.hs配置文件:
(1)源端 dmhs.hs
vi /dm8/dmhs/bin/dmhs.hs
(具体配置项说明可参考DMHS安装目录下doc子目录里面的《DMHS参考手册.pdf》)
因为是实验环境,所以我们采用 sysdba 账户做验证。如果是生产环境,建议创建专用dmhs账户进行数据同步使用。本次是单向同步DM8到DM8数据库,其他版本的数据库同步可以参照执行。具体以手册材料为准。
(2)目的端 dmhs.hs
vi /dm8/dmhs/bin/dmhs.hs
2.6 DMHS服务启动脚本
进入到DMHS安装目录下bin子目录,通过dmhs_service_installer.sh注册服务脚本。
(1)源端 注册服务启动
[root@dsc1 root]# ./dmhs_service_installer.sh -t dmhs_server -a true -p HMS -x /dm8/dmhs/bin/dmhs.hs -d /dm8/dmhs/bin
Created symlink /etc/systemd/system/multi-user.target.wants/DmhsServiceHMS.service → /usr/lib/systemd/system/DmhsServiceHMS.service.
Finished to create the service (DmhsServiceHMS)
[root@dsc1 root]#
(2)目的端 注册服务启动
[root@dsc2 bin]# cd /dm8/dmhs/scripts/root/
[root@dsc2 root]# ./dmhs_service_installer.sh -t dmhs_server -a true -p HMT -x /dm8/dmhs/bin/dmhs.hs -d /dm8/dmhs/bin
Created symlink /etc/systemd/system/multi-user.target.wants/DmhsServiceHMT.service → /usr/lib/systemd/system/DmhsServiceHMT.service.
Finished to create the service (DmhsServiceHMT)
[root@dsc2 root]#
2.7 启动 DMHS 进行数据同步
2.7.1 目的端---启动本地的exec模块
(1)执行端运行 DMHS 软件工具,启动服务:
(2)执行端运行 DMHS 软件工具 dmhs_console,连接执行端 DMHS 服务,启动日志执行模块,控制台管理工具中执行如下 DMHS 命令:
[dmdba@localhost bin]$ ./dmhs_console
DMHS> connect
DMHS> start exec
2.7.2源端---启动本地的cpt模块
(1)源端运行 DMHS 软件工具 dmhs_server,启动服务:
[dmdba@dsc1 bin]$ ./DmhsServiceHMS start
Starting DmhsServiceHMS: [ OK ]
(2)源端数据装载
进入DMHS软件安装目录bin子目录,使用dmhs_cosole工具连接DMHS管理服务,设置日志捕获模块起始 LSN;装载源端字典信息及历史数据,初始化本地采集服务cpt的字典,最后对目的端数据库进行一次同步数据装载,执行 start cpt:
[dmdba@dsc1 bin]$ ./dmhs_console
DMHS console tool: V4.1.2-Build(2021.06.18-100195truncccc)_D64
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.
Connected to DMHS: 127.0.0.1:5345
execute success
Dameng HS Server V4.1.2-Build(2021.06.18-100195truncccc)_D64
DMHS> connect
execute success
DMHS> clear exec lsn
execute success
DMHS> copy 0 "sch.name='SYSDBA'" DICT|LSN|CREATE|INSERT|INDEX
CSL[WARN]: Detect the LSN mask, the mask will be ignored in the log is less than the current LSN all operations, please confirm whether to continue?(Y/N)
y
copy mask is : |CREATE|INSERT|INDEX|TABLE|DICT|LSN|OBJID|REP
execute finish, please look up log file of exec module to check data load result
DMHS>
DMHS> start cpt
execute success
(操作过程建议在两边节点服务器上,实时打印位于bin/log底下的dmhs_日期.log日志,以便随时发现错误)
2.8 DMHS数据同步测试
1 源端数据库
create table hstest(v1 int);
insert into hstest values(3);
commit;
2 目的端数据库
select * from SYSDBA.hstest;
日志记录:
三、DMHS软件卸载
3.1 Windows平台卸载
DMHS提供的卸载方式为全部卸载。在Windows操作系统中在菜单里面找到“达梦数据实时同步软件 V4.0”,然后点击“卸载”菜单;也可以在DMHS安装目录下,找到卸载程序uninstall.exe来执行卸载。运行卸载程序之后,点击卸载。卸载程序将会移除DMHS目录、删除快捷方式、删除Windows服务。
3.2 Linux平台卸载
进入DMHS安装目录,执行卸载脚本命令行卸载
./uninstall.sh或者./uninstall.sh -i
新的版本卸载脚本名称为uninst.sh:
./uninst.sh或者./uninst.sh -i
四、本文小结
本文首先对达梦HS异构数据库同步软件部署规划相关工作做了简单介绍,然后,进行了DMHS的安装部署操作实践,整个安装部署大体上分为 软件包安装、数据库系统参数修改、DMHS同步参数文件配置、启动服务注册和同步模块,最后进行同步数据的验证工作。本文的最后,简要介绍了DMHS软件的卸载操作供大家学习过程中的练习参考。
以上是这次技术分享的相关内容,欢迎小伙伴给我留言进行交流指导。
达梦技术社区:https://eco.dameng.com