一、DMHS工具特点
(1)捕获器将源端数据库日志读取解析后发送出去,它必须与源端数据库在同一台机器上
(2)即使源数据库中断了服务,也不会影响日志分析。
(3)执行器将接收到的数据入库执行,它可以与目标端数据库处于不同机器
(4)路由是 N 对 N 网络链路的映射,它不能对链路中的数据进行
修改,而转发功能则可以针对每个下一级配置不同的过滤和映射
(5)并行处理体系,以源数据库的事务为单位同步,TCP/IP协议传输,断电续传,备机可读写,备机可以在主机故障接管,
(6)可以支持一对一,一对多,多对一,多对多,级联同步
二、开启归档和逻辑日志
1、打开dm.ini 添加如下参数
ARCH_INI = 1
RLOG_APPEND_LOGIC = 1
dm.ini 配置参数中“FAST_COMMIT”必须为 0
2、添加归档配置文件。在“dm.ini”同目录下创建文件“dmarch.ini”
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dmdbms/arch #归档目录
ARCH_FILE_SIZE = 128 #归档文件大小,单位 MB
ARCH_SPACE_LIMIT = 0 #空间大小限制,0 表示不限
3、重启数据库,使其配置生效
4、验证配置的正确性
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;
三、需要在源端和目的端分别安装dmhs软件。
1) 将安装包上传至服务器,并授予可执行权限
chmod 775 dmhs_V3.1.3_dm7.bin
2) 运行安装程序(命令行安装)
./dmhs_V3.1.3_dm7.bin -i
四、配置DDL
如果要求 DDL 同步,那么需要创建 DDL 触发器和辅助表。创建的脚本参见 DMHS 安装目录下 scripts 子目录中“ddl_sql_dm8.sql”。注意创建时需要使用 SYSDBA 用户。
cd /opt/dmhs/scripts/
`/opt/dmhs/scripts/ddl_sql_dm8.sql
执行成功后显示:
11条语句执行成功
五、配置DMHS安装目录下dmhs.hs文件
1、源端
<?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>dm8</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>
<dict_dir>/home/dmdba/dm/dmhs/dmhs_dict</dict_dir>
<ddl_mask>obj:op</ddl_mask>
<parse_thr>1</parse_thr>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
<bak_dir>/dbarch/dmarch</bak_dir>
</arch>
<send>
<ip>192.168.159.155</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<net_turns>0</net_turns>
<trigger>1</trigger>
<constraint>0</constraint>
<identity>1</identity>
<filter>
<enable>
<item>*.*</item>
</enable>
</filter>
<map>
</map>
</send>
</cpt>
</dmhs>
2、目的端
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<mgr_port>5355</mgr_port>
<chk_interval>2</chk_interval>
<siteid>4</siteid>
<lang>ch</lang>
</base>
<recv>
<data_port>5356</data_port>
<exec>
<db_type>dm8</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>
<db_name></db_name>
<exec_thr>4</exec_thr>
<exec_sql>512</exec_sql>
<exec_trx> 5000 </exec_trx>
<exec_rows>250</exec_rows>
<exec_policy>2</exec_policy>
<level>3</level>
<affect_row>0</affect_row>
</exec>
</recv>
</dmhs>
六、编辑源端和目的端的dmhs_serverd配置文件(可略)
主要是改两点,path=/opt/dmhs/bin/dmhs.xml和export LD_LIBRARY_PATH=/home/dmdba/dm/dmdbms/bin:$DMHS_HOME:$LD_LIBRARY_PATH)
七、启动服务
分别在目的端和源端执行命令,启动dmhs_server进程
./dmhs_serverd start
八、装载
目的端启动dmhs控制台,执行线程:
源端启动dmhs控制台,执行装载命令:
在初次搭建过程中,需要将源端数据加载到目的端,有两种操作方法。
如果需要保证目的端数据和源端数据完全一致,搭建时选择将源数据库停止对应用程序访问,并对源数据库进行物理备份,并在目的端数据库进行还原。还原操作需要放到启动dmhs_server之前。
此种情况下,源端装载,执行命令:
[root@db01 bin]# ./dmhs_console
CSL[INFO]: DMHS控制台工具: V3.0.2.01-Build(2015.10.09)
DMHS >connect
CSL[UNKNOW]: 执行成功
DMHS >COPY 0 "SCH.NAME IS NOT NULL" DICT|LSN
这种装载方法,只会进行字典信息及LSN值的装载,启动同步后会从COPY时刻记录的LSN值开始进行数据同步。
九、开启数据同步
源端开启数据同步
在数据装载完毕后,在源端开启数据同步
DMHS >start cpt
(安装完毕,可在源端创建表检测目的端是否同步)