Dmhs数据实时同步搭建DM7到DM7

Dmhs数据实时同步搭建DM7到DM7

准备工作

环境规划

源端:   dm7a   192.168.80.11         kylin10

目的端: dm7b   192.168.80.12         kylin10

1.确定且源端的归档日志和逻辑日志已经打开;
dm.ini参数

ARCH_INI = 1

RLOG_APPEND_LOGIC = 1

dmarch.ini配置

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST =/dm7/arch #归档目录

ARCH_FILE_SIZE = 128 #归档文件大小,单位 MB

ARCH_SPACE_LIMIT = 0 #空间大小限制,0 表示不限制。

  1. 启动源端和目的端的数据库(特别是修改了归档日志和逻辑日志参数后一定要重启数据库才能生效)。
  2. 安装dmhs软件,源端目的端都需要安装

(1)上传dmhs软件并授权

 

使用图形化安装

./dmhs_xxxx

 

选择下一步

 

选择接受许可

 

因为是测试搭建选择免费试用

 

选择安装目录点击下一步

 

选择安装

 

 

选择默认ip 源端ip

 

 

选择自动启动

 

下一步

 

确定

 

执行脚本

 

 

安装完成

 

在目的端也进行安装

同步DDL操作

如果需要启动 DDL 同步功能,在启动捕获器之前,需要完成DDL配置。

对于DM7数据库,有两种配置方法。一是执行DMHS安装程序目录的scripts 文件夹中ddl_sql_dm7.sql,二是在 dm.ini 中设 置 参 数 RLOG_APPEND_SYSTAB_LOGIC 为1。

这里使用执行sql脚本方式找到相应的ddl脚本

 

在管理工具执行

 

脚本执行完毕后通过以下sql查询辅助表和触发器是否创建成功:

select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status = 'VALID';

 

select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DMHS%' and status = 'Y';

 

检查FAST_COMMIT参数是否为0

select para_value from v$dm_ini where para_name = 'FAST_COMMIT';

 

配置dmhs.hs

源端

dmhs.hs 是 DMHS 默认的配置文件名,如果需要 DDL 同步,那么基本的配置示例如下:
切换至dmdba用户,在/dm7/dmhs/bin2下创建dmhs.hs

<?xml version="1.0" encoding="GB2312"?>

<dmhs>

<base>

<lang>ch</lang>

<mgr_port>5345</mgr_port>

<ckpt_interval>60</ckpt_interval>

<siteid>1</siteid>   #站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535

</base>

<cpt>

<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>

<db_ssl_path></db_ssl_path>

<db_ssl_pwd></db_ssl_pwd>

<parse_thr>1</parse_thr>

<ddl_mask>op:obj</ddl_mask> <!--DDL配置项-->

#<dict_dir>/dbarch/dict</dict_dir>  #数据字典的目录挂在共享磁盘 (创建/dict)

<arch><!--归档清理配置项-->

<clear_interval>600</clear_interval>

<clear_flag>1</clear_flag>       #归档删除方式

<bak_dir>/dm7/arch_bak</bak_dir>

</arch>

<send><!-- 发送模块配置 -->

<ip>192.168.80.11</ip>   #目的端ip

<mgr_port>5345</mgr_port>

<data_port>5346</data_port>

<trigger>1</trigger><!-- 是否忽略触发器,默认为0,限定值0,1 -->

<constraint>1</constraint><!-- 是否忽略约束,默认为0,限定值0,1 -->

<identity>1</identity>

<net_turns>0</net_turns>

<filter><!--过滤配置项-->

<enable><!-- 白名单,所有允许同步的表 -->

<item>SYSDBA.*</item>

</enable>

</filter>

<map><!--映射配置项-->

#<item>SYSDBA.*==DMHS.*</item>

</map>

</send>

</cpt>

</dmhs>

目的端

<?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>60</ckpt_interval><!-- 执行端检查点间隔,默认60s,最小值10s,最大值65536s -->

              <siteid>2</siteid><!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->

       </base>

       <recv><!-- 接收模块的基本配置,如果该节点只作为分析端,该节点需要删除 -->

              <data_port>5346</data_port><!-- 数据接收端口号,默认为5346,最小值1000,最大值65535 -->

              <exec><!-- 执行模块的基本配置 -->

                     <db_type>dm7</db_type><!-- 数据库类型,默认为dm7,限定值Oracle10g,Oracle11g,dm6,dm7 -->

                     <db_server>192.168.80.11</db_server><!—本地数据库服务名或IP -->

                     <db_user>SYSDBA</db_user><!-- 数据库用户名,默认为SYSDBA -->

                     <db_pwd>SYSDBA</db_pwd><!-- 数据库口令,默认为SYSDBA -->

                     <db_port>5236</db_port><!-- 数据库端口号,默认为5236 -->

                     <db_name></db_name><!-- 默认数据库名,默认为空串(只针对dm6有用) -->

                     <exec_mode>1</exec_mode><!-- 执行模式, 1(多线程执行),2(ETL模式),3(消息中转模式,跨网段级联时使用) -->

                     <exec_thr>4</exec_thr><!-- 执行线程个数,只有当exec_mode为1时才会生效!默认为1,最小值1,最大值64 -->

                     <exec_sql>1024</exec_sql><!-- SQL缓存大小,默认为512M,最小值32M,最大值4096M -->

                     <exec_trx> 5000 </exec_trx><!-- 事务缓存个数,默认为5000,最小值,1000,最大值10000 -->

                     <exec_rows>1000</exec_rows><!-- 批量绑定行数,默认为250,最小值1,最大值2000 -->

                     <exec_policy>2</exec_policy><!--执行策略:0 出错后忽略继续。1 出错后停止执行。2 出错后部分执行继续-->

                     <msg_col_size>8000</msg_col_size><!-- 保存缓存消息列的大小,这取决于目的库的块大小, 默认为8000,最小值1000,最大值8000 -->

                     <level>0</level><!-- 复制级别,默认为0,最小值0,最大值65535 -->

              </exec>

       </recv>

</dmhs>

开启目的端DMHS服务

执行之前需要编辑dmhs_serverd中的$DMHS_HOME(描述dmhs的bin目录)与path(描述dmhs.hs配置文件位置)参数

[dmhs@localhost bin]#./dmhs_serverd start

[dmhs@localhost bin]#./dmhs_console

DMHS >connect

DMHS >start

开启源端DMHS服务:

./dmhs_serverd start

,/dmhs_server

初始装载:

装载一般有两种选择,1为备份还原,2为从配置好时开始同步。在初次搭建过程中,需要将源端数据加载到目的端,有三种操作方法。

如果需要保证目的端数据和源端数据完全一致,搭建时选择将源数据库停止对应用程序访问,并对源数据库进行物理备份,并在目的端数据库进行还原。还原操作需要放到启动dmhs_server之前。

种情况下,目的端装载,执行命令:

[root@localhost 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值开始进行数据同步。

[root@localhost bin]# ./dmhs_console

CSL[INFO]: DMHS控制台工具: V3.0.2.01-Build(2015.10.09)

DMHS >connect

CSL[UNKNOW]: 执行成功

DMHS >COPY 0 "SCH.NAME='D5000'" TRUNCATE|INSERT|LOCK|DICT|LSN

另外针对于一些特殊情况(例如源端磁盘紧张,且两端数据需要完全相同,无法备份的情况),在以上方法均不能适用时可采取直接copy的方法。

[root@localhost 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 " CREATE|INSERT|DROP|THREAD|8

以上命令可根据源端信息在目的端建表并插入数据,相当于查询建表(另外要注意如果配置有黑白名单的情况下,某些操作可能无法同步。THREAD|8为使用8线程完成copy工作。)

初始装载完成后,则可以开启同步:

源端DMHS:

./dmhs_console

DMHS >start

更多内容请访问 达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值