首页 > 其他分享 >DMHS双向同步的搭建(DM8-DM8)

DMHS双向同步的搭建(DM8-DM8)

时间:2022-09-23 02:11:15浏览次数:56  
标签:5345 DMHS dmdba 192.168 SYSDBA dmhs 双向 DM8 home

数据同步工具 (DMHS),可实现同构、异构数据库间的数据同步,基于此工具,可实现在现应急灾备、多业务中心、异构资源信息整合等多种使用场景。以下是DM数据库之间实现的双向同步过程。

一、用dts迁移源端数据到目的端,使源端数据和目的端数据一致(也可直接物理备份还原)

key改名为dmhs.key放到/home/dmdba/dmhs/bin下

二、修改两端的dm.ini参数,开启归档,重启数据库使参数生效

 

 

1、ARCH_INI参数值设置为1

2、RLOG_APPEND_LOGIC参数的值设置为1

3、dmarch.ini放在实例文件夹下。归档文件如下

[ ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dm8/dmarch

ARCH_FILE_SIZE =128

ARCH_SPACE_LIMIT = 1024

三、安装hs软件--------DDL同步(看情况而定)

两端均在管理工具中的执行/home/dmdba/dmhs/scripts/ddl_sql_dm8.sql(DDL同步必要操作)

 

 

 

1、源端dmhs.hs配置文件(放在/home/dmdba/dmhs/bin下)

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

<dmhs>

<base>

<lang>en</lang>

<mgr_port>5345</mgr_port>

<ckpt_interval>60</ckpt_interval>

<siteid>1</siteid>

<version>2.0</version>

<log_size_limit>5</log_size_limit><!-- DMHS的log下的日志文件的总大小单位GB -->

</base>

<exec>

<recv>

<mgr_port>5345</mgr_port>

<data_port>5346</data_port>

</recv>

<db_type>DM8</db_type>

<db_server>192.168.48.140</db_server>

<db_user>SYSDBA</db_user><!-- 入库事务的执行者,如果不需要使用用户过滤,一般都填SYSDBA -->

<db_pwd>SYSDBA</db_pwd>

<db_port>5239</db_port>

<vpool>128</vpool><!--工作线程私有内存池的大小-->

<vpools>13</vpools><!--缓存事务使用内存池的个数-->

<trxid_tables>6</trxid_tables><!--存放事务信息的辅助表个数,分散热点-->

<exec_thr>8</exec_thr><!--EXEC 模块用来数据入库的工作线程数-->

<exec_sql>1024</exec_sql><!--EXEC 模块缓存事务 SQL 语句的内存大小,太小会导致缓存事务刷盘,影响IO-->

<affect_row>0</affect_row><!--是否启用影响行数检查,用于判断数据一致性,但是会影响性能,按需配置-->

<exec_trx>5000</exec_trx><!--允许缓存事务的个数,超过这个个数,同步会停止-->

<exec_rows>1000</exec_rows><!--数据入库时允许的最大批量行数,提高性能,加大内存占用,按需配置-->

<case_sensitive>1</case_sensitive><!--EXEC 模块操作数据库对象时,是否需要保持对象名敏感,大小写敏感的库务必1-->

<toggle_case>0</toggle_case><!--EXEC 模块操作数据库对象时,是否需要把对象名转换为大小写-->

<exec_policy>2</exec_policy><!--事务入库出错时的执行策略,出错丢弃整个事务保持一致性用0,尽可能保持同步容忍不一致用2,出错停止用1-->

<enable_lob_buf>1</enable_lob_buf><!--执行端是否允许大字段缓存-->

<commit_prepare>1</commit_prepare><!--是否启用提交准备功能,可提高效率-->

<commit_policy>1</commit_policy><!--事务入库的事务提交策略,1为关联表的提交按照顺序,非关联事务并行执行-->

<clear_trx_file>1</clear_trx_file><!--是否启用错误事务自动清除功能-->

<recv_caches>16</recv_caches><!--EXEC 模块用来接收 NET 模块消息的缓存个数,提高并行exec效率,增大内存-->

<ddl_continue>1</ddl_continue><!--DDL 出错时是否允许继续同步,按需配置-->

<level>0</level><!--2节点用0,三节点环形用65535-->

</exec>

<cpt>

<db_type>DM8</db_type>

<db_server>192.168.48.140</db_server>

<db_user>SYSDBA</db_user>

<db_pwd>SYSDBA</db_pwd>

<db_port>5239</db_port>

<idle_time>10</idle_time>

<ddl_mask>op:obj</ddl_mask><!--ddl同步策略,不需要ddl同步的话务必置空而不是不写该标签-->

<parse_thr>4</parse_thr><!--日志分析线程数,可提高日志解析速度,旧版dmhs的ddl同步情况下建议保持默认的1-->

<parse_policy>0</parse_policy><!--解析策略,0 表示解析日志出错时,主动 halt;1 表示忽略解析错误,继续解析,按需配置,源端DM8一般配置1-->

<idle_time>300</idle_time><!--日志分析空闲时间,防止dmhs读取速度赶超redo切换复写速度-->

<read_again_interval>255</read_again_interval><!--开启日志读取二次读取校验日志功能,防止dmhs读取速度赶超redo切换复写速度-->

<arch>

<clear_interval>600</clear_interval>

<clear_flag>0</clear_flag>

</arch>

<send>

<ip>192.168.48.141</ip><!-- 对方IP -->

<mgr_port>5345</mgr_port>

<data_port>5346</data_port>

<net_pack_size>256</net_pack_size>

<vpools>13</vpools><!--NET 模块内存池的个数-->

<vpool_size>128</vpool_size><!--缓存事务使用内存池的个数-->

<case_sensitive>1</case_sensitive><!--NET 模块针对对象名是否大小写敏感,对下面filter过滤有影响,大小写敏感库配置为1-->

<net_turns>0</net_turns>

<crc_check>0</crc_check>

<trigger>1</trigger><!--指示下一级数据入库时,是否需要禁用触发器,配置为1,避免同步的数据触发目的端触发器-->

<constraint>1</constraint><!--指示下一级数据入库时,是否需要禁用约束-->

<identity>1</identity><!--1 则表示同步 CPT 中带来的该列值,它的值使用 CPT 中带来的值进行填充;0 则表示启用目标库自增列的属性,目标库自已维护该列的值,按需配置-->

<filter>

<enable>

<item>SYSDBA.*</item><!--同步是白名单排除黑名单的差集-->

</enable>

<disable>

<item>SYSDBA.TEST*</item>

</disable>

</filter>

</send>

</cpt>

</dmhs>

2、目的端dmhs.hs配置文件

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

<dmhs>

<base>

<lang>en</lang>

<mgr_port>5345</mgr_port>

<ckpt_interval>60</ckpt_interval>

<siteid>2</siteid>

<version>2.0</version>

<log_size_limit>5</log_size_limit><!-- DMHS的log下的日志文件的总大小单位GB -->

</base>

<exec>

<recv>

<mgr_port>5345</mgr_port>

<data_port>5346</data_port>

</recv>

<db_type>DM7</db_type>

<db_server>192.168.48.141</db_server>

<db_user>SYSDBA</db_user><!-- 入库事务的执行者,如果不需要使用用户过滤,一般都填SYSDBA -->

<db_pwd>SYSDBA</db_pwd>

<db_port>5239</db_port>

<vpool>128</vpool><!--工作线程私有内存池的大小-->

<vpools>13</vpools><!--缓存事务使用内存池的个数-->

<trxid_tables>6</trxid_tables><!--存放事务信息的辅助表个数,分散热点-->

<exec_thr>8</exec_thr><!--EXEC 模块用来数据入库的工作线程数-->

<exec_sql>1024</exec_sql><!--EXEC 模块缓存事务 SQL 语句的内存大小,太小会导致缓存事务刷盘,影响IO-->

<affect_row>0</affect_row><!--是否启用影响行数检查,用于判断数据一致性,但是会影响性能,按需配置-->

<exec_trx>5000</exec_trx><!--允许缓存事务的个数,超过这个个数,同步会停止-->

<exec_rows>1000</exec_rows><!--数据入库时允许的最大批量行数,提高性能,加大内存占用,按需配置-->

<case_sensitive>1</case_sensitive><!--EXEC 模块操作数据库对象时,是否需要保持对象名敏感,大小写敏感的库务必1-->

<toggle_case>0</toggle_case><!--EXEC 模块操作数据库对象时,是否需要把对象名转换为大小写-->

<exec_policy>2</exec_policy><!--事务入库出错时的执行策略,出错丢弃整个事务保持一致性用0,尽可能保持同步容忍不一致用2,出错停止用1-->

<enable_lob_buf>1</enable_lob_buf><!--执行端是否允许大字段缓存-->

<commit_prepare>1</commit_prepare><!--是否启用提交准备功能,可提高效率-->

<commit_policy>1</commit_policy><!--事务入库的事务提交策略,1为关联表的提交按照顺序,非关联事务并行执行-->

<clear_trx_file>1</clear_trx_file><!--是否启用错误事务自动清除功能-->

<recv_caches>16</recv_caches><!--EXEC 模块用来接收 NET 模块消息的缓存个数,提高并行exec效率,增大内存-->

<ddl_continue>1</ddl_continue><!--DDL 出错时是否允许继续同步,按需配置-->

<level>0</level><!--2节点用0,三节点环形用65535-->

</exec>

<cpt>

<db_type>DM7</db_type>

<db_server>192.168.48.141</db_server>

<db_user>SYSDBA</db_user>

<db_pwd>SYSDBA</db_pwd>

<db_port>5239</db_port>

<idle_time>10</idle_time>

<ddl_mask>op:obj</ddl_mask><!--ddl同步策略,不需要ddl同步的话务必置空而不是不写该标签-->

<parse_thr>4</parse_thr><!--日志分析线程数,可提高日志解析速度,旧版dmhs的ddl同步情况下建议保持默认的1-->

<parse_policy>0</parse_policy><!--解析策略,0 表示解析日志出错时,主动 halt;1 表示忽略解析错误,继续解析,按需配置,源端DM8一般配置1-->

<idle_time>300</idle_time><!--日志分析空闲时间,防止dmhs读取速度赶超redo切换复写速度-->

<read_again_interval>255</read_again_interval><!--开启日志读取二次读取校验日志功能,防止dmhs读取速度赶超redo切换复写速度-->

<arch>

<clear_interval>600</clear_interval>

<clear_flag>0</clear_flag>

</arch>

<send>

<ip>192.168.48.140</ip><!-- 对方IP -->

<mgr_port>5345</mgr_port>

<data_port>5346</data_port>

<net_pack_size>256</net_pack_size>

<vpools>13</vpools><!--NET 模块内存池的个数-->

<vpool_size>128</vpool_size><!--缓存事务使用内存池的个数-->

<case_sensitive>1</case_sensitive><!--NET 模块针对对象名是否大小写敏感,对下面filter过滤有影响,大小写敏感库配置为1-->

<net_turns>0</net_turns>

<crc_check>0</crc_check>

<trigger>1</trigger><!--指示下一级数据入库时,是否需要禁用触发器,配置为1,避免同步的数据触发目的端触发器-->

<constraint>1</constraint><!--指示下一级数据入库时,是否需要禁用约束-->

<identity>1</identity><!--1 则表示同步 CPT 中带来的该列值,它的值使用 CPT 中带来的值进行填充;0 则表示启用目标库自增列的属性,目标库自已维护该列的值,按需配置-->

<filter>

<enable>

<item>SYSDBA.*</item><!--同步的表示白名单排除黑名单的差集-->

</enable>

<disable>

<item>SYSDBA.TEST*</item>

</disable>

</filter>

</send>

</cpt>

</dmhs>

四、启动同步服务,装字典

1、配置service服务

两端/home/dmdba/dmhs/bin/service_template下

修改DmhsService

然后cp /home/dmdba/dmhs/bin/service_template/DmhsService /etc/init.d/,然后systemctl enable DmhsService

然后就可以exit退出之前源端和目的端的dmhs_server窗口。

通过service DmhsService start后台启动dmhs

2、启动两端的dmhs服务

cd /home/dmdba/dmhs/bin

./dmhs_server

3、另打开一个窗口,启动两端的执行服务

./dmhs_console进入后

connect 回车

start exec 回车

clear exec lsn;回车

copy 0 "sch.name in (‘xx’,’xx’,...)" dict 回车

start cpt 回车

 

vi /etc/rc.local添加如开机自启

/etc/init.d/DmhsService start

 

达梦社区地址:https://eco.dameng.com

标签:5345,DMHS,dmdba,192.168,SYSDBA,dmhs,双向,DM8,home
From: https://www.cnblogs.com/-dym/p/16721399.html

相关文章

  • 双向关联演示
    代码参考:usingSystem;namespaceInterdependDemo{classSchoolInfo{privateStudentInfostudentInfo;privateTeacherInfoteacherIn......
  • 简单模拟一个双向链表,用java实现
    1packagecom.gsh.test05;23/**4*节点类5*@param<E>6*/7publicclassNode<E>{8privateNode<E>pre;9privateEelement;10......
  • scp双向复制命令
    实例1:从本地服务器复制到远程服务器: (1) 复制文件:  命令格式:  scp local_file remote_username@remote_ip:remote_folder  样例[email protected].......
  • 【STL】Deque - 双向队列
    Deque简介Deque是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。允许快速地访地随机访问,但是和vector这种将所有对象保存在一块连续的内存块不同,Deque......
  • podman+openresty+openssl,https双向认证demo测试
    前言暂不讨论https原理,单论配置的话:1.https单项认证server:server.crt+server.keyclient:server_ca.crt2.https双向认证server:server.crt+server.key......
  • Vue的双向绑定原理
    只是储备:什么是MVVM模式,和MVC的区别?MVVM是模型-视图-视图模型,Vue和React都在使用MVVM模式,vm是v和m的桥梁,view页面和m模型数据之间通过vm是存在双向联系的; vue实现双向数......
  • Go 双向链表
    1.双向链表的应用实例使用带head头的双向链表实现——王者容易英雄排行榜单向链表的缺点分析:1)单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找2)单向......
  • DM8主备集群搭建
    1.1、守护进程守护进程(dmwatcher)是DM数据守护系统不可或缺的核心部件,是数据库实例和监视器之间信息流转的桥梁。数据库实例向本地守护进程发送信息,接收本地守护进程的消......
  • Vue-双向数据绑定
    双向数据绑定的源代码<body> <divid="app"> <p>{{data1}}</p> <inputname=""id="":value="data1"@input="fn"> </div> </body> <script> newVue({ ......
  • 双向长短期记忆模型如何工作(深度学习)
    双向长短期记忆模型如何工作(深度学习)Photoby弗雷迪·雅各布on不飞溅使用改进的双向长短期记忆神经网络(arXiv)检测恶意请求作者:WenhaoLi,BinchengZhan......