DMHS工具的特点
捕获器将源端数据库日志读取解析后发送出去,它必须与源端数据库在同一台机器上
即使源数据库中断了服务,也不会影响日志分析。
执行器将接收到的数据入库执行,它可以与目标端数据库处于不同机器
路由是 N 对 N 网络链路的映射,它不能对链路中的数据进行修改,而转发功能则可以针对每个下一级配置不同的过滤和映射
并行处理体系,以源数据库的事务为单位同步,TCP/IP协议传输,断电续传,备机可读写,备机可以在主机故障接管
可以支持一对一,一对多,多对一,多对多,级联同步
DM数据安装
源端准备工作
由于DMHS配置文件涉及多个配置项,在安装配置DMHS之前,需要做好相关准备工作,具体有如下准备工作:
- 检查操作系统及数据库版本以及位数,确保与待部署的DMHS版本相匹配。
- 规划好源端DMHS可使用的安装部署路径。
- DMHS部署需要设置管理端口号(mgr_port)和数据端口号(data_port),因此在部署之前,需要提供两个端口号以供使用。
- 在部署之前需要明确DMHS配置文件中连接DM7/DM8数据库的用户(db_user)及密码(db_pwd),该用户需要具有操作待同步表的权限。
- 确定是否有DDL同步需求,如果有,确定待同步的对象如表、视图、存储过程、函数、序列等,并且需要确定对象的操作如创建、删除、修改等。根据此同步需求设置ddl_mask参数值。
- 确定源端DM7/DM8数据库的归档日志是否需要DMHS进行处理如删除、保留或转移。依据此需求设置clear_flag参数值。
- 确定需要进行数据同步的用户表(白名单及黑名单)及同步映射关系,并据此需求,完成filter及map元素项的参数值设置。
目的端准备工作
DMHS部署分为源端部署和目的端部署两个步骤。在完成源端相关准备工作后,需要进行目的端的相关准备,具体有如下准备工作:
- 检查操作系统及数据库版本以及位数,确保与待部署的DMHS版本相匹配。
- 规划好目的端DMHS可使用的安装部署路径。
- DMHS部署需要设置管理端口号(mgr_port)和数据端口号(data_port),在部署之前,需要提供两个端口号以供使用。
- 在部署之前需要明确DMHS配置文件中目的端DM7/DM8数据库的用户(db_user)及密码(db_pwd),该用户用来执行同步,需要具有操作其他同步用户的权限。
- 源端是否有序列同步,如果有,目的端配置文件中需要设置参数“seq_sync_mode”取值为1。
- 目的端同步表上是否有触发器,如果有,需要禁用触发器。
源端部署
根据源端准备工作中的相关参数调研,可形成如下示例配置文件dmhs.hs:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port> <!-- 管理端口号-->
<chk_interval>3</chk_interval>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid> <!-- 源端站点编号-->
<version>2.0</version>
</base>
<cpt>
<db_type>DM7</db_type>
<db_server>127.0.0.1</db_server>
<db_user>SYSDBA</db_user> <!--数据库用户名-->
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<idle_time>300</idle_time>
<ddl_mask>OBJ:OP</ddl_mask> <!--DDL同步参数-->
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag> <!--归档删除标识-->
</arch>
<send>
<ip>192.168.200.83</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<net_pack_size>256</net_pack_size>
<net_turns>0</net_turns>
<crc_check>0</crc_check>
<trigger>0</trigger>
<constraint>0</constraint>
<identity>0</identity>
<filter> <!--过滤规则-->
<enable>
<item>SYSDBA.*</item>
</enable>
<disable/>
</filter>
<map> <!--映射规则-->
<item>SYSDBA.* == SYSDBA.*</item>
</map>
</send>
</cpt>
</dmhs>
目的端部署
根据目的端准备工作中的相关参数调研,可形成如下示例配置文件dmhs.hs:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<version>2.0</version>
<mgr_port>5345</mgr_port>
<chk_interval>3</chk_interval>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
</base>
<exec>
<recv>
<mgr_port>5345</mgr_port> <!-- 接收管理端口-->
<data_port>5346</data_port> <!-- 接收数据端口-->
</recv>
<db_type>DM7</db_type>
<db_server>127.0.0.1</db_server>
<db_user>SYSDBA</db_user> <!-- 数据库用户名-->
<db_pwd>SYSDBA</db_pwd>
<char_code>PG_GB18030</char_code>
<db_port>5236</db_port>
<level>0</level>
<exec_mode>0</exec_mode>
<exec_thr>16</exec_thr> <!--执行线程参数-->
<exec_sql>1024</exec_sql>
<exec_trx>5000</exec_trx>
<exec_rows>250</exec_rows>
<case_sensitive>0</case_sensitive>
<enable_rowid>0</enable_rowid>
<toggle_case>0</toggle_case>
<exec_policy>1</exec_policy>
<commit_policy>0</commit_policy>
<enable_merge>0</enable_merge>
<affect_row>1</affect_row>
<seq_sync_mode>1</seq_sync_mode> <!--序列同步参数-->
<trxid_tables>5</trxid_tables>
<save_point_times>4294967294</save_point_times>
<clear_trx_file>1</clear_trx_file>
<trx_max_file>5</trx_max_file>
</exec>
</dmhs>
初始装载
DMHS初始装载有两种:初始字典装载和初始数据装载。
DMHS同步源端在首次启动日志分析进行数据同步之前,需要进行初始字典装载操作,在程序目录下创建DICT文件夹,并将同步表的字典信息写入文件保存在磁盘上,然后才能启动源端日志分析模块功能。
初始数据装载主要用于将同步源端的数据装载到目的端,保持源端和目的端的数据初始一致。如果没有数据装载的需求,可以不用进行该操作。
初始字典装载
启动目的端执行服务
进行初始字典装载时,需要首先启动目的端DMHS服务。启动DMHS服务方式有命令行启动和后台服务启动。如下为Linux环境启动方式,Windows方式类似。
命令行方式: ./dmhs_server
服务名方式: ./dmhs_serverd start 或者 service dmhs_serverd start
初次启动目的端DMHS服务时,同步执行服务并未开启,需要使用DMHS控制台工具连接DMHS管理服务,手动输入start exec命令开启。具体示例如下:
./dmhs_console
CSL[INFO]: DMHS控制台工具: V3.0.2.01-Build(2016.12.15-69394trunc)_64
DMHS >connect 223.254.19.135:5345
CSL[UNKNOW]: 执行成功
DMHS >start exec
进行初始字典装载
在启动目的端DMHS执行服务后,源端启动DMHS管理服务,并使用DMHS控制台工具连接DMHS管理服务,使用COPY命令及DICT装载选项,执行字典装载操作。
DMHS >COPY 0 "SCH.NAME='XXX1'" DICT
如果有多个同步模式可以使用如下命令:
DMHS >COPY 0 "SCH.NAME IN ('XXX1','XXX2','XXX3')" DICT
将XXX替换为实际同步模式名。
初始数据装载
进行初始数据装载时,首先也需要启动目的端执行服务。操作步骤类似1.7.1节初始字典装载。在启动目的端执行服务后,启动源端DMHS管理服务,并通过DMHS控制台工具连接管理服务,使用COPY命令及相关数据装载选项进行数据装载操作。
(1)目的端已建立有相应同步表
当目标端已建立有同步表时,初始装载不需要进行表的创建,不需要使用CREATE装载关键字。示例如下:
DMHS >COPY 0 "SCH.NAME='XXX1'" INSERT|THREAD|8
如果有多个同步模式可以使用如下命令:
DMHS >COPY 0 "SCH.NAME IN ('XXX1','XXX2','XXX3')" INSERT|THREAD|8
将XXX替换为实际同步模式名。
(2)目的端需要使用DMHS创建初始表
DMHS >COPY 0 "SCH.NAME='XXX1'" CREATE|INSERT|THREAD|8
或
DMHS >COPY 0 "SCH.NAME IN ('XXX1','XXX2','XXX3')" CREATE|INSERT|THREAD|8
如果同步表有分区表,加入PARTITION选项:
COPY 0 "SCH.NAME='XXX1'" CREATE|INSERT|THREAD|8|PARTITION
DMHS运行维护
DMHS的启动运行包括同步源端启动和同步目的端启动,一般先启动同步目的端,然后启动同步源端。DMHS运行过程中会详细记录同步运行日志,可以通过查看log日志来观察DMHS运行情况。
DMHS的启动
DMHS可以命令行和后台服务两种方式来启动运行。初次启动时,DMHS仅开启管理服务,对于源端的日志分析和目的端的执行服务均需要通过手动输入控制台命令来启动。在Linux环境下,启动命令如下,Windows平台类似。进入DMHS程序目录,执行DMHS程序dmhs_server。
命令行方式: ./dmhs_server
服务名方式: ./dmhs_serverd start 或者 service dmhs_serverd start
通过执行dmhs_server程序启动DMHS管理服务后,还需要使用DMHS控制台工具连接管理服务,手动输入控制命令,来分别启动目的端的exec和源端的cpt服务。
./dmhs_console
CSL[INFO]: DMHS控制台工具: V3.0.2.01-Build(2016.12.15-69394trunc)_64
DMHS >connect 223.254.19.135:5345
CSL[UNKNOW]: 执行成功
DMHS >
启动目的端执行服务的控制台命令: start exec
启动源端捕获服务的控制台命令: start cpt
DMHS首次启动运行成功后,源端会创建dmhs_cpt.tmp文件,目的端会创建dmhs_exec.tmp文件。该文件无实际内容,仅用作标识控制。下次再次启动DMHS时,若当前程序目录下存在相关文件,则DMHS会自动开启捕获(源端)或者执行服务(目的端),而无需手动输入相应控制台启动命令。
DMHS的停止
停止DMHS服务,既可以停止DMHS内部相应同步服务,也可以直接退出DMHS进程。
停止同步服务
对于源端,可以通过控制台工具连接DMHS管理服务,然后执行如下命令来停止捕获分析服务。
DMHS >stop cpt
对于目的端,通过执行如下命令来停止执行服务。
DMHS >stop exec
以上DMHS服务停止命令执行成功后,DMHS会删除程序目录下的dmhs_cpt.tmp或者dmhs_exe.tmp文件。上述命令执行成功后,数据同步不再进行,但是DMHS进程并未退出。
退出DMHS进程
退出DMHS进程可以在程序目录下执行如下脚本:
./dmhs_serverd stop 或者使用service dmhs_serverd stop。使用命令行方式启动的程序可以直接退出程序即可