本手册主要介绍源数据库为 Oracle RAC,目的端为DM V8实时主备集群,基于 DFM 图形化界面搭建 DMDRS 服务。实现 Oracle RAC 到达梦的实时数据同步,和达梦到 Oracle 数据回流。
达梦数据复制软件(简称 DMDRS)是一种用于同构数据库、异构数据库以及各种数据管理系统之间的数据复制软件。DMDRS 采用模块化的设计,通过灵活配置不同的功能模块,实现多功能的数据复制服务,以满足多种场景下的数据复制业务需求。
DMDRS 是支持异构环境的高性能、高可靠和高可扩展的数据库实时同步系统。通过秒级数据实时同步有效避免传统备份系统导致的无法完全满足企业对于信息系统不中断服务的问题;通过实时的数据同步,构建"双活"的主备系统,解决传统基于数据库自身的主备系统中备机只读而无法对外提供写服务的问题。该产品可广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发和多业务中心等业务领域。
📌 DMDRS 的基础实现原理图
为了方便用户更直观地搭建各种复杂数据同步链路,DMDFM 以数据源为中心,采用拖拽式的可视化数据链路设计器,只需配置简单的基本参数即可快速搭建数据同步链路。DMDFM 以工程为单位进行多个同步链路的集中管理、监控和运维,方便用户根据业务情况对同步链路进行分组管理。
| 序号 | 文档名称 | 说明 |
|---|---|---|
| 1 | 达梦数据实时同步管理员手册 | 产品手册 |
| 2 | 达梦数据实时同步参考手册 | 产品手册 |
| 3 | 达梦数据库管理员手册 | 数据库手册 |
本文档中的部署示例环境如下,其他环境可类似参考:
源端 — Oracle
| 项目 | 信息 |
|---|---|
| 数据库 | Oracle 11.2.0.4 RAC |
| 操作系统 | Kylin Linux Advanced Server release V10 (SP1) /(Tercel)-aarch64-Build20/20210518 |
| DMDRS | V4.3.20-Build(2023.09.26-141041trunc)_64_2309_sp2 |
| 服务器 IP | 1xx.xx.xx.xx |
| DMDRS 软件目录 | /data/dmdrs/bin |
目标端 — DM8
| 项目 | 信息 |
|---|---|
| 数据库 | DM8 |
| 操作系统 | Kylin Linux Advanced Server release V10 (SP1) |
| DMDRS | V4.3.20-Build(2023.09.26-141041trunc)_64_2309_sp2 |
| 服务器 IP | xxx.xx.xx.53 |
| DMDRS 软件目录 | /data/dmdrs/bin |
DFM 管理平台
| 项目 | 信息 |
|---|---|
| 操作系统 | Kylin Linux Advanced Server release V10 (SP1) |
| DFM 软件目录 | /data/dmdfm5 |
| 版本 | dmdfm_rev182024_FTarm_kylin4_64_20250220 |
| 服务器 IP | xx.xx.xx.54 |
准备 Oracle 客户端依赖包(详见原文档截图)。
arm 环境可下载以下 Oracle 依赖包:
https://download.dameng.com/eco/adapter/SH/community/instantclient-basic-linux.arm64-19.28.0.0.0dbru.zip
X86 环境可下载以下 Oracle 依赖包:
https://download.dameng.com/eco/adapter/SH/community/instantclient-basic-linux.x64-19.31.0.0.0dbru.zip
📌 Oracle 依赖包列表见原文档截图。
将以上依赖组件拷贝到 drs/bin 目录,或者配置环境变量:
export ORACLE_HOME=/path/to/oracle/client # 填写x86客户端依赖包解压后的目录
使用 SQLPlus 登录到源数据库:
$ sqlplus / as sysdba
查看数据库归档模式是否开启:
SQL> archive log list
若数据库已经开启归档模式,则跳过以下步骤。
-- 暂停数据库服务
SQL> shutdown immediate
-- 以 mount 方式启动 Oracle 数据库服务
SQL> startup mount
-- 开启数据库归档,并设置归档文件路径
SQL> alter database archivelog;
SQL> alter system set db_recovery_file_dest='';
SQL> alter system set log_archive_dest='/oradata/arch';
-- 重启数据库,使归档路径生效
SQL> shutdown immediate;
SQL> startup mount;
-- 将数据库切换到正常的工作状态
SQL> alter database open;
查看数据库最小附加日志及全列日志是否开启:
SQL> select supplemental_log_data_min from v$database;
SQL> select supplemental_log_data_all from v$database;
若数据库已经开启最小附加日志及全列日志,则跳过以下步骤。
-- 开启数据库最小附加日志及全列日志
SQL> alter database add supplemental log data;
SQL> alter database add supplemental log data (ALL) columns;
为了保证源 DMDRS 能正常解析 DDL 日志操作,需关闭源数据库回收站功能,重启数据库生效(非必须):
SQL> alter system set recyclebin=off deferred;
在进行数据同步之前,需要对目的端 DM8 数据库进行相应设置以支持数据实时同步,如开启归档、启用附加日志等。
-- 创建业务表空间 USER_DATA
create tablespace USER_DATA datafile 'USER_DATA01.dbf' size 500 autoextend on next 256 maxsize 100000;
alter tablespace USER_DATA add datafile 'USER_DATA02.dbf' size 500 autoextend on next 256 maxsize 100000;
-- 创建业务用户 USER01
create user USER01 identified by "密码" default tablespace USER_DATA default index tablespace USER_DATA;
-- 授权
grant RESOURCE, PUBLIC, VTI, SOI to USER01;
create user "DMDRS" identified by XXXX;
grant dba, "RESOURCE", "PUBLIC", "VTI", "SOI", "SVI" to "DMDRS";
grant CREATE SESSION to "DMDRS";
[dmdba@localhost ~]$ ./dmdfm_rev182024_FTarm_kylin4_64_20250220.bin -i
Extract install files.........
Please select the installer's language (E/e:English C/c:Chinese)[E/e]:c
-----------欢迎使用达梦数据融合管理平台安装工具-----------
输入[exit]可退出安装。
-----------安装目录-----------
指定安装目录[/home/dmdba/dmdfm5]:/data/dmdfm5
-----------许可证文件-----------
1.免费试用达梦数据融合管理平台(必须在试用期范围内使用,反复安装无效,使用时间为3个月)
2.使用许可证文件
指定许可证文件(1,2)[1]:
免费试用许可证文件限制信息如下:
有效日期:2025-05-20
授权顾客名称:DEVELOP USER
项目名称:
许可证编号:dm66n367
版本类型:试用版
代理数:5
-----------配置-----------
达梦数据融合管理平台配置-管理平台端口[8080]:
注意:密码必须至少8个字符,并且满足以下条件中的任意两项:数字、大写字母、小写字母、特殊字符(如!@#$%^&*等)。
达梦数据融合管理平台配置-管理平台密码:(输入网页版登录的密码,admin的密码)
达梦数据融合管理平台配置-管理平台确认密码:
是否使用外置库(0:不使用 1:使用 )[0]:
-----------安装小结-----------
安装目录:[/data/dmdfm5]
达梦数据融合管理平台IP:[127.0.0.1]
达梦数据融合管理平台端口:[8080]
内置库信息:
数据库IP:[127.0.0.1]
数据库端口:[15236]
用户名:[SYSDBA]
密码:[******]
所需磁盘空间/可用磁盘空间:[1,316 MB/221,188 MB]
确认安装?[Y/y or N/n]:
输入错误,请重新输入!
确认安装?[Y/y or N/n]:y
-----------安装中-----------
default start ... default finished.
web start ... web finished.
doc start ... doc finished.
db start ... db finished.
安装成功
------------解压完成----------
-----------系统服务-----------
内置数据库服务设置
1.注册系统服务
2.不注册系统服务
启动方式(1,2)[2]:1
正在创建内置数据库服务....
达梦数据融合管理平台服务设置
1.注册系统服务
2.不注册系统服务
启动方式(1,2)[2]:1
正在创建达梦数据融合管理平台服务....
以下配置脚本需要以"root"用户的身份运行.
/data/dmdfm5/scripts/root/root_installer.sh
是否已执行shell脚本?(Y/y or N/n)[Y/y]:y
-----------安装总结-----------
达梦数据融合管理平台V5安装完成
地址:http://127.0.0.1:8080
用户名/密码:admin/******
更多安装信息,请查看安装日志文件:/data/dmdfm5/log/install.log
数据源是数据库在 DMDFM 平台中的抽象表示。数据同步需要读取源端主机数据库中的数据,并将其写入到目标端备机数据库中。所以需要将数据库的访问地址、访问用户等配置添加到 DMDFM 平台中。
http://xxx.xx.xx.54:8080,输入用户名 admin,密码 XXXX。📌填写好相关信息后,可点击 【识别节点】 获取 RAC 集群所有节点信息。
AGENT 的启动需要 JDK 1.8。代理服务日志文件位于代理安装目录 agent/log/agent.log,需关注以下检查点:
启动代理服务:
在代理服务的部署目录下使用代理服务脚本可以获取代理服务的运行状态以及启动、停止代理服务。代理服务脚本的名称是 DfmAgentService 加上代理的名称。以默认的代理服务脚本名称 DfmAgentService 举例:
# 获取代理的运行状态
./DfmAgentService status
# 若服务未运行可使用如下命令启动服务
./DfmAgentService start
export LD_LIBRARY_PATH=/home/dmdba/dmdbms/bin
安装 DMDRS 时,填写如下环境变量:
/home/dmdba/dmhs_test/bin:/usr/local/lib:$DM_HOME/lib:$LD_LIBRARY_PATH
📌 DMDRS 安装界面见原文档截图。
📌 链路配置界面见原文档截图。
源端(Oracle RAC)— 捕获模块(CPT)配置:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<drs>
<base>
<name>instance3</name>
<lang>ch</lang>
<mgr_port>5347</mgr_port>
<siteid>6</siteid>
</base>
<cpt>
<name>O_T_DM</name>
<ddl_mask/>
<login>
<dbtype>oracle</dbtype>
<server>1xx.xx.xx.x6:1521/xxxdb</server>
<user>xxxx</user>
<pwd>xxxx</pwd>
</login>
<ddl_mask>TABLE:CREATE:DROP:TRUNCATE:ALTER:INDEX:CHECK</ddl_mask>
<io_threads>4</io_threads>
<parse_thr>4</parse_thr>
<send>
<ip>1xx.xx.xx.53</ip>
<port>5347</port>
<target_name>instance4</target_name>
<map>
<item type="view">DxxK.*==DxxK.*</item>
<item type="procedure">DxxK.*==DxxK.*</item>
<item type="function">DxxK.*==DxxK.*</item>
<item type="trigger">DxxK.*==DxxK.*</item>
<item type="package">DxxK.*==DxxK.*</item>
<item type="synonym">DBANK.*==DxxK.*</item>
<item type="sequence">DBANK.*==DxxK.*</item>
<item type="">DxxK.*==DxK.*</item>
<item type="table">DBANK.*==DBANK.*</item>
</map>
</send>
<rac>
<rac_type>ASM</rac_type>
<nodes>2</nodes>
<login>
<server>1xx.xx.xx.x6:1xx1/+ASM</server>
<user>rdxxm</user>
<pwd>XXXXX</pwd>
</login>
</rac>
</cpt>
</drs>
目的端(DM8)— 执行模块(EXEC)配置:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<drs>
<base>
<name>instance4</name>
<lang>ch</lang>
<mgr_port>5347</mgr_port>
<siteid>7</siteid>
</base>
<exec>
<name>instance4</name>
<login>
<dbtype>dm8</dbtype>
<server>1xx.xx.xx.72</server>
<user>SYSDBA</user>
<pwd>XXXX</pwd>
<port>5236</port>
</login>
<group>
<item>
<id>0</id>
<exec_policy>1</exec_policy>
<merge_policy>2</merge_policy>
<level>1</level>
<max_thrs>4</max_thrs>
<desc/>
</item>
</group>
</exec>
</drs>
📌 回流链路配置界面见原文档截图。
目的端(Oracle)— 执行模块(EXEC)配置:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<drs>
<base>
<name>oracle</name>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<siteid>2</siteid>
</base>
<exec>
<name>oracle</name>
<login>
<dbtype>oracle</dbtype>
<server>1xx.x2.xx.xx:1521/dxxadg</server>
<user>SYSTEM</user>
<pwd>xxxxx</pwd>
</login>
<group>
<item>
<id>0</id>
<exec_policy>1</exec_policy>
<merge_policy>2</merge_policy>
<error_policy>1</error_policy>
<level>0</level>
<max_thrs>4</max_thrs>
<seq_sync_mode>1</seq_sync_mode>
<desc/>
</item>
</group>
</exec>
</drs>
源端(DM8)— 捕获模块(CPT)配置:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<drs>
<base>
<name>dm</<lang>ch</lang>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
</base>
<cpt>
<name>hl_eqz</name>
<ddl_mask/>
<login>
<dbtype>dm8</dbtype>
<server>1xx.xx.x.xx</server>
<user>SYSDBA</user>
<pwd>XXXXXX</pwd>
<port>5236</port>
</login>
<send>
<ip>100.xx.xx.xx</ip>
<port>5345</port>
<target_name>oracle</target_name>
<map>
<item type="view">DxxK.*==DxxK.*</item>
<item type="procedure">DxxK.*==DxxK.*</item>
<item type="function">DxxK.*==DxxK.*</item>
<item type="trigger">DxxK.*==DxxK.*</item>
<item type="package">DxxK.*==DxxK.*</item>
<item type="synonym">DxxK.*==DxxK.*</item>
<item type="sequence">DxxK.*==DxxK.*</item>
<item type="">DxxK.*==DxxK.*</item>
<item type="table">DxxK.*==DxxK.*</item>
</map>
</send>
</cpt>
</drs>
环境变量需要配置源端和目的端的。
📌 DVS 对比配置界面见原文档截图。
在 DMDFM 安装目录 /data/dmdfm5/web 下使用如下命令查看 DMDFM 服务的运行状态:
su - dmdba
cd /data/dmdfm5/web
./DfmWebService status
若服务未运行可使用如下命令启动服务:
./DfmWebService start
使用浏览器访问指定主机和端口验证服务是否启动成功。
⚠️ 如果 Web 服务启动失败,需分析 Web 服务的日志,在 DMDFM 安装目录
web/log目录下查看dmdfm.log日志,看是否存在报错日志,然后根据报错日志进一步分析。
su - dmdba
cd /data/dmdfm5/web
./DfmWebService stop
内置库服务,默认数据库服务脚本在 DMDFM 安装目录 db/bin 下。
su - dmdba
cd /data/dmdfm5/db/bin
./DmServiceDFDB status
# 若服务未运行可使用如下命令启动服务
./DmServiceDFDB start
su - dmdba
cd /data/dmdfm5/db/bin
./DmServiceDFDB stop
说明: 本 Markdown 文档由原
.doc文件提取整理而成。原文档中包含大量操作截图与配置界面图,因文本提取限制无法在本文档中展示,相关位置已用 📌 标记。如需查看完整图文内容,请参阅原始 Word 文档。
文章
阅读量
获赞
