DM8-DM8单实例数据库DMHS部署搭建
一、DMHS软件概述
DMHS全称是Heterogeneous database Synchronization for DM,即达梦异构数据库同步软件。DMHS是基于数据库日志,支持同构、异构数据库的实时同步软件,可以实现双业务中心架构。DMHS软件功能非常丰富,支持多种架构场景,主流数据实时同步软件的相关功能DMHS都已实现并且根据实际业务需求丰富了更多功能。主流的数据实时同步软件主要有:Oracle、GoldenGate、DSG RealSync、Quest Shareplex等。
二、DMHS软件特点
• 高性能,轻量级软件
• 实时数据复制,源端基于数据库日志进行增量数据捕获
• 支持异构平台数据同步
• 支持断点续传,支持传输数据压缩和加密、支持多种复杂拓扑架构
• 以数据库事务为最小复制单位,确保复制数据的完整性和一致性
• 灵活拓扑结构:1:1、1:N、N:1、N:N、双向复制等
• 丰富的高级功能支持:文件转换、复杂拓扑、FTP架构、支持Kafka、支持ETL工具
• 支持多种软硬件平台、支持同步数据链路冗余
• 支持主流关系型数据库(DM、Oracle、MySQL、PostgreSQL、DB2、SQL Server等)
三、DMHS软件架构
四、DMHS软件安装
4.1 环境需求
内存要求: DMHS 需要的内存总量取决于执行的分析线程以及执行线程的并发数,最少需要 1G 内存。
磁盘需求: DMHS 安装文件占用 443M,包括了管理工具以及管理界面占用的空间,另外需要一些额外的空间存储 DMHS 运行的日志文件。
操作系统权限: 在 Windows 安装时,安装和执行 DMHS 的用户必须是管理员身份;在 Linux 平台下安装,安装用户必须有权限读写 DMHS 安装目录,将涉及的数据库接口动态库添加到系统共享库环境变量中。
网络要求: 配置系统支持 TCP/IP 服务(DMHS 安装的所有机器必须配置主机名或者 IP地址)。 DMHS 需要使用以下 TCP/IP 端口:管理进程间通信的默认端口 5345;发送和执行子系统之间通信的默认端口 5346;用户可以自行定义这些端口。
4.2 软件安装
(1)系统的硬件环境如下(虚拟机)
硬件名称 配置
Red Hat -dmhs-source 源端服务器操作系统:Red Hat Enterprise Linux Server release 6.4
内存:4G
磁盘:40G
Red Hat -dmhs-destination 目的端服务器操作系统:Red Hat Enterprise Linux Server release 6.4
内存:4G
磁盘:40G
(2)网络环境配置
数据库环境 列表
IP设置 源端:192.168.175.146
目的端:192.168.175.147
(3)数据库版本
版本号 开发商
DM8 dm8_x86_rh6_64_ent_8.1.1.134 武汉达梦数据库有限公司
(4)安装DM8数据库
源端和目的端都需要安装DM8数据库,具体安装参考DM8安装手册;
(5)安装DMHS
Linux安装命令:
./ dmhs_V3.1.3_dm8_rev95241_rh6_64_veri_202…bin(图形界面安装)
./ dmhs_V3.1.3_dm8_rev95241_rh6_64_veri_202…bin -i (非图形化安装)
安装过程:源端和目的端都需要安装,一样的安装步骤!!!
[dmdba@localhosthome]$ ./dmhs_V3.1.3_dm8_rev95241_rh6_64_veri_202…bin -i
Extract install files…
1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:2
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:1
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:2
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件客户端
4.内置数据库
5.实时同步软件配置助手
6.手册
所需磁盘空间:828 MB
安装目录: [/home/dmdba/dmhs]/home/dmdba/dmhs
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]: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.175.146:
远程部署工具管理端口5456:
内置数据库轮询间隔3:
内置数据库IP[192.168.175.146]:
内置数据库端口[15236]:
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
内置数据库服务
1.自动
2.手动
启动方式:[2.手动]2
正在创建内置数据库服务
初始化内置数据库
远程控制服务
1.自动
2.手动
启动方式:[2.手动]2
正在创建远程控制服务
web服务
1.自动
2.手动
启动方式:[2.手动]2
正在创建web服务
达梦数据实时同步 V4.0 安装完成
更多安装信息,请查看安装日志文件:
/home/dmdba/dmhs/log/install.log
至此,DMHS安装完成,后续进行相关配置;
五、DM8 DMHS相关配置
采用的是手动配置dmhs.hs,即在安装目录/home/dmdba/dmhs/bin下手动添加dmhs.hs文件,源端和目的端的配置文件内容不同,需要注意!!!
5.1 配置源端
(1)开启归档和逻辑设置
1)设置归档标记和逻辑日志标记
打开DM8服务器/home/dmdba/dmdbms/data/DAMENG目录下的配置文件“dm.ini”,设置如下值:
ARCH_INI = 1
RLOG_APPEND_LOGIC = 1
如图:
注意:dm.ini配置参数中“FAST_COMMIT”必须为0,否则会导致逻辑日志不全而影响同步。
2) 添加归档配置文件。在“dm.ini”同目录下创建文件“dmarch.ini”,示例内容下:
[ARCHIVE_LOCAL1] #REDO日志归档名
ARCH_TYPE = LOCAL
ARCH_DES = /home/dmdba/dmdbms/data/DAMENG/arch_log
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
如图:
注:需要创建/home/dmdba/dmdbms/data/DAMENG/arch_log归档日志目录
-
重启DM8数据库,使配置参数生效。
-
验证配置的正确性
a) 检查归档配置的正确性,请执行以下SQL命令:
SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE=‘LOCAL’ AND ARCH_IS_VALID=‘Y’;
如图:
b) 检查逻辑日志配置的正确性,通过下面的查询:
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = ‘RLOG_APPEND_LOGIC’;
如图:
c) 检查在线日志,通过如下的查询:
SELECT PATH FROM SYS.V$RLOGFILE;
如图:
d) 检查FAST_COMMIT参数是否为0
SELECT PARA_VALUE FROM V$DM_INI WHERE PARA_NAME = ‘FAST_COMMIT’;
如图:
注:查询值为0则表示正常!!!
(2)配置DDL
如果要求DDL同步,那么需要创建DDL触发器和辅助表。创建的脚本参见DMHS安装目录下scripts子目录中“ddl_sql_dm8.sql”。注意创建时需要使用SYSDBA用户,本次搭建需要创建DDL触发器和辅助表,如图:
注意:创建时登陆./disql,直接用start方式调用脚本可能会存在创建辅助表和触发器时出现创建不成功,命令如下:
start /home/dmdba/dmhs/scripts/ddl_sql_dm8.sql
所以建议采用打开脚本,复制脚本中每个DDL语句逐步执行,一定要按脚本中的顺序逐步执行,不然会出现创建不成功!!!创建完成之后,检查创建的触发器和辅助表是否有效,检查辅助表的语句:
select owner, table_name from dba_tables where owner = ‘SYSDBA’ and table_name like ‘DMHS%’ and status = ‘VALID’;
检查结果如图,如果存在以下的查询结果,表示DMHS辅助表创建有效:
检查触发器的语句:
select owner, trigger_name from dba_triggers where owner = ‘SYSDBA’ and trigger_name like ‘DMHS%’ and status = ‘Y’;
检查结果如图,如果存在以下的查询结果,表示DMHS触发器创建有效:
(3)配置源端dmhs.hs
安装目录/home/dmdba/dmhs/bin下的dmhs.hs是DMHS默认的配置文件,如果需要DDL同步,那么基本的配置示例如下:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
</base>
<cpt>
<db_type>dm8</db_type>
<db_server>192.168.175.146</db_server><!--源端IP-->
<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>2</clear_flag>
<bak_dir>/dmarch/arch_bak</bak_dir>
</arch>
<send><!-- 发送模块配置 -->
<ip>192.168.175.147</ip><!--目的端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>
注:需要用root用户创建/dmarch/arch_bak目录,并赋予dmdba的用户权限,命令如下:
mkdir -p /dmarch/arch_bak
chown -R dmdba.dinstall /dmarch
现对以上的基本配置作如下几点说明:
- siteid全局唯一,即DMHS同步系统涉及的所有节点的siteid必须全局唯一,不允许有重复值。
- DDL配置项,如果不需要DDL同步,那么就配置为空,即<ddl_mask></ddl_mask>,相应地DMHS DDL触发器和辅助表也不需要创建。
- 归档清理配置项,clear_flag为1表示清除,即DMHS将同步完成的归档文件删除;为2,表示将同步完成的归档移到bak_dir目录下;为0,表示不作任何操作。
- 过滤配置项,本示例配置了白名单,即enable,也可以配置黑名单,详见DMHS用户手册。其过滤的规则是:先判断白名单,然后判断黑名单。如果存在重叠的情况,那么也是会被过滤的。
- 映射配置项,表示存在不同模式之间的表同步,例如本示例中源端的SYSDBA模式下的表映射成目的端的SYSDBA模式下同名的表。
5.2 配置目的端(操作端)
(1)配置目的端dmhs.hs
安装目录/home/dmdba/dmhs/bin下添加dmhs.hs,文件内容如下:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</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.175.147</db_server><!--目的端IP-->
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<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>
5.3 初始装载
初始装载是将源端数据库中的初始数据装载到目的端数据库,使DMHS同步的时刻源和目的端的同步表数据一致。装载前源端DMHS服务和目的端DMHS服务都需要开启,按以下顺序进行(一定要按顺序执行!!),具体的步骤如下:
- 开启目的端DMHS服务:
进入/home/dmdba/dmhs/bin目录,命令:
./dmhs_server
如图:
- 启动目的端捕获器:
进入/home/dmdba/dmhs/bin目录,命令:
./dmhs_console
connect
start exec
如图:
- 开启源端DMHS服务:
进入/home/dmdba/dmhs/bin目录,命令:
./dmhs_server
如图:
- 在源端进行初始装载:
进入/home/dmdba/dmhs/bin目录,命令:
./dmhs_console
connect
copy 0 “sch.name=‘SYSDBA’” DICT|LSN|CREATE|INSERT|INDEX
start cpt
如图:
至此搭建成功,可以开始进行数据同步。