DMHS在DM6双向同步的最佳实践
一、前期准备:
在安装DMHS时,需要确认如下几个问题:
1.DMHS安装时,需要确认源端,目的端网络能够互相通信,最简单的方法是测试是否可以从源端发包到目的端(dmnet小工具测试即可)。
2.确认DMHS同步规则(可以单向同步,也可以双向同步,以下内容为双向同步)。确认需要同步的模式,同步的表等等。
3.需要适配操作系统版本和数据库版本的DMHS同步软件,若源端和目的端的操作系统环境相同,可以使用同一版本(此处以远端和目的端都为DM6为例)。
二、安装DMHS软件
1、字符界面安装
需要在源端和目的端分别安装dmhs软件,如果为HA双机环境,分别使用root用户在两台服务器上安装dmhs。
1)将安装包上传至服务器,并授予可执行权限
chmod +x dmhs_v3.0_rock4.2.bin
2)运行安装程序
./ dmhs_v3.0_rock4.2.bin -i
3)输入key文件
[root@localhostdmdba]# ./dmhs_V3.0.2.01_dm7_rock4.2_64(20151009).bin -i
Extract install files…
Welecom to DMHS Install Program
Require Space:100M
Whether to input the path of Key File? (Y/y:yes N/n:No)[Y/y]Y
Please Input the Path of the Key File [dmhs.key]:/home /dmhs.key
4)输入安装路径
[root@loPlease input the install path [/opt/dmhs]:/home/dm/dmhs
Available Space :1488M
Please Confirm the install path?(Y/y:yes N/n:No)[Y/y]Y
5)输入安装参数,[]中的为默认值,直接输入回车选择默认值,其中源端和目的端的siteid要设置的不同(如源端使用1,目的端使用2)。
Please input the language (ch/en)[ch]:ch
Please input the mgr_port (1000-65535)[5345]:
Please input the chk_interval (1-60) second[3]:
Please input the ckpt_interval (10-65536) second[60]:
Please input the siteid (0-65536):1
Whether to config statistical analysis? (Y/y:Yes N/n:No)N
6)安装目的端DMHS,同上述步骤保持一致即可。
三、源端配置
1、源端DMHS前期准备
开启源端DM6逻辑附加日志,修改dm.ini,配置ENABLE_LOGICAL_DML_LOG=1。
2.配置源端DM6数据库归档
(1)配置归档:
创建对应的归档日志目录
开启归档日志SQL语句:
ALTER DATABASE 数据库名称 ARCHIVELOG;
alter database 数据库名称 modify archivedir to '/dbbak/dmarch’;
ALTER DATABASE 数据库名称 ARCHIVELOG;
alter database 数据库名称 modify archivedir to '/dbbak/dmarch’;
3.执行DMHS脚本
(1)脚本在DMHS安装路径下的scripts目录下,脚本名为ddl_sql_DM6_v3.sql,修改脚本内对应的数据库名称(同步几个库修改几次),分别执行脚本。
(2)脚本执行完毕后需要检查,使用如下sql语句:
select * from systables where name like ‘%DMHS%’;(正常有7个DMHS开头的表)
4、源端配置文件(以下配置同步2个库为例,如果同步更多库,再次引入cpt标签即可):
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base><!-- 管理模块的基本配置 -->
<lang>ch</lang><!-- 语言选项,ch为中文,en为英文 -->
<mgr_port>5345</mgr_port><!-- 管理端口号,默认为5345,最小值1000,最大值65535 -->
<chk_interval>2</chk_interval><!-- 状态轮询间隔,默认为3s,最小值1s,最大值60s -->
<ckpt_interval>45</ckpt_interval><!--执行端检查点间隔,默认60s,最小值10s,最大值65536s -->
<siteid>1</siteid><!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
<mem_check>0</mem_check>
</base>
<cpt><!-- 这项配置可以配置多个,也就是可以配置多个捕获模块,如果该节点只作为执行端,该节点需要删除 -->
<db_type>dm6</db_type><!-- 数据库类型,默认为dm7,限定值Oracle10g,Oracle11g,dm6,dm7 -->
<db_server>127.0.0.1</db_server><!-- 数据库服务名或IP,默认为127.0.0.1-->
<db_user>SYSDBA</db_user><!-- 数据库用户名,默认为SYSDBA -->
<db_pwd>SYSDBA</db_pwd><!-- 数据库口令,默认为SYSDBA -->
<db_port>12345</db_port><!-- 数据库端口号,默认为12345 -->
<db_name>数据库名</db_name><!-- 默认数据库名,默认为空串(只针对dm6有用)-->
<idle_time>300</idle_time><!-- 分析线程空闲睡眠时间,默认值为300ms,最小值0ms,最大值65536ms -->
<ddl_mask>op:obj</ddl_mask><!-- 分析端是否支持DDL同步,可选项0(不支持DDL), 1(支持DDL),需要将安装脚本中对应的DDL脚本在源端执行-->
<parse_thr>1</parse_thr><!-- 分析线程个数,默认为1,最小值1,最大值32,多线程分析时,不支持ALTER TABLE操作同步 -->
<dict_dir>归档文件路径</dict_dir>
<arch>
<clear_interval>1800</clear_interval><!-- 归档文件清理间隔,默认为600s,最小值60s,最大值2000000000s -->
<clear_flag>0</clear_flag><!-- 清除归档日志的方式,可选项0(无动作), 1(删除归档文件), 2(表示移走归档文件)-->
<bak_dir></bak_dir><!-- clear_flag项配置成2时,该配置项可以用来指定归档文件转移的目录,如果未配置这项,则转移到归档路径的log_bak目录下 -->
</arch>
<send><!-- 发送模块配置 -->
<ip>目的端IP</ip><!-- 目的端IP,默认127.0.0.1 -->
<mgr_port>5345</mgr_port><!-- 目的端管理端口,默认为5345,最小值1000,最大值65535 -->
<data_port>5346</data_port><!-- 目的端数据接收端口号,默认为5346,最小值1000,最大值65535 -->
<level>0</level><!-- 复制级别,默认为0,最小值0,最大值65535 -->
<trigger>0</trigger><!-- 是否忽略触发器,默认为0,限定值0,1 -->
<constraint>1</constraint><!-- 是否忽略约束,默认为0,限定值0,1 -->
<identity>1</identity><!-- 是否忽略自增列,默认为0,限定值0(不忽略,插入同步过来的值),1(忽略,插入自增列自身的值) -->
<net_turns>0</net_turns><!-- 是否开启网闸模式,默认为0,限定值0(关闭),1(开启),网匝模式下,主机看不到备机的统计信息 -->
<filter><!-- 过滤,必须指定,一定要注意大小写,要跟源库中的对像名大小写保持一致 -->
<enable><!-- 白名单,所有允许同步的表 -->