DM到DM单向同步方案

一、安装前准备

1.1环境准备

(1)两台机器均安装达梦数据库

(2)两台数据库字符集相同

(3)两台主机都关闭防火墙,上传dmhs安装包、libdmoci.so文件(对应版本)

1.2安装dmhs(源端和目标端):

(1)可执行文件授权:

mv dmhs_V4.3.08_dm8_rev126685_rh6_64_veri_20230323_sp5.bin /home/dmdba

chmod +x dmhs_V4.3.08_dm8_rev126685_rh6_64_veri_20230323_sp5.bin

(2)检查下tmp空间是否有1G大小,不足的话在root进行扩容:

 mount -o remount,size=2G /tmp

(3)启动dmhs执行文件:

./dmhs_V4.3.08_dm8_rev126685_rh6_64_veri_20230323_sp5.bin -i

 

环境安装路径为/home/dmdba/dmhs,源端虚机和目的端虚机环境都需要安装。

1.3数据库参数检查(源端和目标端)

(1)归档参数检查

DMHS同步源端数据库需要开启归档模式,检查归档是否开启:

 

如果ARCH_MODE为N,则未开启归档,执行步骤如下:

SQL> alter database mount;

SQL> alter database add archivelog 'DEST=/dm8/dmarch,TYPE=LOCAL,FILE_SIZE=256,SPACE_LIMIT=0';

SQL> alter database archivelog;

SQL> alter database open;

(2)附件日志参数

DMHS同步源端数据库需要开启附加日志参数

SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);

select para_value from v$dm_ini where para_name in ('RLOG_APPEND_LOGIC');

注意:dm.ini配置参数中“FAST_COMMIT”必须为0,否则会导致逻辑日志不全而影响同步。

SP_SET_PARA_VALUE(1,'FAST_COMMIT',0);

select para_value from v$dm_ini where para_name in ('FAST_COMMIT');

1.4 配置DDL辅助表和触发器

注:一定了解清楚客户的需求是否需要ddl同步,如果不需要,不要执行此脚本,并且源端配置文件中配置<ddl_mask>元素并置空。

DMHS支持DDL同步功能,但是默认不启用该功能。对于同步源端为DM8数据

库,有两种方式启用DDL同步功能:

(1)启用DM8数据库系统参数“RLOG_APPEND_SYSTAB_LOGIC”,该参数启用在日志中记录系统表逻辑操作功能。该参数默认取值为0,即不启用;设置为1时,启用该功能。同时也需要在DMHS配置文件中进行ddl_mask参数配置,用于设置DDL同步对象及操作。

RLOG_APPEND_SYSTAB_LOGIC这个参数在启用 RLOG_APPEND_LOGIC 后有效

(2)执行DDL同步脚本方式。在源端DM8数据库中以SYSDBA用户执行DDL同步脚本,在SYSDBA模式下创建相关DMHS系统表及触发器,并在DMHS配置文件中配置ddl_mask参数选项以启用该功能。ddl_mask参数的取值参见《达梦数据实时同步软件用户手册》。

同步脚本位于DMHS安装目录的scripts子目录下,命名为:ddl_sql_DM8.sql。运行过程使用以下命令:

SYSDBA用户执行。

start .../ddl_sql_DM8.sql   --建议用管理工具执行。

--检查创建的触发器和辅助表是否有效,检查辅助表的语句:

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

 

如果存在以上的查询结果,表示DMHS辅助表创建有效。

--检查触发器的语句:

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

如果存在以上的查询结果,表示DMHS触发器创建有效。

1.5准备DMHS连接用户、测试对象

源端和目标端数据库执行操作进行连接用户创建及授权:

CREATE TABLESPACE HSEXEC DATAFILE 'HSEXEC.DBF' size 128;

CREATE USER HSEXEC IDENTIFIED by "111111111" DEFAULT TABLESPACE HSEXEC DEFAULT INDEX TABLESPACE HSEXEC;

GRANT VTI TO HSEXEC;

GRANT PUBLIC TO HSEXEC;

GRANT RESOURCE TO HSEXEC;

GRANT DBA TO HSEXEC;

源端创建测试模式及对象:

create tablespace lcz datafile '/dm8/dmdata/DMDB/lcz.dbf' size 256;

create user lcz identified by “lcz123456” default tablespace LCZ default index tablespace lcz;

GRANT VTI TO LCZ;

GRANT PUBLIC TO LCZ;

GRANT RESOURCE TO LCZ;

GRANT DBA TO LCZ;

create table lcz.test1 (id int,ename varchar(10));

insert into lcz.test1 values (1,'lcz');

insert into lcz.test1 values (2,'you');

insert into lcz.test1 values (3,'rui');

commit;

create table lcz.test_insert(id int,name varchar(100),addr varchar(200));

declare

 sqlstr varchar;

begin

 for i in 1..100 loop

  sqlstr:='insert into lcz.test_insert values ';

   for j in 1..10 loop

     sqlstr=sqlstr || '(' ||j|| ',''test'',''testestewt''),';

   end loop;

   sqlstr=rtrim(sqlstr,',') ;

   execute immediate sqlstr;

  end loop;

  commit;

end

/

目标端创建用户:

create tablespace lcz1 datafile 'lcz1.dbf' size 256;

create user lcz1 identified by “lcz123456” default tablespace lcz1 default index tablespace lcz1;

GRANT VTI TO LCZ1;

GRANT PUBLIC TO LCZ1;

GRANT RESOURCE TO LCZ1;

GRANT DBA TO LCZ1;

 

二、源端准备工作

由于DMHS配置文件涉及多个配置项,在安装配置DMHS之前,需要做好相关准备工作,具体有如下准备工作:

(1)检查操作系统及数据库版本以及位数,确保与待部署的DMHS版本相匹配。

(2)规划好源端DMHS可使用的安装部署路径。

(3)DMHS部署需要设置管理端口号(mgr_port)和数据端口号(data_port),因此在部署之前,需要提供两个端口号以供使用。

(4)在部署之前需要明确DMHS配置文件中连接DM8数据库的用户(db_user)及密码(db_pwd),该用户需要具有操作待同步表的权限。本文档为测试用例,自行创建测试用户。

(5)确定是否有DDL同步需求,如果有,确定待同步的对象如表、视图、存储过程、函数、序列等,并且需要确定对象的操作如创建、删除、修改等。根据此同步需求设置ddl_mask参数值。

(6)确定源端DM8数据库的归档日志是否需要DMHS进行处理如删除、保留或转移。依据此需求设置clear_flag参数值。

(7)确定需要进行数据同步的用户表(白名单及黑名单)及同步映射关系,并据此需求,完成filter及map元素项的参数值设置。

(8)源端数据库是否通过HA管理

源端数据库是否通过HA管理,请咨询现场数据库DBA或实施人员。如果源端数据库是通过HA进行管理的,则配置DMHS的时候需要将整个DMHS部署到HA管理的阵列上或者将DMHS配置<DICT_DIR>中字典存放目录指定为HA管理阵列。

(9)源端是否为主备环境,如果在主备环境上搭建DMHS,在进行数据装载的时候指定的IP必须是主机的IP,不能为备机IP。

2.1 源端DMHS服务配置

cd /home/dmdba/dmhs/bin

cp TemplateDmhsService DmhsService

vim DmhsService

2.2 新建dmhs.hs配置文件

下面为内容解析:

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

<dmhs>

<base>--------MGR配置,配置dmhs服务器管理模块,以<base>开始,</base>结束

<lang>en</lang>--可选en(英文),cn(中文)

        <mgr_port>5345</mgr_port>----管理端口,范围1000~65535,监听端口上的连接,接受执行信息命令。

        <chk_interval>3</chk_interval>-----状态轮询间隔(单位:秒)        <ckpt_interval>60</ckpt_interval>----检查点间隔,范围10~65535表示exec模块检查点刷新时间

        <siteid>1</siteid>---站点号

    </base>

    <cpt>

        <db_type>DM7</db_type>---数据库类型,不区分大小写,限定限定Oracle9i,Oracle10g,Oracle11g,DM6,DM7,DB2,MYSQL,POSTGRES

        <db_server>192.168.56.128</db_server>---数据库服务名或IP,数据库OCI连接使用的服务名

        <db_user>SYSDBA</db_user>---数据库用户名

        <db_pwd>SYSDBA</db_pwd>---数据库口令

        <db_port>5236</db_port>---数据库端口号

        <idle_time>10</idle_time>---分析线程空闲睡眠时间

<ddl_mask>TABLE:INDEX:SEQUENCE:TRUNCATE:CREATE:DROP:ALTER</ddl_mask>--- DDL同步对象和操作配置参数,为左边可选配置项的组合,每个配置项之间用冒号分隔,如TABLE: VIEW: OP,可同步表和视图的所有操作。需要执行DDL配置的脚本和触发器,当掩码中增加了DEFINE选项以后,DDL同步将只同步对象定义,不会同步对象中的数据,使用它可以防止大的查询建表DDL事务导致磁盘空间占满的问题。空串表示不进行DDL同步。

        <dict_dir>./DICT</dict_dir>

        <arch>

            <clear_interval>600</clear_interval>---归档文件清理间隔(单位:秒),范围60~20000

            <clear_flag>1</clear_flag>---清除归档日志的方式:0保持现状1删除2移走

        </arch>

        <send>

            <ip>192.168.56.129</ip>--- DMHS目的端IP

            <mgr_port>5345</mgr_port>--- DMHS接收器管理端口号,范围1~65535

            <data_port>5346</data_port>--- DMHS接收器数据端口号,范围1000~65535

            <net_pack_size>256</net_pack_size>---消息包大小(单位:KB),范围1~1024

            <net_turns>0</net_turns>---是否开启网闸模式,0关闭,1开启

            <crc_check>0</crc_check>---是否进行消息校验,0关闭,1开启

            <trigger>0</trigger>---是否忽略触发器(目的端只支持DM数据库)

            <constraint>0</constraint>---是否忽略约束(目的端只支持DM数据库)

            <identity>0</identity>---是否忽略自增列(目的端只支持DM数据库)

        <filter>---过滤规则用于允许或禁止符合过滤条件的操作,在 SEND 配置中,必须包含过滤规则的配置,过滤规则配置的示例如下所示:

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

                    <item>SYSDBA.*</item>

                </enable>

                <disable/>---黑名单,可选,不允许被同步的表,格式同白名单,但是黑名单中允许指定列级过滤规则

            </filter>

            <map>---映射规则用于源端和目的端对象的同步关系映射,在 SEND 配置中,映射规则的配置不是必须的,映射规则可包含表映射规则及列映射规则

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

            </map>

        </send>

    </cpt>

</dmhs>

本例dmhs.hs文件配置如下:

<?xml version="1.0" encoding="UTF-8"?>

<dmhs>

<base>

       <lang>en</lang>

       <log_policy>2</log_policy>

       <mgr_port>5345</mgr_port>

       <ckpt_interval>60</ckpt_interval>

       <siteid>1</siteid>

       <version>2.0</version>

   </base>

<cpt>

       <db_type>dm8</db_type>

       <db_server>192.168.23.99</db_server>

       <db_user>HSEXEC</db_user>

       <db_pwd>111111111</db_pwd>

       <db_port>5236</db_port>

       <char_code>PG_UTF8</char_code>

       <db_ssl_path></db_ssl_path>

       <db_ssl_pwd></db_ssl_pwd>

       <parse_thr>1</parse_thr>

       <ddl_mask>op:TABLE:VIEW:PROCEDURE:FUNCTION:TRIGGER:INDEX:CHECK:SEQUENCE:TYPE:PACKAGE:SYNONYM</ddl_mask>

       <arch>

             <clear_interval>600</clear_interval>

             <clear_flag>1</clear_flag>

       </arch>

<send>

       <ip>192.168.23.11</ip>

       <mgr_port>5345</mgr_port>

       <data_port>5346</data_port>

        <trigger>1</trigger>

        <constraint>1</constraint>

        <identity>0</identity>

       <net_turns>0</net_turns>

       <filter>

            <enable>

                <item>LCZ.*</item>

                <item>SYSDBA.*</item>

            </enable>

            <disable/>

      </filter>

      <map>

               <item>LCZ.* == LCZ1.*</item>

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

      </map>

</send>

</cpt>

</dmhs>

 

三、目标端准备工作

DMHS部署分为源端部署和目的端部署两个步骤。在完成源端相关准备工作后,需要进行目的端的相关准备,具体有如下准备工作:

(1)检查操作系统及数据库版本以及位数,确保与待部署的DMHS版本相匹配。

(2)规划好目的端DMHS可使用的安装部署路径。

(3)DMHS部署需要设置管理端口号(mgr_port)和数据端口号(data_port),在部署之前,需要提供两个端口号以供使用。

(4)在部署之前需要明确DMHS配置文件中目的端DM8数据库的用户(db_user)及密码(db_pwd),该用户用来执行同步,需要具有操作其他同步用户的权限。

当目标端数据库管理系统是DM6时,执行端数据库连接必须使用SYSDBA

(5)源端是否有序列同步,如果有,目的端配置文件中需要设置参数“seq_sync_mode”取值为1。

(6)目的端同步表上是否有触发器,如果有,需要禁用触发器。

DMHS管理员手册:

EXEC模块在事务数据入库时,由于采用的是ODBC标准的接口操作数据库,如果目标表上存在触发器,那么入库操作同样会触发这些触发器,如果触发器中会涉及到数据或是其它表的修改,则会造成源端和目标端数据的不一致。在搭建DMHS时,应该事先禁用目标库中需要同步表上的触发器,针对表上约束也是一样的道理。

3.1目标端DMHS服务配置

cd /home/dmdba/dmhs/bin

cp TemplateDmhsService DmhsService

vim DmhsService

3.2目标端dmhs.hs配置文件

本文示例:

<?xml version="1.0" encoding="UTF-8"?>

<dmhs>

    <base>

        <lang>en</lang>

        <log_policy>2</log_policy>

        <mgr_port>5345</mgr_port>

        <ckpt_interval>60</ckpt_interval>

        <siteid>2</siteid>

        <version>2.0</version>

    </base>

    <exec>

        <recv>

            <data_port>5346</data_port>

        </recv>

        <db_type>dm8</db_type>

        <db_server>192.168.23.11</db_server>

        <db_user>HSEXEC</db_user>

        <db_pwd>111111111</db_pwd>

        <char_code>PG_UTF8</char_code>

        <db_port>5236</db_port>

        <level>0</level>

        <exec_thr>1</exec_thr>

        <exec_sql>1024</exec_sql>

        <exec_trx>5000</exec_trx>

        <exec_rows>250</exec_rows>

        <exec_policy>1</exec_policy>

        <commit_policy>1</commit_policy>

        <seq_sync_mode>1</seq_sync_mode>

        <trxid_tables>5</trxid_tables>

        <clear_trx_file>1</clear_trx_file>

      </exec>

</dmhs>

四、单向同步

在启动服务之前,需确认动态库匹配:

Ldd libdmhs_exec.so

Ldd libcpt_dm8.so

最好目的端和源端都检查一下,找到对应版本的libdmoci.so,放到hs的bin下。

4.1 初始化装载

 

DMHS初始装载有两种:初始字典装载和初始数据装载。

DMHS同步源端在首次启动日志分析进行数据同步之前,需要进行初始字典装载操作,在程序目录下创建DICT文件夹,并将同步表的字典信息写入文件保存在磁盘上,然后才能启动源端日志分析模块功能。

初始数据装载主要用于将同步源端的数据装载到目的端,保持源端和目的端的数据初始一致。如果没有数据装载的需求,可以不用进行该操作。

 

4.1.1初始化字典装载

(1)启动目的端执行服务

进行初始字典装载时,需要首先启动目的端DMHS服务。启动DMHS服务方式有命令行启动和后台服务启动。如下为Linux环境启动方式,Windows方式类似。

启动DMHS管理服务:

cd /home/dmdba/dmhs/bin

./DmhsService start

ps -ef |grep dmhs

服务启动成功,检查日志未发生报错

初次启动目的端DMHS服务时,同步执行服务并未开启,需要使用DMHS控制台工具连接DMHS管理服务,手动输入start exec命令开启。具体示例如下:

 

(2)源端进行初始字典装载

源端启动hs服务,并进入管理工具:

cd /home/dmdba/dmhs/bin

./DmhsService start

4.1.2 初始化数据装载

进行初始数据装载时,首先也需要启动目的端执行服务。在启动目的端执行服务后,启动源端DMHS管理服务,并通过DMHS控制台工具连接管理服务,使用COPY命令及相关数据装载选项进行数据装载操作。

目的端需要使用DMHS创建初始表

当目标端已建立有同步表时,初始装载不需要进行表的创建,不需要使用CREATE装载关键字。示例如下:

DMHS >COPY 0 "SCH.NAME='XXX1'" INSERT|REG|THREAD|8

如果有多个同步模式可以使用如下命令:

DMHS >COPY 0 "SCH.NAME IN ('XXX1','XXX2','XXX3')" INSERT|THREAD|8

将XXX替换为实际同步模式名。

 

4.2 同步测试

查看源端数据表和目标端已同步数据:

源端插入数据:

 

 目标端查看是否同步:

 结论:单向同步搭建完成。

更多相关资料请参考达梦云适配技术社区

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
达梦数据DM8主从数据同步的步骤如下: 1. 首先,跳过以下步骤:cd /dm/app/db/bin dmctlcvt TYPE=3 SRC=/dm/data/PROD/dmwatcher.ini DEST=/dm/data/PROD/ cd /dm/data/PROD/ mv ./GRP1/* ./ chown -R dmdba:dinstall dmwatcher.ctl 将文件传到备份服务器 su - dmdba cd /dm/backup scp -r prod_fb_20201124/ 192.168.222.134:/dm/backup cd /dm/data/PROD/ scp dmarch.ini dmmal.ini dmwatcher.ini dmwatcher.ctl 192.168.222.134:/dm/data/PROD/ 关闭数据服务,重启 cd /dm/app/db/bin ./DmServicePROD stop ./dmserver path=/dm/data/PROD/dm.ini mount \[1\] 2. 在从机上启动管道服务器:cd /dm/app/db/bin ./DmAPService start \[1\] 3. 创建备份还原目录:su - dmdba mkdir -p /dm/data/PROD/ctl_bak mkdir -p /dm/data/PROD/bak \[2\] 4. 使用dmrman进行备库备份还原,确保在dmdba用户下执行以下命令:cd /dm/app/db/bin dmrman RMAN>RESTORE DATABASE TO '/dm/data/PROD' overwrite FROM BACKUPSET '/dm/backup/prod_fb_20201124'; RMAN>RECOVER DATABASE '/dm/data/PROD/dm.ini' FROM BACKUPSET '/dm/backup/prod_fb_20201124'; RMAN>RECOVER DATABASE '/dm/data/PROD/dm.ini' UPDATE DB_MAGIC; \[2\] 5. 创建数据库实例,要在root用户下执行以下代码:cd /dm/app/db/script/root #dm7执行 ./dm_service_installer.sh -t dmserver -p PROD -i /dm/data/PROD/dm.ini #dm8执行 #主库 ./dm_service_installer.sh -t dmserver -p PROD -dm_ini /dm/data/PROD/dm.ini #备库 ./dm_service_installer.sh -t dmserver -p STB1 -i /dm/data/PROD/dm.ini \[3\] 这些步骤将帮助您在达梦数据DM8中实现主从数据同步。请确保按照顺序执行这些步骤,并根据您的具体情况进行相应的调整。 #### 引用[.reference_title] - *1* *2* *3* [DM8数据库实时主备](https://blog.csdn.net/qq_51808662/article/details/124091535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值