注册
DMDRS部署DM8主备到DM8单机同步
培训园地/ 文章详情 /

DMDRS部署DM8主备到DM8单机同步

打工人小赵 2025/09/30 82 0 0

1 DMDRS基础架构
DMDRS产品采用模块化的设计,通过灵活配置不同的功能模块,实现多功能的数据复制服务,以满足多种场景的数据复制业务需求。支持数据迁移、同步、分发、转换四大核心功能,适配多种同步拓扑(一对一、双向、级联、环形、主备等)。
image.png
1.1 核心架构模块

MANAGER(服务管理)
- Manager管理模块是DMDRS服务的管理模块,启动DMDRS服务后,Manager管理模块开始运行,主要提供客户端监听、其他功能模块的加载和维护以及执行控制台命令等功能。
CPT(数据捕获与投递)
- CPT模块主要实现源数据库的全量数据装载以及增量数据实时捕获、解析和投递。CPT模块主要提供数据装载、添加同步表、日志捕获、日志解析和消息投递等功能。
DSS(数据分流存储)
- DSS模块具备高可靠、高吞吐量的流存储和分发功能。DSS模块接收CPT模块发送的数据,并根据Topic主题将消息分类流式持久化存储在不同的Topic中,供下一级数据服务访问使用。
EXEC(数据应用)
- EXEC模块主要功能为接收CPT模块发送的全量装载数据或者增量同步数据,在目标数据库进行应用,实现数据实时同步。同时,EXEC模块也可以从DSS流式存储中获取同步数据并应用到目标数据库。
CVT(数据转换)
- CVT模块通过DRS语言实现自定义编程式编写数据转换规则和逻辑,实现数据清洗转换的功能。
SCHED(定时调度)
- SCHED模块主要提供定时自动执行功能调度任务,实现定时执行CVT脚本、定时删除多CPT归档、定时服务守护、定时数据装载、定时数据同步、定时静态数据校验和定时动态数据校验等调度功能。
Console工具
- Console远程控制工具是基于TCP/IP的DMDRS远程控制工具。

1.2 核心功能

数据迁移
- 根据数据量及表类型可选择分组装载、交换分区装载、断点续传、快速装载。
数据同步
- 全量装载:源库全量数据初始化至目标库,根据数据量及表类型可选择分组装载、交换分区装载、断点续传、快速装载。
- 增量同步:支持动态添加或删除增量同步表,在已有同步链路中,添加增量同步表后,源DMDRS会自动进行表的增量数据的同步。
数据分发
- 基于映射规则的数据分发;高性能、高吞吐量的持久化存储;基于DMDSS主备的数据分发、避免DMDSS单点故障问题。
-数据转换
- 可实现自定义编程式的转换逻辑编写、实时转换、支持转换函数、支持联机查询、支持键值对存储

1.3 兼容性
image.png
2 部署过程
2.1 数据库准备工作
2.1.1 开启源数据库的归档和逻辑日志

##归档
主备及目标端均已开启归档,路径为/dbarch/dmarch

##开启逻辑附加日志
call sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);
根据实际需求配置RLOG_APPEND_LOGIC的参数值,参数配置说明如下所示,以参数值设置为1为例。
1:如果有主键列,记录UPDATE和DELETE操作时只包含主键列信息,若没有主键列则包含所有列信息。
2:不论是否有主键列,记录UPDATE和DELETE操作时都包含所有列的信息。
3:记录UPDATE时包含更新列的信息以及ROWID,记录DELETE时只有ROWID。

#检查参数配置是否生效
select para_name, para_value, sess_value, file_value from V$DM_INI where para_name in ( 'RLOG_APPEND_LOGIC','ARCH_INI');
行号        PARA_NAME        PARA_VALUE  SESS_VALUE  FILE_VALUE
---------- --------- ---------- ---------- ----------
1          ARCH_INI                        1           1         1
2          RLOG_APPEND_LOGIC     1          1          1

2.1.2 配置DDL同步

方式一:触发器方式(推荐)

在源数据库执行“ddl_sql_dm8.sql”脚本创建触发器和辅助表,脚本默认位置在DMDRS执行程序目录下的scripts子目录中。

SQL> set define off;
SQL> start ddl_sql_dm8.sql
检查创建的触发器和辅助表是否有效。

检查创建的触发器。

SQL> select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DRS_$%' and status = 'Y';
查询结果如下:

行号          OWNER          TRIGGER_NAME
----------   -----------    ----------------
1            SYSDBA         DRS_$DDL_TRIGGER_AFTER
2            SYSDBA         DRS_$DDL_TRIGGER_BEFORE
3            SYSDBA         DRS_$DDL_TRIGGER_GRANT
4            SYSDBA         DRS_$DDL_TRIGGER_REVOKE
已用时间: 12.147(毫秒). 执行号:16.
如果存在以上查询结果,表示DMDRS触发器创建有效。

检查创建的辅助表。

SQL> select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DRS_$%' and status = 'VALID';
查询结果如下:

行号          OWNER         TABLE_NAME
----------   -----------   ----------------
1            SYSDBA        DRS_$DDL_COL
2            SYSDBA        DRS_$DDL_SQL
3            SYSDBA        DRS_$DDL_CONS
4            SYSDBA        DRS_$DDL_IDX
5            SYSDBA        DRS_$DDL_RENAME
6            SYSDBA        DRS_$DDL_SEQ
7            SYSDBA        DRS_$DDL_PART
8            SYSDBA        DRS_$DDL_COMMENT
9            SYSDBA        DRS_$DDL_LOG
9 rows got
已用时间: 197.302(毫秒). 执行号:7.
如果存在以上查询结果,表示DMDRS辅助表创建成功。

方式二:系统表方式

设置源数据库配置文件“dm.ini”中RLOG_APPEND_SYSTAB_LOGIC参数。

静态配置

设置源数据库配置文件“dm.ini”中RLOG_APPEND_SYSTAB_LOGIC参数值为1。

#redo log
RLOG_APPEND_SYSTAB_LOGIC = 1
重启数据库服务,使配置生效。

动态配置

调用系统过程SP_SET_PARA_VALUE将源数据库配置文件“dm.ini”中RLOG_APPEND_SYSTAB_LOGIC参数值设置为1。此系统过程的定义请参考《DM8_SQL语言使用手册》。

SQL> call sp_set_para_value(1,'RLOG_APPEND_SYSTAB_LOGIC',1);
检查RLOG_APPEND_SYSTAB_LOGIC参数配置是否生效。

SQL>  select para_name, para_value, sess_value, file_value from V$DM_INI where para_name = 'RLOG_APPEND_SYSTAB_LOGIC';
查询结果如下:

行号        PARA_NAME                PARA_VALUE SESS_VALUE FILE_VALUE
---------- ------------------------ ---------- ---------- ----------
1          RLOG_APPEND_SYSTAB_LOGIC 1          1          1

已用时间: 3.708(毫秒). 执行号:506.
如果存在以上查询结果,表示RLOG_APPEND_SYSTAB_LOGIC参数配置已生效。

源数据库为DM8单机和DSC时,支持触发器方式和系统表方式配置DDL同步。级联同步和环形同步建议使用系统表方式配置DDL同步
表级同步不支持系统表方式同步DDL。

2.1.3 创建数据库同步用户DMDRS

CREATE TABLESPACE DMDRS DATAFILE 'DMDRS.DBF' SIZE 2048 AUTOEXTEND ON MAXSIZE 102400;
CREATE USER "DMDRS" IDENTIFIED BY "xxxxxx" DEFAULT TABLESPACE "DMDRS"; 
GRANT "DBA" TO "DMDRS";

2.2 创建安装目录
DMDRS 默认安装目录在 home 目录下,也可根据需要自定义安装目录。创建如下安装目录:

[root@localhost /]# mkdir -p /home/dmdba/dmdrs5
[root@localhost /]# chown dmdba:dinstall -R /home/dmdba/dmdrs5/
[root@localhost /]# chmod -R 755 /home/dmdba/dmdrs5/

2.3 安装包处理
将 DMDRS 安装包上传到 opt 目录,并修改权限:

[root@localhost opt]# chown dmdba:dinstall dmdrs_rev195292_x86_rh6_64_20250801.bin
[root@localhost opt]# chmod -R 755 dmdrs_rev195292_x86_rh6_64_20250801.bin

2.4 DRS安装

./dmdrs_rev195292_x86_rh6_64_20250801.bin  -i
Extract install files..........

Please select the installer's language (E/e:English C/c:Chinese)[E/e]:c
-----------欢迎使用达梦数据复制软件安装工具-----------
输入[exit]可退出安装。
-----------安装目录-----------
指定安装目录[/home/dmdba/dmdrs5]:
-----------安装组件-----------
请选择需要安装的组件
1.安装达梦数据融合管理平台
2.安装代理
请选择安装组件数字序号(使用空格间隔):1 2
选择的组件有:
1.安装达梦数据融合管理平台
2.安装代理
确认?[Y/y(确认选择) or N/n(重新选择)]:y
-----------许可证文件-----------
1.免费试用达梦数据复制软件(必须在试用期范围内使用,反复安装无效,使用时间为3个月)
2.使用许可证文件
指定许可证文件(1,2)[1]:1
免费试用许可证文件限制信息如下:
有效日期:2025-10-16
版本类型:试用版
许可证编号:dm66n367
授权顾客名称:DEVELOP USER
当前选择为免费试用,是否继续安装?[Y/y or N/n]:y
-----------配置-----------
数据库驱动路径配置 -数据库驱动路径[/home/dmdba/dmdbms/bin]:
注意:代理配置IP不允许设置成127.0.0.1!
代理配置-代理IP(xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx):xxx.xxx.xxx.xxx       
代理配置-代理端口[19345]:
达梦数据融合管理平台配置-管理平台端口[8080]:
注意:密码必须至少8个字符,并且满足以下条件中的任意[两项]:数字、大写字母、小写字母、特殊字符(如!@#$%^&*等)。
达梦数据融合管理平台配置-管理平台密码:
达梦数据融合管理平台配置-管理平台确认密码:
是否使用外置库(0:不使用  1:使用 )[0]:
注意:请输入9至48个字符长度的密码,并且满足以下条件中的任意[三项]:数字、大写字母、小写字母、特殊字符(如!@#$%^&*等)。
内置数据库配置-密码:
内置数据库配置-确认密码:
-----------安装小结-----------
安装目录:[/home/dmdba/dmdrs5]
数据库驱动路径:[/home/dmdba/dmdbms/bin]
代理IP:[xxx.xxx.xxx.xxx]
代理端口:[19345]
达梦数据融合管理平台IP:[127.0.0.1]
达梦数据融合管理平台端口:[8080]
内置库信息:
数据库IP:[127.0.0.1]
数据库端口:[15236]
用户名:[SYSDBA]
密码:[******]
所需磁盘空间/可用磁盘空间:[2,884 MB/77,222 MB]
确认安装?[Y/y or N/n]:y
-----------安装中-----------
server start ...    server finished.
default start ...    default finished.
agent start ...    agent finished.
web start ...    web finished.
doc start ...    doc finished.
db start ...    db finished.
安装成功
-----------系统服务-----------
内置数据库服务设置
1.注册系统服务
2.不注册系统服务
启动方式(1,2)[2]:
正在创建内置数据库服务....
达梦数据融合管理平台服务设置
1.注册系统服务
2.不注册系统服务
启动方式(1,2)[2]:
正在创建达梦数据融合管理平台服务....
达梦数据融合管理平台代理服务设置
1.注册系统服务
2.不注册系统服务
启动方式(1,2)[2]:
正在创建达梦数据融合管理平台代理服务....
正在启动服务[DmServiceDFDB]
正在启动服务[DfmWebService]
正在启动服务[DfmAgentService]
-----------安装总结-----------
达梦数据复制软件V5安装完成
地址:http://127.0.0.1:8080
用户名/密码:admin/******
更多安装信息,请查看安装日志文件:/home/dmdba/dmdrs5/log/install.log

2.5 源端目标端环境变量配置

##添加DRS及DPI
vi ~/.bash_profile
#添加
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dm/dmdbms/bin:/home/dmdba/dm/dmdbms/drivers/dpi:/home/dmdba/dmdrs5/bin"
export DM_HOME="/home/dmdba/dm/dmdbms"
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$DM_HOME/bin:/home/dmdba/dm/dmdbms/drivers/dpi:/home/dmdba/dmdrs5/bin

source ~/.bash_profile

2.6 配置dm_svc.conf

TIME_ZONE=(+8:00)
LANGUAGE=(cn)
DMDW=(xxx.xxx.xxx.xxx:5238,xxx.xxx.xxx.xxx:5238)   #根据实际业务替换IP

[DMDW]
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
LOGIN_MODE=(1)

说明:
当源端数据库为DW主备集群,若源端CPT模块数据源只设置主库IP,当主备因故障发生切换时,源端cpt模块将无法访问数据库,配置服务名可避此问题。
当源端为单机时无需配置

2.7 cpt模块和exec模块配置

#主cpt.xml
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<drs>
  <base>
    <name>cpt_dw</name>
    <lang>ch</lang>
    <mgr_port>5645</mgr_port>
    <siteid>3</siteid>
    <mem_size>1</mem_size>
  </base>
  <cpt>
    <name>cpt_dm8</name>
    <char_code>GB18030</char_code>
    <ddl_mask>TABLE:ALTER:CREATE:DROP:TRUNCATE:DDL_REC:DDL_WARN</ddl_mask>
    <has_group>1</has_group>
    <login>
      <dbtype>dm8</dbtype>
<server>DMDW</server> <!-- 数据库服务名或IP,根据实际情况配置 -->
      <user>DMDRS</user><!-- 数据库用户名,根据实际情况配置 -->
      <pwd>xxx</pwd><!-- 数据库口令,根据实际情况配置 -->
      <port>5238</port><!-- 数据库端口,根据实际情况配置 -->
    </login>
    <send>
      <ip>xxx.xxx.xxx.xxx</ip><!-- 目的端IP,根据实际情况配置 -->
      <port>5645</port><!-- 目的端端口,根据实际情况配置 -->
      <target_name>exec_dm8</target_name>
      <map>
        <item type="table">DMDRS.*==DMDRS.*</item>
      </map>
    </send>
    <cluster>
      <mode>master</mode><!-- 配置主机模式 -->
      <standby>
        <ip>xxx.xxx.xxx.xxx</ip><!-- 备节点的IP地址,根据实际情况配置 -->
        <port>5745</port><!-- 备节点的Manager管理模块的端口号 -->
        <target_name>cpt_dm8</target_name><!-- 备节点管理模块的端口号 -->
      </standby>
      <local>xxx.xxx.xxx.xxx</local><!-- 本机IP,根据实际情况配置 -->
      <priority>1,10</priority><!-- 源DMDRS主机优先运行在数据库主备的主机上,最近一次切换和触发自动切换尝试之间的最小间隔时间 -->
    </cluster>
  </cpt>
</drs>
#备cpt.xml
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<drs>
  <base>
    <name>cpt_dw</name>
    <lang>ch</lang>
    <mgr_port>5745</mgr_port>
    <siteid>3</siteid>
  </base>
  <cpt>
    <name>cpt_dm8</name>
    <char_code>GB18030</char_code>
    <ddl_mask>TABLE:ALTER:CREATE:DROP:TRUNCATE:DDL_REC:DDL_WARN</ddl_mask>
    <has_group>1</has_group>
    <login>
      <dbtype>dm8</dbtype>
<server>DMDW</server> <!-- 数据库服务名或IP,根据实际情况配置 -->
      <user>DMDRS</user><!-- 数据库用户名,根据实际情况配置 -->
      <pwd>xxx</pwd><!-- 数据库口令,根据实际情况配置 -->
      <port>5238</port><!-- 数据库端口,根据实际情况配置 -->
    </login>
    <send>
      <ip>xxx.xxx.xxx.xxx</ip><!-- 目的端IP,根据实际情况配置 -->
      <port>5645</port><!-- 目的端端口,根据实际情况配置 -->
      <target_name>exec_dm8</target_name>
      <map>
        <item type="table">DMDRS.*==DMDRS.*</item>
      </map>
    </send>
    <cluster>
      <mode>slave</mode><!-- 配置备机模式 -->
      <local>xxx.xxx.xxx.xxx</local><!-- 本机IP,根据实际情况配置 -->
      <priority>1,10</priority><!-- 源DMDRS主机优先运行在数据库主备的主机上,最近一次切换和触发自动切换尝试之间的最小间隔时间 -->
    </cluster>
  </cpt>
</drs>
DMDRS主备说明:
若需配置DRS主备需在cpt模块添加参数,参数可根据实际业务情况进行调整:
DMDRS主:
    <cluster>
      <mode>master</mode><!-- 配置主机模式 -->
      <standby>
        <ip>xxx.xxx.xxx.xxx</ip><!-- 备节点的IP地址,根据实际情况配置 -->
        <port>5745</port><!-- 备节点的Manager管理模块的端口号 -->
        <target_name>cpt_dm8</target_name><!-- 备节点管理模块的端口号 -->
      </standby>
      <local>xxx.xxx.xxx.xxx</local><!-- 本机IP,根据实际情况配置 -->
      <priority>1,10</priority><!-- 源DMDRS主机优先运行在数据库主备的主机上,最近一次切换和触发自动切换尝试之间的最小间隔时间 -->
    </cluster>
DMDRS备:
    <cluster>
      <mode>slave</mode><!-- 配置备机模式 -->
      <local>xxx.xxx.xxx.xxx</local><!-- 本机IP,根据实际情况配置 -->
      <priority>1,10</priority><!-- 源DMDRS主机优先运行在数据库主备的主机上,最近一次切换和触发自动切换尝试之间的最小间隔时间 -->
</cluster>
若无需配置DRS主备可将上述参数删除
#目标端
<?xml version="1.0" encoding="GB18030"?>
<drs>
    <base>
        <mgr_port>5345</mgr_port>
        <siteid>2</siteid>
        <lang>ch-utf8</lang>
    </base>
    <exec>
        <name>exec_dm8</name>
        <char_code>GB18030</char_code>
        <login>
            <dbtype>dm8</dbtype>
      <server>DMDW</server> <!-- 数据库服务名或IP,根据实际情况配置 -->
            <user>DMDRS</user><!-- 数据库用户名,根据实际情况配置 -->
            <pwd>xxx</pwd><!-- 数据库口令,根据实际情况配置 -->
            <port>5236</port><!-- 数据库端口,根据实际情况配置 -->
        </login>
        <group>
        <item>
        <id>35</id>
        <exec_policy>0</exec_policy>
        <desc>
             <table>DMDRS.*</table>
          </desc>
        </item>
      </group>
    </exec>
</drs>

2.8 配置DMDRS服务脚本

cp ./service_template/TemplateService ./DrsService
vi DrsService
INSTALL_HOME=<安装目录>
PROG_DIR=<执行程序目录>
CONF_PATH=<配置文件路径>
EXEC_PROG_NAME=<可执行程序名>
SERVICE_TYPE_NAME=<服务类型名>

2.9 启动服务

[dmdba@dbtest1 bin]$ DrsService_Slave start
Starting DrsService_Slave: [ OK ]
[dmdba@dmtest2 bin]$ DrsService_Slave start
Starting DrsService_Slave: [ OK ]
[dmdba@dbtest3 bin]$ DrsService_Slave start
Starting DrsService_Slave: [ OK ]

2.10 添加同步表
2.10.1 小数量
添加同步表后,源DMDRS会将源数据库同步表的全量数据和增量数据同时发送到目标DMDRS,目标DMDRS会自动将表的全量数据装载到目标数据库,装载过程中增量数据会全部缓存到目标DMDRS,直至全量数据装载成功后才激活同步

##设置数据库当前最新的日志LSN作为日志解析的起始位置
alter cpt set lsn
##启动CPT
start cpt
##添加全量装载+增量同步
alter cpt_dm8 add table "sch.name='DMDRS' " DROP|CREATE|INSERT|GROUP|100000|INDEX|FAST

2.10.2 大数量

#拷贝备份文件到目的端
scp -r DB_FULL_2025_08_29_01_00_42 dmdba@192.168.xxx.xxx:/dbbak/dmbak
#目的端通过备份还原
./dmrman ctlstmt="RESTORE DATABASE '/dbdata/dmdata/DAMENG/dm.ini' FROM BACKUPSET  '/dbbak/dmbak/DB_FULL_2025_08_29_01_00_42'"
./dmrman ctlstmt="RECOVER DATABASE '/dbdata/dmdata/DAMENG/dm.ini' FROM BACKUPSET  '/dbbak/dmbak/DB_FULL_2025_08_29_01_00_42'"
./dmrman ctlstmt="RECOVER DATABASE '/dbdata/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC;
alter database normal;
alter database open;
#源端
##设置数据库当前最新的日志LSN作为日志解析的起始位置
alter cpt_dm8 set lsn from "/dbbak/dmbak/DB_FULL_2025_08_29_01_00_42"
##启动CPT
start cpt
#动态地添加增量同步表DMDRS模式,添加后自动进行增量数据的同步。
alter cpt_dm8 add dict "sch.name='DMDRS'"

2.11 查看同步情况

##源端
#查询检查点
show cpt_dm8 ckpt
#查询正在装载的表
show cpt_dm8 load table running
#查看整体装载状态
show cpt_dm8 load status
#查看模块装载错误的表的具体信息。
show cpt_dm8 load table error
#查看CPT模块各装载状态(除表外)对象的具体信息。
show cpt_dm8 load obj all
##目的端
#查看EXEC模块的检查点信息。
show exec_dm8 ckpt
#查看EXEC模块同步表的延迟信息
show exec_dm8 lag
#查看EXEC模块的非装载工作线程信息
show exec_dm8 thr
#查看EXEC模块中,装载表分组装载的具体信息。
show exec_dm8 load group xxxx.xxxx
#查看EXEC模块的整体延迟信息。
show exec_dm8 link lag
#查看分组信息
SHOW [<EXEC_NAME>] [<SITE_ID>] GROUP [<GROUPID>]

2.12 DRS主备切换

#查看主备统计信息
show cpt_dm8 cluster
#切换名称为cpt_standby_dm“的CPT模块为主节点。
switch cpt_standby_dm8 master

3 遇到问题
3.1日志同步乱码
在manager管理模块中添加
<lang>ch-utf8</lang>
ch:GB18030编码简体中文。默认值为ch
ch-utf8:UTF-8编码简体中文
en:英文
设置该参数后,通过tail 查看drs日志显示正常,通过vim ,more命令查看还是乱码,可以通过命令tail -10000 drs_20241025.log >> a.log输出到文本中查看日志信息。

3.2 FAST掩码问题
装载如果添加了FAST掩码,装载失败的表无法续传,如果源端有业务,装载加锁会失败,分组装载失败,无法通过continue load续传失败的分组,只能重装。
如果未使用FAST掩码,失败的数据是可以通过continue load命令来续传的。

3.3 EXEC OOM问题
如果出现EXEC端DRS服务因为OOM被杀,可以增加给EXEC端分配的内存,或减少相关的线程。
问题日志:
image.png服务程序运行时可以申请的最大内存参数:
<mem_size></mem_size>
默认值16,服务器内存允许并且需要同步线程较多时,可适当放大。
内存计算方式:
image.png

3.4 DMDRS 同步用户报错:权限不足
使用 DMDRS到 DM 装载数据时,DMDRS 同步用户已赋权 DBA 权限,但装载数据报权限不足。
同步用户可能权限缺少相关系统表权限,如 SYS.USER$ 表权限。
根据实际报错情况授予 DMDRS 同步用户缺少的权限。

4 DMDRS、DMHS、OGG对比
DMHS、DMDRS、GoldenGate均为数据库实时同步工具,但在功能定位、技术架构、应用场景及生态支持上存在显著差异。
4.1. 功能定位与核心特性
DMHS(达梦数据实时同步软件)
定位:达梦公司推出的高性能、高可靠、高可扩展的异构数据库实时同步系统。
核心特性:
秒级实时同步:基于日志的结构化数据复制技术,对源数据库性能影响极小。
灵活拓扑:支持一对一、一对多、多对一、双向、级联等多种同步形式,满足复杂场景需求。
备机可读写:构建“双活”主备系统,备机可独立承担读写负载,提升业务连续性。
数据定制:支持筛选、过滤、转换、压缩和加密,降低网络传输代价。
跨平台支持:适配多种CPU架构(如x86、龙芯、飞腾)和操作系统(如Windows、Linux、麒麟)。

DMDRS(达梦数据复制软件)
定位:达梦公司推出的另一款数据复制工具,强调高性能与高可靠性。
核心特性:
非侵入式日志捕捉:通过解析数据库日志实现增量同步,减少对源库的干扰。
事务级一致性:严格保障源与目标库的事务顺序和完整性。
多场景支持:适用于应急系统、容灾备份、负载均衡、数据移植等场景。
部署形态多样:支持单链路、文件转换、跨网闸、主备、级联等多种模式。
数据定制:支持筛选、过滤、转换、压缩和加密,降低网络传输代价。
跨平台支持:适配多种CPU架构(如x86、龙芯、飞腾)和操作系统(如Windows、Linux、麒麟)。

GoldenGate
定位:Oracle公司推出的企业级实时数据集成与复制工具,支持异构数据库同步。
核心特性:
低资源占用与实时复制:OGG通过实时读取数据库交易日志(如Oracle的Redo日志、MySQL的二进制日志),以极低的资源占用实现大交易量数据的实时复制,能够实现大量交易数据的实时捕捉、变换和投递,确保源端数据库与目标端数据库之间的数据同步,数据延迟可达到亚秒级
事务级一致性保障:OGG以交易为单位进行数据复制,严格保证源与目标数据库的事务顺序和完整性。通过事务重组和操作合并技术,确保复杂事务在同步过程中不丢失、不错乱,满足金融等高一致性要求的场景。
OGG支持多种拓扑:一对一、一对多/多对一、多对多、双向复制、等多种同步形式。
自定义过滤规则:可基于表、行或列级筛选数据,减少无效传输。
灵活映射与变换:支持数据格式转换、字段计算等操作,适应异构数据库同步需求。
Checkpoint机制:记录数据读写位置,故障发生时可从断点恢复,确保数据不丢失。
跨平台支持:不仅支持Oracle数据库间的同步,还兼容多种异构环境,包括MySQL、SQL Server、PostgreSQL、DB2等,满足跨平台数据集成需求。
4.2. 应用场景与优势
DMHS
适用场景:
构建“双活”主备系统,提升业务连续性。
跨平台数据同步(如Oracle到达梦、MySQL到达梦)。
实时数据仓库与数据分析。
优势:
备机可读写,支持生产型业务与分析型业务隔离。
对源库性能影响小,适合高并发业务场景。
跨平台支持广泛,适配国产CPU和操作系统。

DMDRS
适用场景:
应急系统与容灾备份。
负载均衡与数据移植。
联机维护与订阅分发。
优势:
非侵入式日志捕捉,减少对源库干扰。
事务级一致性保障,适合金融等高要求场景。
部署形态多样,灵活适应不同需求。
动态装载数据表,不影响当前已有同步配置,减少数据延迟。

GoldenGate
适用场景:
数据库高可用性与容灾备份
跨平台数据迁移与整合
实时数据仓库与分析
多数据中心与云环境数据同步
读写分离与负载均衡
数据分发与订阅
数据库升级与版本兼容
OGG优势:
非侵入式日志捕捉,减少对源库干扰。
与Oracle生态深度集成,功能丰富。
支持流处理与复杂转换,满足高级分析需求。
高可用性和容错能力,确保服务连续性。
4.3 生态支持与局限性
DMHS
生态支持:与达梦数据库深度集成,支持多种异构数据库(如Oracle、MySQL、PostgreSQL)。
局限性:DMHS新增同步表需停止cpt模块,影响已有同步配置,导致目的端数据延迟较高。
DMDRS
生态支持:作为达梦公司内部工具,与达梦数据库兼容性最佳,支持多种异构数据库。
局限性:社区支持相对有限,依赖手册和经验总结。
GoldenGate
生态支持:与Oracle数据库及云服务深度集成,支持多种异构数据库和大数据平台(如Kafka、Hadoop)。
局限性:对非Oracle数据库的支持可能不如Oracle环境完善;成本较高,适合企业级用户。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服