一、部署前准备工作
1.1、源端目的端都修改dm.ini参数,设置归档标记和逻辑日志标记:
ARCH_INI=1
RLOG_APPEND_LOGIC=1
重启数据库实例后查询数据库归档状态
SQL> select arch_mode from v$database;
LINEID ARCH_MODE
---------- ---------
1 Y
used time: 3.236(ms). Execute id is 123.
可以用如下语言查询数据库附加日志状态
SQL> select * from v$dm_ini where para_name='RLOG_APPEND_LOGIC';
LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE
---------- ----------------- ---------- --------- ---------
1 RLOG_APPEND_LOGIC 1 0 2
used time: 2.016(ms). Execute id is 125.
1.2、源端目的端都配置dmarch.ini(归档日志):
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmarch #归档目录
ARCH_FILE_SIZE = 128 #归档文件大小,单位 MB
ARCH_SPACE_LIMIT = 2048#空间大小限制,0 表示不限制
1.3、DDL同步配置:
执行DDL同步脚本方式。在源端DM7/DM8数据库中以SYSDBA用户执行DDL同步脚本,在SYSDBA模式下创建相关DMHS系统表及触发器,并在DMHS配置文件中配置ddl_mask参数选项以启用该功能。
./disql
SQL> conn SYSDBA/rootrootroot
SQL> start /opt/ddl_sql_dm8.sql
SQL> exit
二、安装部署
2.1、目的端部署流程
先启动目的端,配置dmhs.hs:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<name>exec</name>
<ckpt_interval>60</ckpt_interval>
<siteid>3</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<mgr_port>5345</mgr_port> <!-- 接收管理端口-->
<data_port>5346</data_port> <!-- 接收数据端口-->
</recv>
<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><!-- 数据库端口号-->
</exec>
</dmhs>
[dmdba@localhost bin]$ ./dmhs_server dmhs.hs
2.2、配置源端
进入bin目录,配置dmhs.hs:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<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>127.0.0.1</db_server>
<db_user>SYSDBA</db_user> <!--数据库用户名-->
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port> <!--源端数据库监听端口号-->
<idle_time>10</idle_time> <!—cpt休眠时间-->
<parse_thr>1</parse_thr>
<ddl_mask>OP:OBJ:REC</ddl_mask> <!--DDL同步参数-->
<arch>
<clear_interval>60</clear_interval> <!--归档日志清理间隔(s)-->
<clear_flag>0</clear_flag> <!--归档删除标识-->
</arch>
-->
<send>
<ip>192.168.209.129</ip> <!--投递到下一级的ip地址-->
<mgr_port>5345</mgr_port> <!--下一级的管理端口-->
<data_port>5346</data_port> <!--下一级的NET模块监听端口-->
<net_turns>0</net_turns>
<trigger>1</trigger>
<constraint>1</constraint>
<identity>1</identity>
<filter> <!--过滤规则-->
<enable>
<item>SYSDBA.*</item>
</enable>
<disable/>
</filter>
<map> <!--映射规则-->
</map>
</send>
</cpt>
[dmdba@localhost bin]$ ./dmhs_server dmhs.hs
2.3、F&Q
启动执行模块时出现错误,库文件libdmhs_exec.so未找到
此时要卸载dmhs重装,因为执行端装了精简版,应该装web版
在dmhs目录下卸载,./uninst.sh -i
重新安装,然后修改环境变量:
export LD_LIBRARY_PATH=/home/dmdba/dmhs/bin:/home/dmdba/dmhs/db/bin
让环境变量生效source /home/dmdba/.bash_profile后,查询一下:
三、初始装载
DMHS初始装载有两种:初始字典装载和初始数据装载。
DMHS同步源端在首次启动日志分析进行数据同步之前,需要进行初始字典装载操作,在程序目录下创建DICT文件夹,并将同步表的字典信息写入文件保存在磁盘上,然后才能启动源端日志分析模块功能。
初始数据装载主要用于将同步源端的数据装载到目的端,保持源端和目的端的数据初始一致。如果没有数据装载的需求,可以不用进行该操作。
3.1、启动目的端执行服务
初次启动目的端DMHS服务时,同步执行服务并未开启,需要使用DMHS控制台工具连接DMHS管理服务,手动输入start exec命令开启。
3.2、进行初始字典装载
copy 0 " sch.name='SYSDBA' " DICT
3.3、F&Q
出现错误:libcpt_dm8.so未找到
排查后发现精简安装缺少这个,可以从另一个虚拟机上发送过来
scp 192.168.209.181:/home/dmdba/dmhs/db/bin/*.so ./
说明:so文件来自于dmdci.zip压缩文件。
修改环境变量
export LD_LIBRARY_PATH=/home/dmdba/dmhs/bin:/home/dmdba/dmhs/db/bin:/home/dmdba/dmhs/bin/lib
重新启动
./dmhs_server dmhs.hs
输入:
copy 0 " sch.name='SYSDBA' " dict
四、同步链接测试
在搭建完同步链路之后简单测试一下同步
4.1 、 DDL同步功能测试
使用管理工具,在源端创建两个表:
浏览表数据,修改
Table_1
Table_2
在目的端未发现
在源端上操作:
copy 0 "sch.name='SYSDBA'" clear|dict
重新装载离线字典
copy 0 "sch.name='SYSDBA'" create|insert
重新查看
可以发现两张表已装载
4.2 、表修改数据同步功能测试
启动捕获
start cpt
修改表内数据
保存后查看目的端:
两边已同步,证明搭建成功。