一、安装DM8
[dmdba@dmcs bin]$ ./DmServicehs1 status
DmServicehs1 (pid 14764) is running.
[dmdba@dmcs bin]$ ./DmServicehs2 status
DmServicehs2 (pid 14704) is running.
二、安装DMHS
2.1上传dmhs安装包并授权
[root@dmcs dmhs]# chown dmdba:dinstall -R dmhs_V4.1.48_pack4_dm8_rev104804_rh6_64_veri_20211228.bin
[root@dmcs dmhs]# chmod 777 dmhs_V4.1.48_pack4_dm8_rev104804_rh6_64_veri_20211228.bin -R
2.2命令行方式安装
[[dmdba@dmcs src]$ ./dmhs_V4.1.48_pack4_dm8_rev104804_rh6_64_veri_20211228.bin -i
Extract install files..........
1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:570 MB
安装目录: [/home/dmdba/dmhs]/dm8/dmdba/dmhs
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
default start ... default finished.
server start ... server finished.
hs_agent start ... hs_agent finished.
hsca start ... hsca finished.
doc start ... doc finished.
postinstall start ... postinstall finished.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)[192.168.84.201](192.168.84.201,192.168.84.103):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.84.103
内置数据库端口[15236](1000-65535):
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/dm8/dmdba/dmhs/log/install.log
目标端安装dmhs
执行以上相同操作,此步骤省略
三、配置修改
3.1dm.ini配置文件
ARCH_INI = 1 #开启归档
RLOG_APPEND_LOGIC = 1 #开启逻辑附加日志
3.2添加归档配置文件
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/dmdba/dmarch #归档目录
ARCH_FILE_SIZE = 128 #归档文件大小,单位 MB
ARCH_SPACE_LIMIT = 0 #空间大小限制,0 表示不限
3.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;
#检查 FAST_COMMIT 参数是否为 0
SQL>select para_value from v$dm_ini where para_name = 'FAST_COMMIT';
3.4DDL同步触发器配置
在此次实践中使用辅助表方式配置:使用SYSDBA 用户来执行DMHS 安装目录下scripts 子目录中“ddl_sql_dm8.sql”。由于本次是DM-DM单项同步,因此只需要在源端节点执行即可。(如果是双向同步,则目标端与源端都需要执行该脚本)
#在源端服务器上,通过disql连接数据库后执行以下命令
SQL>start /dm8/dmdba/dmhs/scripts/ddl_sql_dm8.sql
该脚本会在源端库新建9个表和4个触发器,可通过以下sql 检查是否成功
#检查创建的触发器和辅助表是否有效
SQL>select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status = 'VALID';
行号 OWNER TABLE_NAME
---------- ------ ----------------
1 SYSDBA DMHS_DDL_COL
2 SYSDBA DMHS_DDL_SQL
3 SYSDBA DMHS_DDL_CONS
4 SYSDBA DMHS_DDL_IDX
5 SYSDBA DMHS_DDL_RENAME
6 SYSDBA DMHS_DDL_SEQ
7 SYSDBA DMHS_DDL_PART
8 SYSDBA DMHS_DDL_COMMENT
9 SYSDBA DMHS_DDL_LOG
9 rows got
已用时间: 11.015(毫秒). 执行号:620.
#检查触发器
SQL> select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DMHS%' and status = 'Y';
行号 OWNER TRIGGER_NAME
---------- ------ -----------------------
1 SYSDBA DMHS_DDL_TRIGGER_AFTER
2 SYSDBA DMHS_DDL_TRIGGER_BEFORE
3 SYSDBA DMHS_DDL_TRIGGER_GRANT
4 SYSDBA DMHS_DDL_TRIGGER_REVOKE
3.5DMHS同步参数文件配置
3.5.1源端
在DMHS安装目录下的bin子目录,创建dmhs.hs配置文件
vi /dm8/dmdba/dmhs/bin/dmhs.hs
<?xml version="1.0" encoding="utf-8"?>
<dmhs>
<base>
<lang>en</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
</base>
<cpt>
<db_type>dm8</db_type>
<db_server>192.168.84.103</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<db_ssl_path></db_ssl_path>
<db_ssl_pwd></db_ssl_pwd>
<parse_thr>1</parse_thr>
<ddl_mask>op:obj</ddl_mask> <!--DDL 配置项-->
<arch><!--归档清理配置项-->
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
<send><!-- 发送模块配置 -->
<ip>192.168.84.104</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<trigger>1</trigger><!-- 是否忽略触发器,默认为 0,限定值 0,1 -->
<constraint>1</constraint><!-- 是否忽略约束,默认为 0,限定值 0,1 -->
<identity>1</identity>
<net_turns>0</net_turns>
<filter><!--过滤配置项-->
<enable><!-- 白名单,所有允许同步的表 -->
<item>SYSDBA.*</item>
</enable>
</filter>
<map><!--映射配置项-->
<item>SYSDBA.*==SYSDBA.*</item>
</map>
</send>
</cpt>
</dmhs>
3.5.2目的端
<?xml version="1.0" encoding="utf-8"?>
<dmhs>
<base>
<lang>en</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<data_port>5346</data_port>
</recv>
<db_type>dm8</db_type>
<db_server>192.168.84.104</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<driver>DM8 ODBC DRIVER</driver>
<db_port>5236</db_port>
<db_name></db_name>
<exec_thr>4</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx> 5000 </exec_trx>
<exec_rows>1000</exec_rows>
</exec>
</dmhs>
四、启动服务
4.1启动服务和同步模块
4.1.1源端注册服务启动
使用root用户进入到DMHS安装目录 /dm8/dmdba/dmhs/scripts/root下,通过dmhs_service_installer.sh注册服务脚本。
cd /dm8/dmdba/dmhs/scripts/root
./dmhs_service_installer.sh -t dmhs_server -a true -p HS1 -x /dm8/dmdba/dmhs/bin/dmhs.hs -d /dm8/dmdba/dmhs/bin
4.1.2目的端注册服务启动
cd /dm8/dmdba/dmhs/scripts/root
./dmhs_service_installer.sh -t dmhs_server -a true -p HS2 -x /dm8/dmdba/dmhs/bin/dmhs.hs -d /dm8/dmdba/dmhs/bin
4.2启动 DMHS 进行数据同步
4.2.1目的端---启动本地的exec模块
#执行端运行 DMHS 软件工具,启动服务
./DmhsServiceHS2 start
#执行端运行 DMHS 软件工具 dmhs_console
./dmhs_console
#连接执行端 DMHS 服务
DMHS> connect
#启动日志执行模块
DMHS> start exec
报错信息:
DMHS> start exec
CSL[ERROR]: load execute module failure
报错CSL[ERROR]: load execute module failure
(1)缺失libdmoci.so文件或版本与dmhs不匹配
退出后查看ldd libdmhs_exec.so
真实原因:
libdmhs_exec.so需要链接的是对目的数据库操作的库文件libdmoci.so,也就是dm8的libdmoci.so。然而dmhs下的db/bin是DMHS内置元数据库dm7的路径,也就是说此时执行器链接的是dm7的libdmoci.so所以执行异常。
但是dm8的libdmoci.so在哪里呢?实际上,默认使用dm8的bin文件安装中并不包含oci接口库,而在dm8的安装包中除了bin安装文件,还有一个dmdci.zip文件,解压dmdci.zip后复制需要的库文件libdmoci.so和以及include文件到dm8/bin下对应位置即可使用。
解决方法:
以上报错主要原因是 libdmoci.so 动态库文件与 DMHS 版本不匹配导致。更换与 DMHS 版本匹配的 libdmoci.so 动态库文件即可。
Dm8单独上传一份和dmhs版本相匹配的libdmoci.s0包后解决。
cp /src/libdmoci.so /dm8/dmdba/dmhs/bin
chown dmdba:dinstall /dm8/dmdba/dmhs/bin/libdmoci.so
ls -lrt /dm8/dmdba/dmhs/bin/libdmoci.so
-rwxr-xr-x 1 dmdba dinstall 7694676 5月 24 03:32 /dm8/dmdba/dmhs/bin/libdmoci.so
4.2.2源端---启动本地的cpt模块
#源端运行 DMHS 软件工具 dmhs_server,启动服务
./DmhsServiceHS1 start
#使用dmhs_cosole工具连接DMHS管理服务
./dmhs_console
#连接源端 DMHS 服务
DMHS> connect
#设置日志捕获模块起始 LSN
DMHS> clear exec lsn
#装载源端字典信息及历史数据
DMHS> copy 0 "sch.name='SYSDBA'" DICT|LSN|CREATE|INSERT|INDEX
#执行start cpt
DMHS> start cpt
五、同步数据的验证工作
源端;
SQL> create table hstest(v1 int);
insert into hstest values(1);
commit;
操作已执行
已用时间: 00:00:14.991. 执行号:622.
SQL> 影响行数 1
已用时间: 0.938(毫秒). 执行号:623.
SQL> 操作已执行
已用时间: 46.012(毫秒). 执行号:624.
SQL>
selecSQL> t * from hstest;
行号 V1
---------- -----------
1 1
已用时间: 763.107(毫秒). 执行号:625.
目标端;
select * from hestest;
查看hs日志:
2023-06-07 23:14:11 CPT[WARN]: log format is invalid, please check DM8 version, sub_type: 108
更换dmhs版本,重新部署测试。
测试结果
源端:
insert into hstest values(1);
commit;
目标端:
select * from hstest;
DMHS日志内容:
源端:
目标端:
六、卸载dmhs
cd /dm8/dmdba/dmhs/
[dmdba@dmcs dmhs]$ ./uninst.sh -i
/dm8/dmdba/dmhs/install.log
1.确认卸载
2.中止卸载
请选择:1
正在检测安装环境...
正在整理安装信息...
删除快捷方式...
删除系统服务...
[Uninstall service] DmhsAgentServiceHsAgent
[Uninstall service] DmhsServiceHS1
使用root用户执行命令:
/dm8/dmdba/dmhs/root_uninstaller.sh
是否已执行shell脚本?yes/no[no]yes
卸载完成
达梦云适配技术社区
https://eco.dameng.com/