dm-dm(采用2次route路由方式)双向同步部署说明
环境说明:
数据库1节点:192.168.3.77
数据库2节点:192.168.3.66
Route路由节点1:192.168.3.88
Route路由节点2:192.168.3.2
1.1、DM7的配置(两端进行如下操作)
1)开启逻辑附加日志
修改DM7中“dm.ini”中的RLOG_APPEND_LOGIC参数的值设置为1。
2)开始归档日志
(1)将DM7数据库配置文件“dm.ini”中的ARCH_INI参数值设置为1。
(2)在与dm.ini相同目录下,增加配置文件“dmarch.ini”,并添加归档配置参数内容(可以参见dmarch_example.ini文件配置格式)。示例如下:
注意:(1)、(2)两步完成后需重启实例服务使配置生效。
3)DDL同步配置
注:一定了解清楚客户的需求是否需要ddl同步,如果不需要,不要执行此脚本,并且源端配置文件中配置<ddl_mask>元素并置空。
使用SYSDBA用户执行ddl_sql_dm7.sql,建立DDL同步的触发器和辅助表。
1.2 数据库1节点(192.168.3.77)dmhs.hs配置文件
(此配置文件需放在dmhs/bin下)
<?xml version="1.0" encoding="utf-8"?><base> <lang>en</lang> <mgr_port>5545</mgr_port> <chk_interval>3</chk_interval> <ckpt_interval>60</ckpt_interval> <siteid>2</siteid> </base> <recv> <mgr_port>5545</mgr_port> <data_port>5546</data_port> <exec> <db_type>DM7</db_type> <db_server>192.168.3.77</db_server> <db_user>SYSDBA</db_user> <db_pwd>SYSDBA</db_pwd> <db_port>5236</db_port> <exec_thr>4</exec_thr> <exec_sql>512</exec_sql> <exec_trx>5000</exec_trx> <exec_rows>250</exec_rows> <exec_policy>0</exec_policy> </exec> </recv> <cpt> <db_type>DM7</db_type> <db_server>192.168.3.77</db_server> <db_user>SYSDBA</db_user> <db_pwd>SYSDBA</db_pwd> <db_port>5236</db_port> <idle_time>10</idle_time> <ddl_mask>TABLE:INDEX:TRUNCATE:CREATE:DROP:ALTER</ddl_mask> <parse_thr>1</parse_thr> <arch> <clear_interval>600</clear_interval> <clear_flag>1</clear_flag> </arch> <send> <ip>192.168.3.88</ip> <!-- 路由节点 IP,默认 127.0.0.1 --> <mgr_port>5566</mgr_port> <!-- 管理端口号,需和路由配置文件中recv模块下的端口保持一致,用于接收远端MGR 模块发送的消息 --> <data_port>5565</data_port><!-- 数据端口号 ,需和路由配置文件中recv模块下的端口保持一致,远端的 CPT 模块通过它自身的 NET 模块发送消息到该端口--> <level>0</level> <net_turns>0</net_turns> <trigger>0</trigger> <constraint>0</constraint> <identity>0</identity> <filter> <enable> <item>SYSDBA.*</item> </enable> <disable/> </filter> <map> <item>SYSDBA.*==SYSDBA.*</item> </map> </send> </cpt> </dmhs>
1.3数据库2节点(192.168.3.66)dmhs.hs配置文件
(此配置文件需放在dmhs/bin下)
<?xml version="1.0" encoding="utf-8"?><base> <lang>en</lang> <mgr_port>5545</mgr_port> <chk_interval>3</chk_interval> <ckpt_interval>60</ckpt_interval> <siteid>1</siteid> </base> <recv> <mgr_port>5545</mgr_port> <data_port>5546</data_port> <exec> <db_type>DM7</db_type> <db_server>192.168.3.66</db_server> <db_user>SYSDBA</db_user> <db_pwd>SYSDBA</db_pwd> <db_port>5236</db_port> <exec_thr>4</exec_thr> <exec_sql>512</exec_sql> <exec_trx>5000</exec_trx> <exec_rows>250</exec_rows> <exec_policy>0</exec_policy> </exec> </recv> <cpt> <db_type>DM7</db_type> <db_server>192.168.3.66</db_server> <db_user>SYSDBA</db_user> <db_pwd>SYSDBA</db_pwd> <db_port>5236</db_port> <idle_time>10</idle_time> <ddl_mask>TABLE:INDEX:TRUNCATE:CREATE:DROP:ALTER</ddl_mask> <parse_thr>1</parse_thr> <arch> <clear_interval>600</clear_interval> <clear_flag>1</clear_flag> </arch> <send> <ip>192.168.3.2</ip> <mgr_port>5566</mgr_port> <data_port>5565</data_port> <level>0</level> <net_turns>0</net_turns> <trigger>0</trigger> <constraint>0</constraint> <identity>0</identity> <filter> <enable> <item>SYSDBA.*</item> </enable> <disable/> </filter> <map> <item>SYSDBA.*==SYSDBA.*</item> </map> </send> </cpt> </dmhs>
2、route路由端配置:
(ip:192.168.3.88)
<?xml version="1.0" encoding="GB2312"?>
<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>5566</mgr_port>
<data_port>5565</data_port>
</recv>
<send>
<siteid>2</siteid>
<ip>192.168.3.2</ip>
<mgr_port>5566</mgr_port>
<data_port>5565</data_port>
</send>
<send>
<siteid>1</siteid>
<ip>192.168.3.77</ip>
<mgr_port>5545</mgr_port>
<data_port>5546</data_port>
</send>
</route>
</dmhs>
(ip:192.168.3.2)
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang><!-- 语言选项,ch 为中文,en 为英文 -->
<version>2.0</version>
<mgr_port>5345</mgr_port><!-- 管理端口号,默认为 5345,最小值 1000,最大值 65535 -->
<chk_interval>2</chk_interval><!-- 状态轮询间隔,默认为 3s,最小值 1s,最大值 60s -->
<siteid>101</siteid><!-- 站点 ID,这个 ID 配置时要注意,全局唯一,最小值 0,最大值 65535 -->
</base>
<route><!-- 消息路由可以实现 N==>1==>N 的功能,主要是用来跨网关,路由是不会对消息进行拆解的,实现的是消息实现源和目的的映射关系 -->
<recv>
<mgr_port>5566</mgr_port>
<data_port>5565</data_port>
</recv>
<send><!-- 发送模块配置 -->
<siteid>2</siteid><!-- 这个站点号跟源端的站点号要一致 -->
<ip>192.168.3.66</ip><!-- 目的端 IP,默认 127.0.0.1 -->
<mgr_port>5545</mgr_port><!-- 目的端管理端口,默认为 5345,最小 1000,最大 65535 -->
<data_port>5546</data_port><!-- 目的端数据接收端口号,默认为 5346,最小值 1000,最大值 65535 -->
</send>
<send><!-- 发送模块配置 -->
<siteid>1</siteid><!-- 这个站点号跟源端的站点号要一致 -->
<ip>192.168.3.88</ip><!-- 目的端 IP,默认 127.0.0.1 -->
<mgr_port>5566</mgr_port><!-- 目的端管理端口,默认为 5345,最小 1000,最大 65535 -->
<data_port>5565</data_port><!-- 目的端数据接收端口号,默认为 5346,最小值 1000,最大值 65535 -->
</send>
</route>
</dmhs>
3、 启动route路由服务
4、启动两端dmhs服务
1)启动两端服务
到hs的软件目录下cd /opt/dmhs/bin
两端都执行./dmhs_server
2)启动两端执行器
[root@dmdsc01 ~]# cd /opt/dmhs/bin
[root@dmdsc01 bin]# ./dmhs_console
DMHS >connect 192.168.3.66:5545 --本机ip:管理端口
DMHS>start exec
[root@dmdsc02 ~]# cd /opt/dmhs/bin
[root@dmdsc02 bin]# ./dmhs_console
DMHS >connect 192.168.3.77:5545 --本机ip:管理端口
DMHS>start exec
3)装载字典(在两端都执行)
[root@dmdsc01 ~]# cd /opt/dmhs/bin
[root@dmdsc01 bin]# ./dmhs_console
DMHS >connect 192.168.3.66:5545
DMHS >copy 0 “sch.name=‘SYSDBA’” dict
//类似于Copy 0 “sch.name=’****’” dict – (多模式装载格式:Copy 0 “sch.name in (‘SYSDBA’,’TEST1’,’TEST2’)” dict|reg|lsn )
[root@dmdsc02 ~]# cd /opt/dmhs/bin
[root@dmdsc02 bin]# ./dmhs_console
DMHS >connect 192.168.3.77:5545
DMHS >copy 0 “sch.name=‘SYSDBA’” dict
//类似于Copy 0 “sch.name=’****’” dict – (多模式装载格式:Copy 0 “sch.name in (‘SYSDBA’,’TEST1’,’TEST2’)” dict|reg|lsn )
4)启动cpt服务(在两端执行)
[root@dmdsc01 bin]# ./dmhs_console
DMHS >connect 192.168.3.66:5545
DMHS>start cpt
注:如果在搭建同步开始之前源端已经存在了很多个归档文件,而我们此时只想从当下开始同步,那么就在start cpt前执行clear exec lsn
[root@dmdsc02 bin]# ./dmhs_console
DMHS >connect 192.168.3.77:5545
DMHS>start cpt
注:如果在搭建同步开始之前源端已经存在了很多个归档文件,而我们此时只想从当下开始同步,那么就在start cpt前执行clear exec lsn
5 测试同步
源端建表并插入数据:
目的端查询表和数据是否进行了同步:
可以看到已经完成了同步操作。