Dmhs部署
————————
达梦软件与ODBC已安装完成
——————————————
目的端部署
[dmdba@localhost dmhs]$ ./dmhs_V4.1.48_dm8_rev102088_FTarm_kylin4_64_veri_20210914.bin -i
Extract install files…
1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:2
Key文件路径:/opt/dmhsEE048220.key (一定要带key安装,否则容易出问题)
Key文件限制信息如下:
有效日期:2022-09-25
用户名称:达梦公司产品试用
服务器颁布类型:试用版
发布类型:企业版
Key类型:企业版
授权用户数:无限制
并发连接数:无限制
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:2 (这里安装的是web版,之后搭建管理平台)
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件客户端
4.内置数据库
5.实时同步软件配置助手
6.手册
所需磁盘空间:650 MB
安装目录: [/home/dmdba/dmhs]/dmhs
该路径不为空,是否继续安装?[Y or N]y
安装路径可能存在覆盖安装
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
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.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)192.168.3.58:192.168.3.58
输入有误,请重新输入!
主机Ip(外网)192.168.3.58:192.168.3.58
远程部署工具管理端口5456:
内置数据库轮询间隔3:
内置数据库IP[192.168.3.58]:
内置数据库端口[15236]:
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:
内置数据库服务
1.自动
2.手动
启动方式:[2.手动]
正在创建内置数据库服务
初始化内置数据库
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
web服务
1.自动
2.手动
启动方式:[2.手动]
正在创建web服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/dmhs/log/install.log
[dmdba@localhost apache-tomcat-8.5.72]$ cd /dmhs/bin
[dmdba@localhost bin]$ ldd libdmhs_exec.so
linux-vdso.so.1 => (0x00007ffd327fb000)
libc.so.6 => /lib64/libc.so.6 (0x00007ff87e8c0000)
libm.so.6 => /lib64/libm.so.6 (0x00007ff87e5be000)
librt.so.1 => /lib64/librt.so.1 (0x00007ff87e3b6000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff87e19a000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ff87df96000)
libdmhs_pub.so => ./libdmhs_pub.so (0x00007ff87dc67000)
libdmhs_ucvt.so => ./libdmhs_ucvt.so (0x00007ff87d70c000)
libdmhs_dm_obj.so => ./libdmhs_dm_obj.so (0x00007ff87d4f7000)
libdmhs_cvt.so => ./libdmhs_cvt.so (0x00007ff87d26c000)
libdodbc.so => /home/dmdba/dmdbms/bin/libdodbc.so (0x00007ff87d040000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff87f04b000)
libdmhs_exp.so => ./libdmhs_exp.so (0x00007ff87cc6b000)
libdmhs_xml.so => ./libdmhs_xml.so (0x00007ff87ca5c000)
libdmoci.so => /home/dmdba/dmdbms/bin/libdmoci.so (0x00007ff87bd5a000)
libdmdpi.so => /home/dmdba/dmdbms/bin/libdmdpi.so (0x00007ff87b0e3000)
libdmfldr.so => /home/dmdba/dmdbms/bin/libdmfldr.so (0x00007ff87a4ad000)
libdmelog.so => /home/dmdba/dmdbms/bin/libdmelog.so (0x00007ff87a2a6000)
libdmutl.so => /home/dmdba/dmdbms/bin/libdmutl.so (0x00007ff87a093000)
libdmclientlex.so => /home/dmdba/dmdbms/bin/libdmclientlex.so (0x00007ff879e60000)
libdmos.so => /home/dmdba/dmdbms/bin/libdmos.so (0x00007ff879c33000)
libdmcvt.so => /home/dmdba/dmdbms/bin/libdmcvt.so (0x00007ff879554000)
libdmstrt.so => /home/dmdba/dmdbms/bin/libdmstrt.so (0x00007ff879340000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007ff879038000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ff878e22000)
libdmmem.so => /home/dmdba/dmdbms/bin/libdmmem.so (0x00007ff878c15000)
libdmcalc.so => /home/dmdba/dmdbms/bin/libdmcalc.so (0x00007ff87898f000)
#如果有包找不到就去安装包找,上传到数据库安装目录的bin目录下
配置dmhs.sh
vi /dmhs/bin/dmhs.hs
<?xml version="1.0" encoding="GB2312"?>
<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.3.58</db_server> #本机服务器ip
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<db_name></db_name>
<exec_thr>8</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx>2000</exec_trx>
<exec_rows>2000</exec_rows>
<ddl_continue>1</ddl_continue>
<affect_row>0</affect_row>
<exec_policy>2</exec_policy>
<enable_rowid>0</enable_rowid>
<clear_trx_file>1</clear_trx_file>
<trx_max_file>8</trx_max_file>
</exec>
</dmhs>
编辑dmhs服务脚本
[dmdba@localhost bin]$ cp TemplateDmhsService DmhsService
[dmdba@localhost bin]$ vi DmhsService
DMHS_HOME=/dmhs
PROG_DIR=/dmhs/bin
CONF_PATH=/dmhs/bin/dmhs.hs
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
NEED_LIB_PATH=
HS_NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
(dmhs服务脚本要一致)
——————————————————
源端部署
[oracle@gxptdb dmhs]$ ./dmhs_V4.1.48_oracle12_rev102088_rh6_64_veri_20210924.bin -i
Extract install files…
1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:2
Key文件路径:/opt/dmhsEE048220.key
Key文件限制信息如下:
有效日期:2022-09-25
用户名称:达梦公司产品试用
服务器颁布类型:试用版
发布类型:企业版
Key类型:企业版
授权用户数:无限制
并发连接数:无限制
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:2
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件客户端
4.内置数据库
5.实时同步软件配置助手
6.手册
所需磁盘空间:850 MB
安装目录: [/home/oracle/dmhs]/dmhs
该路径不为空,是否继续安装?[Y or N]y
安装路径可能存在覆盖安装
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
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.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)192.168.3.64:192.168.3.64
远程部署工具管理端口5456:
内置数据库轮询间隔3:
内置数据库IP[192.168.3.64]:192.168.3.64
内置数据库端口[15236]:
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:
Oracle字符集
提示:注意此处配置为ORACLE数据库的NLS_LANG,此配置项由源端数据库字符集编码格式决定,需与源端字符集编码适配。
1.SIMPLIFIED CHINESE_CHINA.ZHS32GB18030
2.SIMPLIFIED CHINESE_CHINA.AL32UTF8
3.TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5
4.TRADITIONAL CHINESE_TAIWAN.AL32UTF8
5.AMERICAN_AMERICA.AL32UTF8
6.AMERICAN_AMERICA.WE8ISO8859P1
7.AMERICAN_AMERICA.WE8ISO8859P15
8.AMERICAN_AMERICA.ZHS16GBK
9.不设置
请配置Oracle字符集[9.不设置]:8
内置数据库服务
1.自动
2.手动
启动方式:[2.手动]
正在创建内置数据库服务
初始化内置数据库
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
web服务
1.自动
2.手动
启动方式:[2.手动]
正在创建web服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/dmhs/log/install.log
检查依赖包是否缺失
[oracle@gxptdb ~]$ cd /dmhs/bin
[oracle@gxptdb bin]$ ldd libcpt_ora.so
linux-vdso.so.1 => (0x00007fff72f89000)
libc.so.6 => /lib64/libc.so.6 (0x00007f7519184000)
libm.so.6 => /lib64/libm.so.6 (0x00007f7518e81000)
librt.so.1 => /lib64/librt.so.1 (0x00007f7518c79000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f7518a5d000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f7518858000)
libdmhs_net.so => ./libdmhs_net.so (0x00007f75185fc000)
libdmhs_pub.so => ./libdmhs_pub.so (0x00007f75182cd000)
libdmhs_ld_ora.so => ./libdmhs_ld_ora.so (0x00007f7518067000)
libdmhs_ucvt.so => ./libdmhs_ucvt.so (0x00007f7517b0c000)
libclntsh.so.12.1 => ./libclntsh.so.12.1 (0x00007f7514067000)
/lib64/ld-linux-x86-64.so.2 (0x00007f751985b000)
libdmhs_bool_parse.so => ./libdmhs_bool_parse.so (0x00007f7513e56000)
libmql1.so => /u01/app/oracle/product/12.2.0/dbhome_1/lib/libmql1.so (0x00007f7513bdf000)
libipc1.so => /u01/app/oracle/product/12.2.0/dbhome_1/lib/libipc1.so (0x00007f75137ab000)
libnnz12.so => /u01/app/oracle/product/12.2.0/dbhome_1/lib/libnnz12.so (0x00007f7513062000)
libons.so => /u01/app/oracle/product/12.2.0/dbhome_1/lib/libons.so (0x00007f7512e14000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f7512bf9000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007f75129f7000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f75127de000)
libclntshcore.so.12.1 => /u01/app/oracle/product/12.2.0/dbhome_1/lib/libclntshcore.so.12.1 (0x00007f751220f000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f7511ff9000)
如果依赖包有no found,在root用户用find / -name libmql1.so命令来快速查找。这里找到的包不要使用dmhs安装后的包。
配置dmhs.sh
(1)oracle源端要开启归档和逻辑附加日志
alter database add supplemental log data;
alter database add supplemental log data (all) columns;
归档和逻辑附加日志一定要开启
select SUPPLEMENTAL_LOG_DATA_MIN min,
SUPPLEMENTAL_LOG_DATA_PK pk,
SUPPLEMENTAL_LOG_DATA_UI ui,
SUPPLEMENTAL_LOG_DATA_FK fk,
SUPPLEMENTAL_LOG_DATA_ALL "all"
from v$database;
(2)确认是否要开启DDL同步
源端DDL支持:
a.源端数据库必须允许DDL触发器的触发动作,即数据库参数_system_trig_enabled为TRUE或者未设置。show parameter “_system_trig_enabled”;
b.需要在源端数据库以sys用户,在sys模式下创建DDL触发器及DDL记录表,详细参照dmhs_ddl.sql脚本。脚本位于dmhs/scripts下面。
c.需要日志捕获模块对ddl_mask进行设置。例如<ddl_mask>op:obj<ddl_mask>。
(3)vi /dmhs/bin/dmhs.hs
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>en</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>45</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
</base>
<cpt>
<db_type>oracle18c</db_type>
<db_server>orcl</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd> #最好先用空白用户测试
<ddl_mask>op:obj</ddl_mask>
<constraint>1</constraint>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
<send>
<ip>192.168.3.58</ip> #目的端服务器ip
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<filter>
<enable>
<item>DMHS.*</item>
<item>TEST.*</item>
</enable>
<disable>
</disable>
</filter>
<map>
<item>DMHS.*==SYSDBA.*</item>
<item>TEST.*==TEST.*</item>
</map> #对应的用户映射关系
</send>
</cpt>
</dmhs>
[oracle@localhost bin]$ cp TemplateDmhsService DmhsService
[oracle@localhost bin]$ vi DmhsService
DMHS_HOME=/dmhs
PROG_DIR=/dmhs/bin
CONF_PATH=/dmhs/bin/dmhs.hs
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
NEED_LIB_PATH=
HS_NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
(服务脚本字符集要严格一致)
————————————————————————
装载测试
重点:
a.装载数据前,源端执行:clear exec lsn
b.装载一个含中文的测试表,确保装载到目的端的数据不是乱码的。
(1)oracle源端创建一个dmhs.test表:
create table dmhs.test(id int,name varchar2(20));
insert into dmhs.test values(1,'中国');
commit;
(2)开始装载
源端,目的端启动dmhs服务,/dmhs/bin目录下:./DmhsService start
#数据装载前必须先启动dmhs的脚本服务
目的端启动exec模块
[dmdba@db01 ~]$ cd /dmhs/bin
[dmdba@db01 bin]$ ./dmhs_console
DMHS console tool: V4.1.48-Build(2021.09.09-102088trunc)_D64
DMHS>start exec
execute success
DMHS>
源端启动
[oracle@db01 ~]$ cd /dmhs/bin
[oracle@db01 bin]$ ./dmhs_console
DMHS console tool: V4.1.48-Build(2021.09.09-102088trunc)_D64
DMHS> connect
execute success
DMHS> clear exec lsn
execute success
DMHS> copy 0 "sch.name='DMHS' and tab.name='TEST'" create|insert
copy mask is : |CREATE|INSERT|TABLE|PARTITION|OBJID|REP
execute finish, please look up log file of exec module to check data load result
DMHS> exit
(3)检查达梦端的数据SYSDBA.TEST是否乱码
SQL> select * from sysdba.test;
行号 ID NAME
---------- -- ------
1 1 中国
可以看到装载是Ok的,然后可以进行业务用户数据的装载。
(4)可以看下目的端的装载日志
2021-10-21 16:25:54 EXE[INFO]: DDL:SITEID:1 SEQID:0 TRXID:2 schema.lock CREATE
2021-10-21 16:25:54 EXE[INFO]: DDL: SITEID:1 SEQID:0 TRXID:2 SQL:--dmhs ddl, siteid:1, level:2, mask:1
CREATE TABLE "SYSDBA"."TEST"("ID" NUMBER NULL,"NAME" VARCHAR2(20) NULL)
2021-10-21 16:25:54 EXE[INFO]: set table .SYSDBA.TEST start LSN: 0 LFS: 0
2021-10-21 16:25:54 EXE[INFO]: waiting for site 1 commit complete...
2021-10-21 16:25:54 EXE[WARN]: set table .SYSDBA.TEST start LSN: 1026884 LFS: 0 load rows:1
附加说明:
(1)依赖包缺失,find文件找不到的,可以直接找同名的.so文件,创建软连接;
(2)在ODBC链接正常的情况下,如果dmhs的copy装载,看到报错”数据库无法链接“,可在dmhs的dmhs.hs文件中指定ODBC驱动;