注册
DM7主备-DM7单机DMHS部署
专栏/技术分享/ 文章详情 /

DM7主备-DM7单机DMHS部署

勇往直前 2024/09/27 795 0 0
摘要

一 环境介绍

机器名 IP 备注
DM7_A 192.168.1.101 主备集群-A节点
DM7_B 192.168.1.102 主备集群-B节点
DM7_C 192.168.1.103 主备集群-确认监视器
DM7_D 192.168.1.104 目的端单机库

二 环境检查

1 检查是否开启归档

SQL> SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE='LOCAL' AND ARCH_IS_VALID='Y';

2 检查是否开启逻辑附加日志

SQL> SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';

3 开启归档(主备集群开启归档可忽略)

SQL>alter database mount;
SQL>alter database add archivelog ‘dest=/dbarch/dmarch,type=local,file_size=2048,,space_limit=20480’;
SQL>alter database archivelog;
SQL> alter database open;

4开启逻辑附加日志

SQL>SP_SET_PARA_VALUE(1,’RLOG_APPEND_LOGIC,1);
SQL>COMMIT;

5 检查重做日志

SQL> SELECT PATH FROM SYS.V$RLOGFILE;

6 检查FAST_COMMIT参数是否为0

SQL> SELECT PARA_VALUE FROM V$DM_INI WHERE PARA_NAME = 'FAST_COMMIT';

三 安装DMHS

分别在A、B、D三台机器上安装DMHS
image.png
image.png

四 配置DDL

如果需要同步DDL则需要创建DDL触发器和辅助表。Sql脚本在dmhs/scripts目录下,根据实际需要选择对应版本的sql脚本文件执行。只需要在主库执行sql脚本,备库自动同步
image.png

五 修改配置文件

1 A/B节点

数据守护中A\B两个节点配置文件一致,注意将group修改为1,db_server修改为dm_svc.conf中的主备集群服务名,同时主备节点中siteid一致。

<?xml version="1.0" encoding="GB2312"?> 
<dmhs> 
<base><!-- MGR 配置在 dmhs.hs 配置文件中对应 base 元素 --> 
<lang>ch</lang><!-- 语言选项,ch 为中文,en 为英文 --> 
<mgr_port>5345</mgr_port><!-- 管理端口,同步服务起动以后,会监听该端口 
上的连接,用于执行客户端工具发过来的命令和接收统计信息 --> 
<chk_interval>3</chk_interval><!-- 状态轮询间隔,默认为 3s,最小值 1s,最大 
值 60s --> 
<ckpt_interval>60</ckpt_interval><!-- 参数表示执行端 EXEC 模块检查点刷新的 
时间间隔,单位为秒 --> 
<siteid>1</siteid><!-- 站点 ID,这个 ID 配置时要注意,全局唯一,最小值 0,最 
大值 65535 --> 
<version>2.0</version><!-- 配置文件的版本号 --> 
<group>1</group><!-- 是否启用主备功能 --> 
</base> 
<cpt><!-- 日志分析模块,这项配置可以配置多个,也就是可以配置多个捕获模块,如果 
该节点只作为执行端,该节点需要删除 --> 
<db_type>dm7</db_type><!-- 数据库类型 --> 
<db_server>dm7_watcher</db_server><!-- 数据库服务名或 IP,默认为 127.0.0.1 --> 
<db_user>SYSDBA</db_user><!-- 数据库用户名,默认为 SYSDBA --> 
<db_pwd>SYSDBA</db_pwd><!-- 数据库口令,默认为 SYSDBA --> 
<db_port>5236</db_port><!-- 数据库端口号,默认为 5236 --> 
<dict_dir>/dbbak/dmhs_dict</dict_dir><!-- 离线字典存放目录 --> 
<char_code>PG_GB18030</char_code><!-- 源端数据库的字符集 --> 
<ddl_mask>OBJ:OP</ddl_mask><!-- 分析端 DDL 同步支持的对象和操作 --> 
<arch><!-- 归档信息配置 --> 
<clear_interval>600</clear_interval><!-- 归档日志清理间隔 --> 
<clear_flag>1</clear_flag><!-- 归档日志清理选项,选配 0(不操作)、1(删除)、2(移 
走),默认 0 --></arch> 
<send><!-- 数据发送配置 --> 
<ip>192.168.23.105</ip><!-- 需在投递到下一级的 IP 地址 --> 
<mgr_port>5345</mgr_port><!-- 目的端管理端口,默认为 5345,最小值 
1000,最大值 65535 --> 
<data_port>5346</data_port><!-- 目的端数据接收端口号,默认为 5346, 
最小值 1000,最大值 65535 --> 
<net_turns>0</net_turns><!-- 是否开启网闸模式,默认为 0,限定值 0(关 
闭),1(开启),网匝模式下,主机看不到备机的统计信息 --> 
<trigger>1</trigger><!-- 是否忽略触发器,默认为 0,限定值 0,1 --> 
<constraint>0</constraint><!-- 是否忽略约束,默认为 0,限定值 0,1 --> 
<identity>0</identity><!-- 自增列处理方式,0(启用)或 1(忽略),默认 
值为 1 --> 
<filter><!-- NET 模块对投递消息的过滤配置 --> 
<enable><!-- NET 模块过滤规则白名单设置 --> 
<item>*.*</item> 
</enable> 
<disable><!-- NET 模块过滤规则黑名单设置 --> 
<item></item> 
</disable> 
</filter> 
<map><!-- NET 模块对投递对象名进行映射 --> 
</map> 
</send> 
</cpt> 
</dmhs>

2 修改目的端配置文件

<?xml version="1.0" encoding="GB2312"?> 
<dmhs> 
<base><!-- 管理模块的基本配置 --> 
<lang>ch</lang><!-- 语言选项,ch 为中文,en 为英文 --> 
<mgr_port>5345</mgr_port><!-- 管理端口,同步服务起动以后,会监听该端口 
上的连接,用于执行客户端工具发过来的命令和接收统计信息 --> 
<chk_interval>2</chk_interval><!-- 状态轮询间隔,默认为 3s,最小值 1s,最大 
值 60s --> 
<ckpt_interval>45</ckpt_interval><!-- 执行端检查点间隔,默认 60s,最小值 10s, 
最大值 65536s --> 
<siteid>2</siteid><!-- 站点 ID,这个 ID 配置时要注意,全局唯一,最小值 0,最 
大值 65535 --> 
<version>2.0</version><!-- 配置文件的版本号 --> 
</base> 
<recv><!-- 接收模块的基本配置,如果该节点只作为分析端,该节点需要删除 --><data_port>5346</data_port><!-- 数据接收端口号,默认为 5346,最小值 1000,最 
大值 65535 --> 
<exec><!-- 执行模块的基本配置 --> 
<db_type>dm7</db_type><!-- 数据库类型 --> 
<db_server>127.0.0.1</db_server><!-- 数据库服务名或 IP --> 
<db_user>SYSDBA</db_user> 
<db_pwd>SYSDBA</db_pwd> 
<db_port>5236</db_port><!-- 数据库端口号,默认为 5236 --> 
<db_name></db_name><!-- 默认数据库名,默认为空串(只针对 dm6 有用)--> 
<exec_mode>1</exec_mode><!-- 执行模式, 1(多线程执行),2(ETL 模式),3(消息中 
转模式,跨网段级联时使用) --> 
<exec_thr>16</exec_thr><!-- 执行线程个数,只有当 exec_mode 为 1 时才会生效! 
默认为 1,最小值 1,最大值 64 --> 
<exec_sql>512</exec_sql><!-- SQL 缓存大小,默认为 512M,最小值 32M,最大 
值 4096M --> 
<exec_trx>5000</exec_trx><!-- 事务缓存个数,默认为 5000,最小值,1000,最 
大值 10000 --> 
<exec_rows>250</exec_rows><!-- 批量绑定行数,默认为 250,最小值 1,最大 
值 2000 --> 
<exec_policy>2</exec_policy><!-- 事务入库出错时的执行策略,可选 0、1 或 2, 
默认为 1 --> 
<msg_col_size>8000</msg_col_size><!-- 保存缓存消息列的大小,这取决于目的 
库的块大小, 默认为 8000,最小值 1000,最大值 8000 --> 
<level>0</level><!-- 复制级别,默认为 0,最小值 0,最大值 65535 --> 
<affect_row>0</affect_row><!-- 是否启用影响行数检查 --> 
</exec> 
</recv> 
</dmhs>

六 启动应用

1 启动源端(主备集群中A\B两个节点)和目的端的dmhs_server

image.png
image.png
image.png

2 启动目的端C节点dmhs_console并执行start exec

image.png
image.png

3 主库A节点dmhs_console中执行copy 0 “sch.name is not null” dict|lsn。注意:如果不是首次部署,需要先stop cpt。备库无需copy字典,能够自动同步

image.png
image.png
image.png

4 主库A节点执行start cpt

image.png
image.png

5 备库B节点执行start cpt

image.png
image.png
image.png

七 测试验证

1 主库A节点建测试表并插入测试数据,D节点检查

image.png
image.png

2 主备切换后在B节点建测试表并插入测试数据,D节点检查

image.png
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服