注册
DM数据库跨节点双向同步部署简介
培训园地/ 文章详情 /

DM数据库跨节点双向同步部署简介

梦幻之塔 2023/09/26 975 0 0

DM数据库跨节点双向同步部署简介

    目前同步程序在国网行业里面应用广泛,随着业务逐渐的复杂化,其需求已有最初的单向同步向双向同步过渡。但因部分网络环境的限制可能出现两端的数据库服务器无法直接通信,那么就需要通过中转机器来实现其间接通信。根据中转机器的个数不定,其配置规则可能也有所不同。本文主要简述了中转机器为一台或两台情况下的搭建细则,具体架构分为:1)跨单节点双向同步;2)跨双节点双向同步_文件转发方式;3)跨双节点双向同步_文件转发和路由转发结合方式;

一、同步架构简述

    以下三种架构环境版本相同,具体如下
    操作系统:红帽Red Hat Enterprise Linux Server release 6.8
    数据库:V7.6.1.112-Build(2021.10.28-149686-10036)ENT
    DMHS:V3.1.3-Build(2020.09.30-94249trunc)_D64
    且源端及目的端数据库已部署完毕,归档已配置。

1、跨单节点双向同步

1.1环境介绍

    本次测试是在本机IP分别为192.168.113.130、192.168.113.132和192.168.113.131三台虚拟机间部署DM7数据库间的跨单节点双向同步,本架构在同步的数据向目的端传输时(正反向一致),均需在中转节点上落地文件,然后到目的端入库;数据库版本为DM7(20211028),同步程序版本为DMHS(20200930)。同步示意图如下:
图片1.png

1.2配置文件

源端配置文件(192.168.113.130机器)

<dmhs>
	<base><!-- 管理模块的基本配置 -->
		<lang>ch</lang><!-- 语言选项 -->
		<mgr_port>5345</mgr_port><!-- 管理端口号 -->		
		<chk_interval>2</chk_interval><!-- 状态轮询间隔 -->		
		<ckpt_interval>45</ckpt_interval><!--执行端检查点间隔 -->
		<siteid>3</siteid><!-- 站点ID,这个ID配置时要注意,全局唯一 -->
    <mem_check>0</mem_check>           
	</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_name></db_name><!-- 默认数据库名>
		<idle_time>300</idle_time><!-- 分析线程空闲睡眠时间-->
		<ddl_mask>op:obj</ddl_mask><!-- 分析端是否支持DDL同步-->
		<parse_thr>1</parse_thr><!-- 分析线程个数 -->	
		<dict_dir>/dmhs/dict</dict_dir>
    <arch>
			<clear_interval>1800</clear_interval><!-- 归档文件清理间隔-->
			<clear_flag>0</clear_flag><!-- 清除归档日志的方式-->
			<bak_dir></bak_dir><!-- clear_flag项配置成2时,该配置项可以用来指定归档文件转移的目录,如果未配置这项,则转移到归档路径的log_bak目录下 -->
		</arch>	
		<send><!-- 发送模块配置 -->
				
                               <ip>192.168.115.132</ip>     <!-- 中转节点IP -->
				<mgr_port>6345</mgr_port>    <!-- 中转节点管理端口 -->
				<data_port>6346</data_port>    <!-- 中转节点数据端口 -->
				<level>0</level>                           <!-- 级联等级 -->
				<trigger>0</trigger>     <!-- 指示下一级数据入库时,是否需要禁用触发器-->
				<constraint>0</constraint>    <!-- 指示下一级数据入库时,是否需要禁用约束-->
				<identity>0</identity>      <!-- 指示下一级数据入库时,自增列的处理方式-->
				<net_turns>0</net_turns>     <!-- 是否跨网闸-->
				<filter>
					<enable>
						<item>TEST.*</item>   <!-- 同步白名单-->
                                        </enable>
                                </filter>
		</send>
	</cpt>
	<recv>      <!-- 接受模块配置 -->
		<data_port>5346</data_port>    
		<exec>
			<db_type>dm7</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_mode>1</exec_mode>
			<exec_thr>16</exec_thr>
			<exec_policy>2</exec_policy>
			<exec_sql>512</exec_sql>
			<exec_trx>5000</exec_trx>
			<exec_rows>2000</exec_rows>
			<msg_col_size>8000</msg_col_size>
			<level>0</level>
			<enable_merge>1</enable_merge>
			<affect_row>0</affect_row>
			<trxid_table_depots>1</trxid_table_depots>
		</exec>
	</recv>
</dmhs>

中转机1配置文件(192.168.113.132机器)

<dmhs>
  <base>
    <lang>ch</lang>
    <version>2.0</version>
    <mgr_port>5345</mgr_port>   
    <chk_interval>2</chk_interval>    
    <siteid>100</siteid>
  </base>
  <transfer>
      <recv>
        <mgr_port>6345</mgr_port>   <!-- 管理端口号 -->
        <data_port>6346</data_port>   <!-- 数据端口号 -->
     </recv>
     <send>
        <data_file>
            <path>/dmhs/transfer_test1</path>   <!--接受文件缓存路径-->
            <size>128</size>
            <switch_interval>120</switch_interval>
        </data_file>
     </send>
  </transfer>
  <transfer>
      <recv>
        <mgr_port>7345</mgr_port>      <!-- 管理端口号 -->
        <data_port>7346</data_port>     <!-- 数据端口号 -->
     </recv>
     <send>
        <data_file>
            <path>/dmhs/transfer_test2</path>    <!--接受文件缓存路径-->
            <size>128</size>
            <switch_interval>120</switch_interval>
        </data_file>
     </send>
  </transfer>

 <transfer>
        <recv>
           <data_file>
               <path>/dmhs/transfer_test1</path>        <!--接受缓存文件路径-->
               <switch_interval>10</switch_interval>
               <scan_interval>10</scan_interval>
               <delete_interval>1800</delete_interval>
               <src_siteid>3</src_siteid>     <!--缓存文件来源站点ID-->
           </data_file> 
       </recv>
          <send>
            <ip>192.168.115.131</ip>        <!--目的端IP-->
            <mgr_port>5345</mgr_port>      <!--目的端管理端口-->
            <data_port>5346</data_port>     <!--目的端数据端口-->
            <level>0</level>
            <trigger>1</trigger>
            <constraint>1</constraint>
            <identity>0</identity>
            <net_turns>0</net_turns>
            <filter>
                <enable>
                    <item>*.*</item>     <!-- 同步白名单-->
                </enable>
                <disable>
              
		   					</disable>
            </filter>
            <map>
            </map>
        </send>
</transfer>
 <transfer>
        <recv>
           <data_file>
               <path>/dmhs/transfer_test2</path>      <!--接受缓存文件路径-->
               <switch_interval>10</switch_interval>
               <scan_interval>10</scan_interval>
               <delete_interval>1800</delete_interval>
               <src_siteid>4</src_siteid>           <!--缓存文件来源站点ID-->
           </data_file>
        </recv>
        <send> 
            <ip>192.168.115.130</ip>                 <!--目的端IP-->
            <mgr_port>5345</mgr_port>              <!--目的端管理端口-->
            <data_port>5346</data_port>            <!--目的端数据端口-->
            <level>0</level>
            <trigger>1</trigger>
            <constraint>1</constraint>
            <identity>0</identity>
            <net_turns>0</net_turns>
            <filter>
                <enable>
                    <item>*.*</item>    <!-- 同步白名单-->
                </enable>
                <disable>
              
		   					</disable>
            </filter>
            <map>
            </map>
        </send>
 </transfer>
</dmhs>


目的端端配置文件(192.168.113.131机器)

<dmhs>
	<base>
		<lang>ch</lang>
		<mgr_port>5345</mgr_port>		
		<chk_interval>2</chk_interval>		
		<ckpt_interval>45</ckpt_interval>
		<siteid>4</siteid>
    <mem_check>0</mem_check>           
	</base>
	<cpt>
		<db_type>dm7</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>
		<idle_time>300</idle_time>
		<ddl_mask>op:obj</ddl_mask>>
		<parse_thr>1</parse_thr>	
		<dict_dir>/dmhs/dict</dict_dir>
    <arch>
			<clear_interval>1800</clear_interval>
			<clear_flag>0</clear_flag>
			<bak_dir></bak_dir>
		</arch>	
		<send>
				
                  <ip>192.168.115.132</ip>
				<mgr_port>7345</mgr_port>
				<data_port>7346</data_port>
				<level>0</level>
				<trigger>0</trigger>
				<constraint>0</constraint>
				<identity>0</identity>
				<net_turns>0</net_turns>
				<filter>
					<enable>
						<item>TEST.*</item>
                                </enable>
                                </filter>
		</send>
	</cpt>
	<recv>
		<data_port>5346</data_port>
		<exec>
			<db_type>dm7</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_mode>1</exec_mode>
			<exec_thr>16</exec_thr>
			<exec_policy>2</exec_policy>
			<exec_sql>512</exec_sql>
			<exec_trx>5000</exec_trx>
			<exec_rows>2000</exec_rows>
			<msg_col_size>8000</msg_col_size>
			<level>0</level>
			<enable_merge>1</enable_merge>
			<affect_row>0</affect_row>
			<trxid_table_depots>1</trxid_table_depots>
		</exec>
	</recv>
</dmhs>


1.3搭建步骤

    1)源端、中转机1和目的端分别部署DMHS程序;
    2)源端及目的端分别开启逻辑附加日志参数;
    3)按照1.2中内容准备配置文件;
    4)分别启动源端、中转机1和目的端同步程序;
    源端
图片2.png
    中转机
图片3.png
    目的端
图片4.png
    5)分别启动源端、中转机1和目的端同步程序分析模块;
    源端
图片5.png
    中转机
图片6.png
    目的端
图片7.png
    6)分别在源端和目的端进行数据字典的copy工作;
    源端
图片8.png
    目的端
图片9.png
    7)分别启动源端和目的端同步程序捕获模块;
    8)观察同步程序运行情况;
    源端
图片10.png
    中转机1
图片11.png
    目的端
图片12.png

2、跨两节点双向同步_文件转发方式

2.1环境介绍

    本次测试是在本机IP分别为192.168.113.130、192.168.113.132、192.168.113.134和192.168.113.131四台虚拟机间部署DM7数据库间的跨双节点双向同步,本架构在同步的数据向目的端传输时(正反向一致),均需在中转节点上落地文件,然后再向下一节点传递,直至到目的端入库;数据库版本为DM7(20211028),同步程序版本为DMHS(20200930)。同步示意图如下:
图片13.png

2.2配置文件

源端配置文件(192.168.113.130机器

<dmhs>
	<base>
		<lang>ch</lang>
		<mgr_port>5345</mgr_port>		
		<chk_interval>2</chk_interval>	
		<ckpt_interval>45</ckpt_interval>
		<siteid>3</siteid>
    <mem_check>0</mem_check>           
	</base>
	<cpt>
		<db_type>dm7</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>
		<idle_time>300</idle_time>
		<ddl_mask>op:obj</ddl_mask>
		<parse_thr>1</parse_thr>	
		<dict_dir>/dmhs/dict</dict_dir>
    <arch>
			<clear_interval>1800</clear_interval>
			<clear_flag>0</clear_flag>
			<bak_dir></bak_dir>
		</arch>	
		<send>
				
                               <ip>192.168.115.132</ip>
				<mgr_port>6345</mgr_port>
				<data_port>6346</data_port>
				<level>0</level>
				<trigger>0</trigger>
				<constraint>0</constraint>
				<identity>0</identity>
				<net_turns>0</net_turns>
				<filter>
					<enable>
						<item>TEST.*</item>
                                        </enable>
                                </filter>
		</send>
	</cpt>
	<recv>
		<data_port>5346</data_port>
		<exec>
			<db_type>dm7</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_mode>1</exec_mode>
			<exec_thr>16</exec_thr>
			<exec_policy>2</exec_policy>
			<exec_sql>512</exec_sql>
			<exec_trx>5000</exec_trx>
			<exec_rows>2000</exec_rows>
			<msg_col_size>8000</msg_col_size>
			<level>0</level>
			<enable_merge>1</enable_merge>
			<affect_row>0</affect_row>
			<trxid_table_depots>1</trxid_table_depots>
		</exec>
	</recv>
</dmhs>

中转机1配置文件(192.168.113.132机器)

<dmhs>
  <base>
    <lang>ch</lang>
    <version>2.0</version>
    <mgr_port>5345</mgr_port>   
    <chk_interval>2</chk_interval>    
    <siteid>100</siteid>
  </base>
  <transfer>
      <recv>
        <mgr_port>6345</mgr_port>       <!-- 管理端口号 -->
        <data_port>6346</data_port>       <!-- 数据端口号 -->
     </recv>
     <send>
        <data_file>
            <path>/dmhs/transfer_test1</path>      <!--接受文件缓存路径-->
            <size>128</size>
            <switch_interval>120</switch_interval>
        </data_file>
     </send>
  </transfer>
  <transfer>
      <recv>
        <mgr_port>7345</mgr_port>        <!-- 管理端口号 -->
        <data_port>7346</data_port>       <!-- 数据端口号 -->
     </recv> 
     <send>
        <data_file>
            <path>/dmhs/transfer_test2</path>          <!--接受文件缓存路径-->
            <size>128</size>
            <switch_interval>120</switch_interval>      
        </data_file>
     </send>
  </transfer>

 <transfer>
        <recv>
           <data_file>
               <path>/dmhs/transfer_test1</path>        <!--接受缓存文件路径-->
               <switch_interval>10</switch_interval>
               <scan_interval>10</scan_interval>
               <delete_interval>1800</delete_interval>
               <src_siteid>3</src_siteid>               <!--缓存文件来源站点ID,此SITEID为同步数据来源第一节点SITEID,非任意节点中转节点SITEID-->
           </data_file>
       </recv>
          <send>
            <ip>192.168.115.134</ip>              <!--目的端IP-->
            <mgr_port>5345</mgr_port>               <!--目的端管理端口-->
            <data_port>5346</data_port>                 <!--目的端数据端口-->
            <level>0</level>
            <trigger>1</trigger>
            <constraint>1</constraint>
            <identity>0</identity>
            <net_turns>0</net_turns>
            <filter>
                <enable>
                    <item>*.*</item>         <!-- 同步白名单-->
                </enable>
                <disable>
              
		   					</disable>
            </filter>
            <map>
            </map>
        </send>
</transfer>
 <transfer>
        <recv>
           <data_file>
               <path>/dmhs/transfer_test2</path>        <!--接受缓存文件路径-->
               <switch_interval>10</switch_interval>
               <scan_interval>10</scan_interval>
               <delete_interval>1800</delete_interval>
               <src_siteid>4</src_siteid>                            <!--缓存文件来源站点ID,此SITEID为同步数据来源第一节点SITEID,非任意节点中转节点SITEID-->
           </data_file> 
        </recv>
        <send>
            <ip>192.168.115.130</ip>   <!--目的端IP-->
            <mgr_port>5345</mgr_port>   <!--目的端管理端口-->
            <data_port>5346</data_port>  <!--目的端数据端口-->
            <level>0</level>
            <trigger>1</trigger>
            <constraint>1</constraint>
            <identity>0</identity>
            <net_turns>0</net_turns>
            <filter>
                <enable>
                    <item>*.*</item>      <!-- 同步白名单-->
                </enable>
                <disable>
              
		   					</disable>
            </filter>
            <map>
            </map>
        </send>
 </transfer>
</dmhs>

中转机2配置文件(192.168.113.134机器)

<dmhs>
  <base>
    <lang>ch</lang>
    <version>2.0</version>
    <mgr_port>5345</mgr_port>   
    <chk_interval>2</chk_interval>    
    <siteid>101</siteid>
  </base>
  <transfer>
      <recv>
        <mgr_port>6345</mgr_port>    <!-- 管理端口号 -->
        <data_port>6346</data_port>     <!-- 数据端口号 -->
     </recv>
     <send>
        <data_file>
            <path>/dmhs/transfer_test1</path>   <!--接受文件缓存路径-->
            <size>128</size>
            <switch_interval>120</switch_interval>
        </data_file>
     </send>
  </transfer>
  <transfer>
      <recv>
        <mgr_port>7345</mgr_port>  <!-- 管理端口号 -->
        <data_port>7346</data_port>  <!-- 数据端口号 -->
     </recv>
     <send>
        <data_file>
            <path>/dmhs/transfer_test2</path>   <!--接受文件缓存路径-->
            <size>128</size>
            <switch_interval>120</switch_interval>
        </data_file>
     </send>
  </transfer>

 <transfer>
        <recv>
           <data_file>
               <path>/dmhs/transfer_test1</path>   <!--接受文件缓存路径-->
               <switch_interval>10</switch_interval>
               <scan_interval>10</scan_interval>
               <delete_interval>1800</delete_interval>
               <src_siteid>3</src_siteid>                   <!--缓存文件来源站点ID,此SITEID为同步数据来源第一节点SITEID,非任意节点中转节点SITEID-->
           </data_file>
       </recv>
          <send>
            <ip>192.168.115.131</ip>  <!--目的端IP-->
            <mgr_port>5345</mgr_port>  <!--目的端管理端口-->
            <data_port>5346</data_port>    <!--目的端数据端口-->
            <level>0</level>
            <trigger>1</trigger>
            <constraint>1</constraint>
            <identity>0</identity>
            <net_turns>0</net_turns>
            <filter>
                <enable>
                    <item>*.*</item>  <!-- 同步白名单-->
                </enable>
                <disable>
              
		   					</disable>
            </filter>
            <map>
            </map>
        </send>
</transfer>
 <transfer>
        <recv>
           <data_file>
               <path>/dmhs/transfer_test2</path>    <!--接受文件缓存路径-->
               <switch_interval>10</switch_interval>
               <scan_interval>10</scan_interval>
               <delete_interval>1800</delete_interval>
               <src_siteid>4</src_siteid>              <!--缓存文件来源站点ID,此SITEID为同步数据来源第一节点SITEID,非任意节点中转节点SITEID-->
           </data_file>
        </recv>
        <send>
            <ip>192.168.115.132</ip>  <!--目的端IP-->
            <mgr_port>7345</mgr_port>   <!--目的端管理端口-->
            <data_port>7346</data_port>  <!--目的端数据端口-->
            <level>0</level>
            <trigger>1</trigger>
            <constraint>1</constraint>
            <identity>0</identity>
            <net_turns>0</net_turns>
            <filter>
                <enable>
                    <item>*.*</item>  <!-- 同步白名单-->
                </enable>
                <disable>
              
		   					</disable>
            </filter>
            <map>
            </map>
        </send>
 </transfer>
</dmhs>

目的端端配置文件(192.168.113.131机器)

<dmhs>
	<base>
		<lang>ch</lang>
		<mgr_port>5345</mgr_port>		
		<chk_interval>2</chk_interval>		
		<ckpt_interval>45</ckpt_interval>
		<siteid>4</siteid>
    <mem_check>0</mem_check>           
	</base>
	<cpt>
		<db_type>dm7</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>
		<idle_time>300</idle_time>
		<ddl_mask>op:obj</ddl_mask>
		<parse_thr>1</parse_thr>
		<dict_dir>/dmhs/dict</dict_dir>
    <arch>
			<clear_interval>1800</clear_interval>
			<clear_flag>0</clear_flag>
			<bak_dir></bak_dir>
		</arch>	
		<send>
				
                                                                <ip>192.168.115.134</ip>
				<mgr_port>7345</mgr_port>
				<data_port>7346</data_port>
				<level>0</level>
				<trigger>0</trigger>
				<constraint>0</constraint>
				<identity>0</identity>
				<net_turns>0</net_turns>
				<filter>
					<enable>
						<item>TEST.*</item>
                                </enable>
                                </filter>
		</send>
	</cpt>
	<recv>
		<data_port>5346</data_port>
		<exec>
			<db_type>dm7</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_mode>1</exec_mode>
			<exec_thr>16</exec_thr>
			<exec_policy>2</exec_policy>
			<exec_sql>512</exec_sql>
			<exec_trx>5000</exec_trx>
			<exec_rows>2000</exec_rows>
			<msg_col_size>8000</msg_col_size>
			<level>0</level>
			<enable_merge>1</enable_merge>
			<affect_row>0</affect_row>
			<trxid_table_depots>1</trxid_table_depots>
		</exec>
	</recv>
</dmhs>

2.3搭建步骤

    1)源端、中转机1、中转机2和目的端分别部署DMHS程序;
    2)源端及目的端分别开启逻辑附加日志参数;
    3)按照2.2中内容准备配置文件;
    4)分别启动源端、中转机1、中转机2和目的端同步程序;
    源端
图片14.png
    中转机1
图片15.png
    中转机2
图片16.png
    目的端
图片17.png
    5)分别启动源端、中转机1、中转机2和目的端同步程序分析模块;
    源端
图片18.png
    中转机1
图片19.png
    中转机2
图片20.png
    目的端
图片21.png
    6)分别在源端和目的端进行数据字典的copy工作;
    源端
图片22.png
    目的端
图片23.png
    7)分别启动源端和目的端同步程序捕获模块;
    8)观察同步程序运行情况
    源端
图片24.png
    中转机1
图片25.png
    中转机2
图片26.png
    目的端
图片27.png

3、跨两节点双向同步_文件转发及路由转发结合方式

3.1环境介绍

    本次测试是在本机IP分别为192.168.113.130、192.168.113.132、192.168.113.134和192.168.113.131四台虚拟机间部署DM7数据库间的跨双节点双向同步,本架构在同步的数据向目的端传输时(正反向一致),仅需在第一个中转节点上落地文件,然后以路由方式传递至下一节点(此节点数据不落地成文件),直至到目的端入库;数据库版本为DM7(20211028),同步程序版本为DMHS(20200930)。同步示意图如下:
图片28.png

3.2配置文件

源端配置文件(192.168.113.130机器)

<dmhs>
	<base>
		<lang>ch</lang>
		<mgr_port>5345</mgr_port>	
		<chk_interval>2</chk_interval>	
		<ckpt_interval>45</ckpt_interval>
		<siteid>3</siteid>
    <mem_check>0</mem_check>           
	</base>
	<cpt>
		<db_type>dm7</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>
		<idle_time>300</idle_time>
		<ddl_mask>op:obj</ddl_mask>
		<parse_thr>1</parse_thr>
		<dict_dir>/dmhs/dict</dict_dir>
    <arch>
			<clear_interval>1800</clear_interval>
			<clear_flag>0</clear_flag>
			<bak_dir></bak_dir>
		</arch>	
		<send>
                               <ip>192.168.115.132</ip>
				<mgr_port>6345</mgr_port>
				<data_port>6346</data_port>
				<level>0</level>
				<trigger>0</trigger>
				<constraint>0</constraint>
				<identity>0</identity>
				<net_turns>0</net_turns>
				<filter>
					<enable>
						<item>TEST.*</item>
                                        </enable>
                                </filter>
		</send>
	</cpt>
	<recv>
		<data_port>5346</data_port>
		<exec>
			<db_type>dm7</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_mode>1</exec_mode>
			<exec_thr>16</exec_thr>
			<exec_policy>2</exec_policy>
			<exec_sql>512</exec_sql>
			<exec_trx>5000</exec_trx>
			<exec_rows>2000</exec_rows>
			<msg_col_size>8000</msg_col_size>
			<level>0</level>
			<enable_merge>1</enable_merge>
			<affect_row>0</affect_row>
			<trxid_table_depots>1</trxid_table_depots>
		</exec>
	</recv>
</dmhs>

中转机1配置文件(192.168.113.132机器)

<dmhs>
  <base>
    <lang>ch</lang>
    <version>2.0</version>
    <mgr_port>5345</mgr_port>   
    <chk_interval>2</chk_interval>    
    <siteid>100</siteid>
  </base>
  <route>
		<recv>
			<mgr_port>7345</mgr_port>   <!-- 管理端口号 -->
			<data_port>7346</data_port>   <!-- 数据端口号 -->
		<recv>
		<send>
			<siteid>4</siteid>           <!--数据来源站点ID,此SITEID为同步数据来源第一节点SITEID,非任意节点中转节点SITEID-->
			<ip>192.168.115.130</ip>   <!--路由目的IP,数据下一节点IP-->
			<mgr_port>5345</mgr_port>  <!-- 管理端口号 -->
			<data_port>5346</data_port>  <!-- 数据端口号 -->
		</send>
  </route>
  <transfer>
      <recv>
        <mgr_port>6345</mgr_port>
        <data_port>6346</data_port>
     </recv>
     <send>
        <data_file>
            <path>/dmhs/transfer_test1</path>   <!--接受缓存文件路径-->
            <size>128</size>
            <switch_interval>120</switch_interval>
        </data_file>
     </send>
  </transfer>
  <transfer>
        <recv>
           <data_file>
               <path>/dmhs/transfer_test1</path>  <!--接受缓存文件路径-->
               <switch_interval>10</switch_interval>
               <scan_interval>10</scan_interval>
               <delete_interval>1800</delete_interval>
               <src_siteid>3</src_siteid>    <!--缓存文件来源站点ID,此SITEID为同步数据来源第一节点SITEID,非任意节点中转节点SITEID-->
           </data_file>
       </recv>
          <send>
            <ip>192.168.115.134</ip>  <!--目的端IP-->
            <mgr_port>6345</mgr_port>   <!--目的端管理端口-->
            <data_port>6346</data_port>  <!--目的端数据端口-->
            <level>0</level>
            <trigger>1</trigger>
            <constraint>1</constraint>
            <identity>0</identity>
            <net_turns>0</net_turns>
            <filter>
                <enable>
                    <item>*.*</item>
                </enable>
                <disable>
              
		   					</disable>
            </filter>
            <map>
            </map>
        </send>
</transfer>
 </dmhs>

中转机2配置文件(192.168.113.134机器)

<dmhs>
  <base>
    <lang>ch</lang>
    <version>2.0</version>
    <mgr_port>5345</mgr_port>   
    <chk_interval>2</chk_interval>    
    <siteid>101</siteid>
  </base>
  <route>
		<recv>
			<mgr_port>6345</mgr_port>  <!-- 管理端口号 -->
			<data_port>6346</data_port>  <!-- 数据端口号 -->
		<recv>
		<send>
			<siteid>3</siteid>  <!--数据来源站点ID,此SITEID为同步数据来源第一节点SITEID,非任意节点中转节点SITEID-->
			<ip>192.168.115.131</ip>  <!--路由目的IP,数据下一节点IP-->
			<mgr_port>5345</mgr_port>   <!-- 管理端口号 -->
			<data_port>5346</data_port>  <!-- 数据端口号 -->
		</send>
  </route>
  <transfer>
      <recv>
        <mgr_port>7345</mgr_port>
        <data_port>7346</data_port>
     </recv>
     <send>
        <data_file>
            <path>/dmhs/transfer_test1</path>  <!--接受缓存文件路径-->
            <size>128</size>
            <switch_interval>120</switch_interval>
        </data_file>
     </send>
  </transfer>
 <transfer>
        <recv>
           <data_file>
               <path>/dmhs/transfer_test1</path>  <!--接受缓存文件路径-->
               <switch_interval>10</switch_interval>
               <scan_interval>10</scan_interval>
               <delete_interval>1800</delete_interval>
               <src_siteid>4</src_siteid>  <!--缓存文件来源站点ID,此SITEID为同步数据来源第一节点SITEID,非任意节点中转节点SITEID-->
           </data_file>
        </recv>
        <send>
            <ip>192.168.115.132</ip>  <!--目的端IP-->
            <mgr_port>7345</mgr_port>  <!--目的端管理端口-->
            <data_port>7346</data_port>  <!--目的端数据端口-->
            <level>0</level>
            <trigger>1</trigger>
            <constraint>1</constraint>
            <identity>0</identity>
            <net_turns>0</net_turns>
            <filter>
                <enable>
                    <item>*.*</item>
                </enable>
                <disable>
              
		   					</disable>
            </filter>
            <map>
            </map>
        </send>
 </transfer>
</dmhs>

目的端端配置文件(192.168.113.131机器)

<dmhs>
	<base>
		<lang>ch</lang>
		<mgr_port>5345</mgr_port>		
		<chk_interval>2</chk_interval>	
		<ckpt_interval>45</ckpt_interval>
		<siteid>4</siteid>
    <mem_check>0</mem_check>           
	</base>
	<cpt>
		<db_type>dm7</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>
		<idle_time>300</idle_time>
		<ddl_mask>op:obj</ddl_mask>
		<parse_thr>1</parse_thr>
		<dict_dir>/dmhs/dict</dict_dir>
    <arch>
			<clear_interval>1800</clear_interval>
			<clear_flag>0</clear_flag>
			<bak_dir></bak_dir>
		</arch>	
		<send>
				
                                                                <ip>192.168.115.134</ip>
				<mgr_port>7345</mgr_port>
				<data_port>7346</data_port>
				<level>0</level>
				<trigger>0</trigger>
				<constraint>0</constraint>
				<identity>0</identity>
				<net_turns>0</net_turns>
				<filter>
					<enable>
						<item>TEST.*</item>
                                </enable>
                                </filter>
		</send>
	</cpt>
	<recv>
		<data_port>5346</data_port>
		<exec>
			<db_type>dm7</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_mode>1</exec_mode>
			<exec_thr>16</exec_thr>
			<exec_policy>2</exec_policy>
			<exec_sql>512</exec_sql>
			<exec_trx>5000</exec_trx>
			<exec_rows>2000</exec_rows>
			<msg_col_size>8000</msg_col_size>
			<level>0</level>
			<enable_merge>1</enable_merge>
			<affect_row>0</affect_row>
			<trxid_table_depots>1</trxid_table_depots>
		</exec>
	</recv>
</dmhs>

3.3搭建步骤

    1)源端、中转机1、中转机2和目的端分别部署DMHS程序;
    2)源端及目的端分别开启逻辑附加日志参数;
    3)按照2.2中内容准备配置文件;
    4)分别启动源端、中转机1、中转机2和目的端同步程序;
    源端
图片29.png
    中转机1
图片30.png
    中转机2
图片31.png
    目的端
图片32.png
    5)分别启动源端、中转机1、中转机图片37.png2和目的端同步程序分析模块;
    源端
图片33.png
    中转机1
图片34.png
    中转机2
图片35.png
    目的端
图片36.png
    6)分别在源端和目的端进行数据字典的copy工作;
    源端
图片37.png
    目的端
图片38.png
    7)分别启动源端和目的端同步程序捕获模块;
    8)观察同步程序运行情况
    源端
图片39.png
    中转机1
图片40.png
    中转机2
图片41.png
    目的端
图片42.png

二、架构特点及区别

    本文简述三种同步架构都可实现数据的双向同步。跨单节点双向同步与跨双节点双向同步_文件转发方式均是将源端产生的数据变更通过发送到中转节点,中转节点将其落地成文件,继而再向下一级转发的过程,只是其中转节点的个数不一致而已。从上可以看出,理论上来书中转节点个数可以无限,但由于网络传递具有一定的时延性,因此建议中转节点个数不要过多。
    跨双节点双向同步_文件转发和文件转发及路由转发结合方式与上述两种结果的唯一区别在于其在第二个中转节点上不用将数据变更落地成文件,而是将接受到的数据包直接以网络的形式传递到下一中转节点或者是目的端。从上可以看出,理论上来说中转节点个数可以无限,但由于网络传递具有一定的时延性,因此建议中转节点个数不要过多。

三、遇到问题及处理

    1、中转两节点双向同步_文件转发和路由转发结合方式源端同步程序日志报错来自192.168.115.132的连接要求取LSN,但该站点未初始化执行模块,无法取到LSN。
    分析:源端未初始化分析模块导致,本文所述三种双向同步架构均需在所有节点上初始化分析模块,否则就可能出现上述错误。但仅需在源端及目的端初始化捕获模块即可。
    2、数据同步进去死循环,同一事务不停在源端和目的端循环执行。
    分析:初始搭建时,因担心目的端辅助表DMHS_TRXID_TABLE的数据被双向同步,导致同步异常,因此将其禁用。但随后仍出现数据同步陷入死循环。但将其禁用清除后恢复。深入了解后发现在双向同步中,hs会自动已经同步一次的数据或事务进行标记处理,避免其再被同步至下一节点。本文所述三种双向同步架构均有此问题。
    3、件转发和路由转发结合方式中数据转发异常
    分析:在中转节点上的路由转发配置中,发送模块中的SITEID参数和IP地址应如何配置。IP地址配置的是下一级的IP地址。而SITEID参数配置的是路由转发的数据包来自最原始节点的SITEID值。如下是中转节点1上发送至源端的配置,IP地址配置为192.168.115.130位源端的IP地址,而SITEID配置的是目的端得站点ID值4。
图片43.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服