目录
本文所提供的基本配置均为《DMHS搭建手册》等官方手册中的配置,以oracle(源端)、DM8(目的端)为例。
一、dmhs.hs基本配置
DMHS 配置文件使用 XML 格式,存放于 DMHS 程序安装目录的 bin 文件夹下,可以用 dmhs.hs 命名,也可以使用 dmhs.xml 命名。但是,使用 dmhs.xml 命名时会导致客户端无法正确修改配置文件,不推荐使用。
配置文件 dmhs.hs 作为 xml 文件,有如下约定:
- 文件头:<?xml version="1.0" encoding="GB2312"?>。
- 文件体根元素:dmhs,根元素开始标签<dmhs>,结束标签</dmhs>。
- 元素名区分大小写。
源端 DMHS 服务主要由装载模块(LOAD)、日志捕获分析模块(CPT) 以及管理服务模块(MGR)组成。
目标端 DMHS 服务则由执行模块(EXEC)和管理服务模块 (MGR)组成。
1.1oracle(源端)
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
---------------------------------------------------------添加base元素
<base>
<lang>ch</lang> ##<!-- 范围 ch 或者 en -->
<mgr_port>5345</mgr_port> ##<!-- 管理端口号,默认为 5345,最小值 1,最大值 65535 -->
<ckpt_interval>45</ckpt_interval> ##<!-- 执行端检查点间隔,默认为 60s,最小值 1s,最大值 60s -->
<siteid>1</siteid>
<version>2.0</version>
</base>
---------------------------------------------------------添加CPT库数据源
<cpt>
<db_type>oracle11g</db_type> ##<!-- 数据库类型 -->
<db_server>orcl</db_server> ##<!-- 数据库服务名,DM7 和 ORACLE 为 OCI 连接的服务名,DM6为连接的服务器 IP-->
<db_user>dmhs</db_user> ##<!-- 数据库用户名,默认为 SYSDBA -->
<db_pwd>dmhs</db_pwd> ##<!-- 数据库口令,默认为 SYSDBA -->
<ddl_mask>op:obj</ddl_mask>
<arch> ##<!--归档信息配置,该标签是一个功能标签,需要配置它的子项-->
<clear_interval>600</clear_interval> ##<!--归档日志清理间隔,取值范围在 60-65535,单位秒-->
<clear_flag>0</clear_flag> ##<!--归档日志清理选项,选配 0(不操作),默认为 0 -->
</arch>
---------------------------------------------------------CPT元素添加数据发送设置
<send>
<ip>127.0.0.1</ip>
<mgr_port>6345</mgr_port>
<data_port>6346</data_port>
<filter> ##<!-- 过滤,必须指定 -->
<enable>
<item>DMHS.*</item>
</enable>
</filter>
</send>
</cpt>
</dmhs>
1.2DM8(目的端)
<?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>127.0.0.1</db_server> ##<!-- 数据库服务名或 IP-->
<db_user>SYSDBA</db_user> ##<!-- 数据库服务名或 IP-->
<db_pwd>SYSDBA</db_pwd> ##<!-- 数据库服务名或 IP-->
<db_port>5237</db_port> ##<!-- 数据库端口号,默认为 5236 -->
<db_name></db_name>
<exec_thr>4</exec_thr> ##<!-- 执行线程个数,只有当 exec_mode 为 1 时才会生效!默认为 1,最小值 1,最大值 64-->
<exec_sql>1024</exec_sql> ##<!-- SQL 缓存大小,默认为 512M,最小值 32M,最大值 4096M -->
<exec_trx> 5000 </exec_trx> ##<!-- 事务缓存个数,默认为 5000,最小值,1000,最大值 10000 -->
<exec_rows>1000</exec_rows> ##<!-- 事务缓存个数,默认为 5000,最小值,1000,最大值 10000 -->
</exec>
</dmhs>
二、各模块配置和使用
2.1MGR(管理模块)
2.1.1配置
MGR 配置在 dmhs.hs 配置文件中对应 base 元素,配置同步服务的 DMHS 服务器管理模块,如同客户端通讯的监听端口、语言项、站点号等。配置文件 dmhs.hs 中的 base 元素以标签开始,以标签结束。
下面为MGR部分常用的配置元素及其含义
配置名 | 含义 | 配置名 | 含义 |
siteid | 站点号,取值范围在 1~ 30000 | lang | 语言选项,ch 代表简体中文;en 代表英文,默认值 ch。 |
mgr_port | 管理端口,取值范围在 1000~ 65535 | ckpt_interval | 检查点间隔,取值范围在 10~ 65535, 默认值 60 |
status_interval | 统计信息更新间隔,取值范围在 3~ 60,默认值 10 | version | 配置文件的版本号,可选 1.0 或 2.0,默认值 1.0,兼容旧版本配置格式。 |
注意:旧版本配置格式仅支持直连模式下源端到目标端的同步配置,如果要使用高级功能,如一对多,转发和路由等,则必须使用 2.0 的版本格式。所以, 在进行配置时,version 参数的错误配置会造成数据同步的失败。
2.1.2MGR使用
1.启动与停止
##控制台方式启动
./dmhs_server ./dmhs.hs ##linux
dmhs_server.exe ##window
##控制台方式停止
exit
2.2CPT(捕获模块)
2.2.1配置
CPT 模块是日志分析模块,由于日志分析需要用到数据库中的表信息,所以 CPT 在首 次启动时,要进行初始化加载需要同步的表的字典信息,把这些信息存放到本地。
配置文件 dmhs.hs 中的 CPT 配置以标签开始,以标签结束,和 base 标签同级。可以配置一个或多个 CPT 配置。
下面为CPT部分常用的配置元素及其含义
配置名 | 含义 | 配置名 | 含义 |
db_type | 捕获源端的数据库类型,限定值请参考数据库类型定义 | db_server | 源端数据库的服务名,如果数据库不支持服务名,也可以填写 IP |
db_user | 连接源端数据库的登录名或用户 | db_pwd | 源端数据库登录口令 |
db_port | 源端数据库的监听端口号,取值范围在 0-65535 | db_name | 源端数据库需要解析的库名 |
arch | 归档信息配置,该标签是一个功能标签,需要配置它的子项 | clear_flag | 归档日志清理选项,选配 0(不操作)、1(删除)、2(移走)、3(延迟删除),默认 0。 |
clear_interval | 归档日志清理间隔,取值范围在 60-65535,单位秒 | send | CPT 投递信息配置,该标签是一个功能标签,需要配置它的子项。该功能的实现依赖于 NET 模块,参考 NET 模块配置 SEND 。 |
2.2.2使用
捕获器在本地读取、解析源端数据库管理系统的归档日志后,会将数据打包并发送到执行器,也可以经过中转再发送到执行器
首次启动该捕获器,请先确保以下准备工作是否完成:
1.MGR 启动框架已处于正常运行状态。
2.下一级 DMHS 服务(包括与当前捕获器关联的执行器、路由器或转发器)已开启, 且处于正常运行状态。
3.如果需要同步 DDL,必须在源库建立一个全库级的事件触发器。
4.源端日志开始分析的日志起始位置已完成初始化
CLEAR|SET EXEC LSN [<VID>] ##在控制台中输入
5.初始数据已从源端数据库管理系统装载到目标端数据库管理系统。
LOAD|COPY <VID> "<过滤条件>" <装载选项> ##在控制台中输入
##<VID>:指 CPT 模块的虚拟编号,虚拟编号是指配置文件中 CPT 配置从上到下的顺序编号,从 0 开始编号,可以用 STATE 命令来查看每个 CPT 模块的虚拟编号。
##"<过滤条件>":指的是装载表的过滤条件,这里面有两个重要的对像前缀,分别是 SCH和 TAB,分别代表系统表中的模式系统表和对像系统表。
##<装载选项>:它是装载命令中最复杂的参数,由一组掩码组成,并且可以按照约定组合使用。
例子:COPY 0 "SCH.NAME=’TEST’" CREATE|INSERT
启动与停止
start cpt
stop cpt
2.3EXEC(执行模块)
2.3.1配置
EXEC 模块用来进行数据入库,为了兼容大多数的数据库,它采用了标准的 ODBC 驱 动接口和符合 SQL92 标准的 SQL 语句来访问数据库。
配置文件 dmhs.hs 中的 EXEC 配置以标签开始,以标签结束,和 base 标 签同级。只能配置一个 EXEC 标签。
下面为EXEC部分常用的配置元素及其含义
配置名 | 含义 | 配置名 | 含义 |
db_type | 数据入库的数据库类型,选项参考数据库类型定义。 | db_server | 数据库的服务名。 |
db_user | 登录数据库的用户名 | db_pwd | 登录数据库的用户口令。 |
db_name | 登录数据库的库名。 | db_port | 登录数据库的端口号。 |
exec_thr | EXEC 模块用来数据入库的工作线程数,取值范围在 1-1024,默认值 1 | exec_sql | EXEC 模块缓存事务 SQL 语句的内存大小,取值范围在 32-40960,单位 M,默 认值 512。 |
exec_trx | 允许缓存事务的个数,取值范围在 1000-10000,默认值 5000。 | exec_row | 数据入库时允许的最大批量行数,取值范围在 1-2000,默认值 1 |
recv | 数据来源配置,该参数是一个功能标签,需要配置它的子项。具体配置请参考 NET 模块中 RECV 相关的配置说明 | driver | 数据库的 ODBC 驱动名 |
2.3.1使用
启动该执行器前,请先确保MGR 启动框架已处于正常运行状态。
start exec ##启动
stop exec ##停止
2.4NET(传输模块)
2.4.1配置
NET 模块在同步中承担节点之间数据的收发任务,CPT 模块需要通过它来发送数据, EXEC 模块则需要通过它来接收数据。除了常规的发送和接收功能以外,NET 模块还具有消息转发和消息路由的功能,消息转发时,可以选择通过文件中转的方式,也可以选择网络直连的方式。
下面为NET部分常用的配置元素及其含义:
配置名 | 含义 | 配置名 | 含义 |
send | 数据发送配置 | ip | 需在投递到下一级的 IP 地址。 |
mgr_port | 需在投递到下一级的备用 DMHS 管理模块监听端口。 | ||
data_port | 需在投递到下一级的备用 DMHS NET 模块监听端口。 | ||
filter | NET 模块对投递消息的过滤配置 | ||
disable | NET 模块过滤规则黑名单设置 | ||
disable | NET 模块过滤规则黑名单设置 | ||
map | NET 模块对投递对像名进行映射 | ||
recv | 数据来源配置 | data_port | 数据来自本地监听的数据端口号,取值范围在 1000-65535。 |
mgr_port | 管理命令本地监听的数据端口号,取值范围在 1000-65535。 | ||
data_file | 数据来源自缓存文件 |
2.4.2子模块
1.NET 消息发送子模块
经过 CPT 捕获到的日志操作,在这里进行分发,分发前可以对操作进行过滤,或者对表进行过滤和映射,还可以对消息中的列进行映射(改名、剔除和函数计算)。经过处理的消息通过网络(TCP/IP)发送给下一级,或者保存到本地文件。
2.NET 消息接收子模块
经上一级 NET 消息发送子模块通过网络传输的消息,在这里由 NET 消息接收子模块通过网络(TCP/IP)接收并发送给 EXEC 模块。
三、运行维护
DMHS 提供了一系列的命令,以便能够准确的定位同步的问题,下面将介绍同步过程中有可能会遇到的问题以及它们的解决方案,这些手段和解决方案仅供参考,实际的问题解决方案需要人工根据当前的环境进行判断。
3.1运行模块
使用控制台工具登录同步服务,执行 STATE 命令可以查看当前服务加载的模块。
3.2启停顺序
启动:是先从链路的末尾一级开始启动,逆向一级一级的启动。(目的→源端)
停止:先从源端开始停,然 后停止下一级的目标端,直到链路的最后一级;(源端→目的)
3.3统计信息
统计信息由源端的 MGR 模块通过定时调度获取 CPT 和 NET 模块的状态信息后投递到目标端,目标端接收到以后再回传 EXEC 模块的统计信息。
源端:使用 CPT+[VID]的命令来查看指定 CPT 的统计信息
目的端:使用 EXEC +[SITEID]的命令来 查看指定站点号的统计信息
3.4检查信息点
在巡检同步运行状态是否正常时,目标端的检查点信息是必检项。该信息存在于目标端 的运行日志中,格式如下:
CHECKPOINT SITEID:站点号 SEQID: 日志 LSN, EPOCH: 日志时间戳(日期)
3.5同步性能
可以通过统计信息来判断同步的性能,定位性能瓶颈发生的节点。
在源端无法获取目标端的统计信息。
目标端通过 EXEC 命令来获取指定同步链路的统计信息
在正常同步时,EXEC 模块的每秒的入库行数以及活动事务堆积的个数可以较好的判断当前同步的压力。当待入库的事务发生堆积时,需要通过其它手段来定位问题原因。
3.6归档清理
源端如果超时未清可能会造成磁盘被撑满的问题,导致源端数据库的故障。
归档清理的机制是源端的DMHS服务定时(clear_interval 参数控制)获取目标端的检查点日志 LSN 值,通过判断归档文件的日志 LSN 值和检查点的 LSN 大小来决定该归档文件能不能被清理。
如果归档文件清理受阻,往往是由于目标端检查点被阻塞导致,需要通过目标端的日志 信息进一步的定位问题。
3.7同步延时
在 DMHS 的控制台中可以执行 LAG 命令来获取数据同步的延时情况,通过控制台连接目标端 DMHS 服务后,使用 LAG 命令,获取当前内存中表字典结构中的同步延时:
LAG <siteid>
##当输入 siteid 数值时,会显示当前站点为 siteid 的正在同步的所有表的延时信息。
##当没有输入 siteid 时,会显示当前目标端注册的所有站点的正在同步的所有表的延时信息。
对于源端为ORACLE数据库或者ORACLE RAC类型,DMHS 还支持获取同步系统的整体延时情况。
需要在控制台中连接源端 DMHS 服务,然后执行如下命令获取:
LAG CPT <VID>
##VID 为当前cpt模块的虚拟ID编号,从0开始。如果不输入VID值,默认VID值为 0。
以上就是本文的主要内容,如果想了解更多关与DM数据库的知识,可以浏览以下平台:
总结:以上就是本文的内容,主要介绍了 dmhs.hs 配置文件和各个模块的配置与使用。如有错误,欢迎指正。