ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

DM8 达梦数据库|DMDRS 双向同步搭建全流程(Oracle ↔ DM8)

DM8 达梦数据库|DMDRS 双向同步搭建全流程(Oracle ↔ DM8) 摘要达梦数据复制软件 DMDRSData Replication Software原达梦数据同步软件 DMHS是达梦官方提供的异构数据复制软件原生支持 Oracle 与 DM 之间的双向实时同步通过日志捕获、消息传输与数据入库机制实现异构数据库间的全量装载与增量实时同步。本文基于本周实操完整整理 Oracle单机 / RAC与 DM8单机 / DSC/DPC/MPP之间搭建双向同步链路的全流程覆盖方案选型、总体架构、数据库端准备、ODBC 配置、软件安装与 License、双向链路配置、全量装载、增量同步、DDL 同步、关键参数与风险应对可直接作为项目实施参考基线。1 学习项目概述1.1 学习目标本周围绕达梦数据库 DRS 工具的搭建与实操展开学习实操在达梦 DM8 与 Oracle 数据库之间搭建数据复制服务实现两端数据的双向实时同步与互通满足双业务中心、实时备份、容灾切换等业务需求。项目实施完成后应达到以下目标目标要求互通性达梦库与 Oracle 库建立双向同步链路任一端数据库的增量操作DML/DDL均可实时同步至对端两端同步表数据保持一致实时性增量数据以秒级延迟同步至对端建议目标同步延迟不大于 5 秒峰值期间不大于 30 秒容灾能力任一端数据库或业务发生故障时可由对端数据库接管业务具备切换与回切能力可运维性具备数据一致性校验、运行监控、告警、日志与巡检机制容灾指标 RPO数据丢失量与 RTO恢复时间建议按业务重要性核定一般可设定为 RPO≤5 分钟、RTO≤30 分钟具体以业务方确认值为准。1.2 学习范围与边界实施范围包括同步对象用户 / 模式 / 表 / 视图 / 索引等调研与确认、数据库端参数与权限准备、DMDRS 软件安装部署、双向同步链路配置、全量数据初始化、增量同步启动、数据一致性校验、DDL 同步配置、监控与高可用部署、容灾切换演练及上线验收。实施边界说明不包含应用系统改造、网络专线施工、数据库硬件扩容等非同步范畴工作同步对象范围以业务确认的模式与表清单为准未列入清单的对象默认不同步。1.3 术语与缩略语术语说明DM / DM8达梦数据库管理系统 V8单机、DSC、DPC、MPP 形态均可OracleOracle 10g 及以上版本单机、RAC 形态DRS / DMDRS达梦数据复制软件Data Replication Software原达梦数据同步软件 DMHSCPT 模块源端日志捕获分析模块全量装载、日志捕获、日志解析、消息投递EXEC 模块目标端执行模块接收同步消息并应用到目标数据库MGR 模块管理模块调度各功能模块、执行控制台命令、License 校验NET 模块网络传输模块源端发送、目标端接收同步数据RPO / RTO容灾指标最大可容忍数据丢失量 / 最大可容忍恢复时间DSC / RAC达梦共享存储集群 / Oracle 实时应用集群LSN日志序列号Log Sequence Number同步断点位置标记2 方案选型与总体架构2.1 方案选型说明达梦数据库官方提供的异构数据复制软件 DMDRS原生支持 Oracle 与 DM 之间的双向实时同步支持一对一、双向、一对多、多对一、级联、环形及主备等多种同步拓扑是达梦与 Oracle 之间搭建数据复制与容灾的推荐方案。主流备选方案对比情况如下方案实时性双向互通异构支持Oracle↔DM适用性结论DMDRS本方案秒级日志级增量支持RING 拓扑原生支持官方维护推荐作为本方案主选Oracle GoldenGate秒级支持OGG 不支持达梦为源 / 目标需第三方适配不适用华为云 DRS秒级视链路而定云上服务需上云 / 专线本地互通受限不适用本地场景DataX / Canal 等分钟级 / 批量需自研双链路可开发但实时性与事务一致性弱不满足容灾实时要求DM DataWatch数据守护秒级仅同构仅 DM↔DM 主备 / 读写分离不适用异构互通结论选用达梦 DMDRS 双向同步方案。该方案由达梦官方提供支持 Oracle单机 / RAC与 DM8单机 / DSC/DPC/MPP互为源端与目标端具备数据迁移、数据同步、数据分发与数据转换能力可满足 保持互通 的双向同步与容灾需求。2.2 总体架构设计总体架构采用双向同步RING 拓扑方式在 Oracle 端与 DM8 端各部署一套 双向 DMDRS 服务同一服务内同时包含 CPT 与 EXEC 模块辅以 MGR、NET 模块。数据流说明Oracle 端 DMDRS 的 CPT 模块解析 Oracle 归档 / 联机日志捕获增量变化并经 NET 模块发送至 DM8 端 DMDRS由 EXEC 模块应用写入 DM8反向同理DM8 端 CPT 模块解析达梦逻辑日志将增量变化同步回写 Oracle。全量数据初始化通过 CPT 的数据装载能力COPY/LOAD 命令完成。双向同步关键设计约束两端 DMDRS 服务的站点号siteid必须全局唯一不允许重复目标 DMDRS 服务参数 topology 需配置为 RING 模式双向同步无法保证事务在两端执行的先后顺序当同一数据发生冲突时以后面执行的操作为准后写覆盖业务设计上应尽量避免两端同时对同一行数据进行修改DDL 操作双向同步支持 DM 与 Oracle 系列数据库不能过滤 DRS_$ 开头的辅助表同步表数据在单向场景下目标端不可直接修改双向场景下需遵循业务冲突规避策略。集群 / 高可用场景当 Oracle 为 RAC 或 DM8 为 DSC 集群时DMDRS 服务可部署为主备形态DMDRS 主节点服务承担同步备节点服务实时同步主节点环境主节点所在数据库节点故障后备节点自动接替避免同步中断。2.3 组件与端口规划项目规划值说明管理端口 mgr_port5345两端 DMDRS 管理模块监听端口控制台连接使用数据端口 data_port5346两端 DMDRS 数据接收端口同步消息传输使用站点号 siteidOracle 端 1DM8 端 2全局唯一禁止重复拓扑 topologyRING双向同步必需目标 DMDRS 配置级联级别 level0两节点双向同步场景配置为 0WEB 管理平台8080完整版安装提供用于可视化配置与监控/manager、/veri内置数据库端口15236默认DMDRS Manager 后台元数据库内置 DM 实例防火墙策略放通 5345/5346/8080 及数据库端口仅对同步对端节点开放建议绑定源 IP3 前置条件与环境要求3.1 软硬件平台DMDRS 支持各类主流软硬件平台处理器支持龙芯、飞腾、鲲鹏、海光、兆芯、申威、宏芯、X86 和 ARM 等操作系统支持麒麟、UOS、凝思、Red Hat、Ubuntu、Solaris、AIX 和 Windows 等。本项目以 Linux 环境为例部署角色规划如下角色数据库DMDRS 安装用户说明A 端生产 / 业务中心一Oracle 10g 及以上单机或 RACoracle 用户使用 oracle 用户安装以加载 Oracle 环境变量与动态库B 端生产 / 业务中心二DM8单机或 DSCdmdba 用户达梦实例属主用户3.2 版本兼容性DMDRS 支持的数据库源 / 目标包括DM6 单机、DM7、DM8单机、DSC、DPC、MPP、Oracle 10g 及以上版本单机、RAC、Microsoft SQL Server 2008 R2/2016/2019、DB2 9.7/10.5/11.5、MySQL/MariaDB 5.6 及以上、PostgreSQL 9.6/10/11/12/13、Kingbase V6/V8/V9Oracle 模式等目标端另支持 Kafka、GBase 8s、Doris 等。本项目场景Oracle↔DM8完全在支持范围内。重点提醒实施前应向达梦确认与现场数据库小版本匹配的 DMDRS 安装包版本如 Oracle 侧需与 OCI 驱动、数据库补丁版本兼容并获取对应的安装介质与正式 LicenseKey 文件。3.3 网络要求两端服务器网络互通防火墙放通 DMDRS 管理端口5345、数据端口5346、WEB 管理端口8080以及两端数据库端口带宽按增量峰值评估增量日志峰值速率 × 压缩后传输系数建议带宽预留不低于业务增量峰值 2 倍以上并考虑全量装载阶段突发流量建议两端网络延迟 RTT 小于 50ms如跨城域网部署需评估同步延迟与断点续传能力配置主机名 / IP 解析与时间同步NTP避免时间偏差影响日志定位。3.4 License 与授权向达梦申请 DMDRS 正式授权 Keydmhs.key放入安装目录 bin 目录下免费试用版无 Key功能受限生产环境必须使用正式授权授权需覆盖两端节点数量、源库 / 目标库类型Oracle 与 DM8 双向以及同步链路数量申请前与达梦商务确认授权范围。4 详细实施步骤阶段 1・环境准备主机资源确认CPU / 内存 / 磁盘建议为 DMDRS 预留独立磁盘目录存放日志与归档创建安装用户与目录安装操作系统依赖包unixODBC、libaio、glibc 等配置 NTP 时间同步、主机名解析核对字符集环境变量Oracle 端 export NLS_LANG 与数据库实际字符集一致。阶段 2・数据库端准备2.1 Oracle 端源 / 目标双向均需1开启归档模式以 mount 方式启动数据库执行 ALTER DATABASE ARCHIVELOG设置 log_archive_dest 归档路径若使用本地路径存放归档需将 db_recovery_file_dest 置空打开数据库后用 archive log list 确认2开启附加日志补充日志SQL ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; SQL ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;并查询 v$database 确认 SUPPLEMENTAL_LOG_DATA_MIN 等标志3关闭回收站机制ALTER SYSTEM SET RECYCLEBINOFF DEFERRED;需重启生效4字符集一致性查询 userenv (language)将 NLS_LANG 环境变量设置为与查询结果一致5创建同步用户并授权SQL CREATE USER DMHS IDENTIFIED BY DMHS口令 DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; SQL GRANT CONNECT TO DMHS; SQL GRANT CREATE ANY TABLE TO DMHS; SQL GRANT SELECT ANY TABLE TO DMHS; SQL GRANT SELECT ANY DICTIONARY TO DMHS; SQL GRANT CREATE SESSION TO DMHS; SQL GRANT LOCK ANY TABLE TO DMHS; SQL GRANT EXECUTE ON DBMS_FLASHBACK TO DMHS; SQL GRANT UNLIMITED TABLESPACE TO DMHS;6RAC 场景DMDRS 需部署在 RAC 两个节点上避免单节点故障导致同步中断若使用 ASM 存储需在 tnsnames.ora 中配置 ASM 监听DMDRS 节点必须能连接 ASM 实例。2.2 DM8 端源 / 目标双向均需1开启归档查询 select arch_mode from v$database;若未开启则执行SQL ALTER DATABASE MOUNT; SQL ALTER DATABASE ADD ARCHIVELOG DEST/dm/data/dmarch/DMHS,TYPELOCAL,SPACE_LIMIT0; SQL ALTER DATABASE ARCHIVELOG; SQL ALTER DATABASE OPEN;或在 dm.ini 中设置 ARCH_INI1 并配置 dmarch.ini归档类型 LOCAL、归档目录、文件大小与空间上限重启数据库生效2开启逻辑日志执行 SP_SET_PARA_VALUE (2,RLOG_APPEND_LOGIC,1)重启数据库生效该参数是达梦日志挖掘 / 同步的基础3将 dm.ini 中 FAST_COMMIT 参数设置为 0防止逻辑日志不全影响同步4创建同步用户并授权SQL CREATE USER DMHS IDENTIFIED BY DMHS口令 DEFAULT TABLESPACE MAIN TEMPORARY TABLESPACE TEMP; SQL GRANT RESOURCE TO DMHS; SQL GRANT SELECT ANY TABLE TO DMHS; SQL GRANT DBA TO DMHS; SQL GRANT UNLIMITED TABLESPACE TO DMHS;5DSC / 集群场景参照 DMDRS 主备部署方式在集群各节点规划 DMDRS 主备服务。阶段 3・依赖环境与 ODBC 配置1安装 unixODBC达梦官方推荐 2.3.2 版本编译参数参考./configure --enable-driversno --with-iconv-char-encGB18030 --enable-guino --enable-iconvyes64 位系统编译前需设置 CFLAGS 与 OBJECT_MODE也可使用系统软件源 yum install unixODBC2配置 /etc/odbc.ini 与 /etc/odbcinst.iniOracle 端注册 Oracle ODBC 驱动指向 libsqora.soDM8 端注册 DM8 ODBC 驱动指向 libdodbc.so并分别配置 DSN3使用 isql 验证连通isql -v 确保两端 DSN 均可连接数据库4若环境缺少 libodbc.so.1创建软链接ln -s /usr/local/lib/libodbc.so.2 /usr/local/lib/libodbc.so.15Oracle 端设置共享库路径将 $ORACLE_HOME/lib 加入 LD_LIBRARY_PATH服务脚本 NEED_LIB_PATH确保 DMDRS 能加载 libclntsh.so。阶段 4・DMDRS 软件安装与 License1获取 DMDRS 安装包Linux 版 .binOracle 端使用 oracle 用户安装便于加载 Oracle 环境变量DM8 端使用 dmdba 用户安装2安装时选择 完整版 (web 客户端)配置依赖库路径如 /opt/dmdbms/bin:\(ORACLE_HOME/network/lib:\)ORACLE_HOME/rdbms/lib、Oracle 字符集按源库 NLS_LANG 选择如 AMERICAN_AMERICA.AL32UTF8 或 ZHS16GBK 等、ORACLE_BASE/ORACLE_HOME3安装完成后以 root 执行配置脚本root_installer.sh初始化内置数据库DMDRS Manager 后台库并注册服务DmhsService、远程控制服务、web 服务等4部署 License将正式授权文件命名为 dmhs.key 放入安装目录 bin 目录下5依赖检查ldd libcpt_ora.soRAC 场景为 libcpt_rac.so与 ldd libdmhs_exec.so确认 libclntsh.so、libodbc.so 等依赖完整6服务化按 service_template 修改 DmhsService 脚本放入 /etc/init.dsystemctl enable 设置开机自启WEB 管理平台通过 http://主机 IP:8080/manager 访问默认账号 admin/888888数据校验平台 /veriadmin/admin。阶段 5・双向同步链路配置1编写两端 dmhs.hs 配置文件位于安装目录 bin 下XML 格式编码 GB2312也可使用配置助手 dmhs_hsca 或 WEB 管理平台生成2两端公共参数base 段配置 lang、mgr_port5345、ckpt_interval检查点间隔、siteid两端唯一、version2.03Oracle 端 dmhs.hscpt 段配置源库为 Oracledb_type 按版本如 ORACLE11g/ORACLE12C/ORACLE19C、OCI 服务名、同步用户口令、arch 归档清理参数、send 段指向 DM8 端 IP 与端口、filter 白名单 / 黑名单、map 表映射exec 段配置目标库为 DM8recv data_port5346、db_typedm8、目标库连接信息、执行线程与事务缓存参数4DM8 端 dmhs.hscpt 段配置源库为 dm8db_server 为达梦 IPdb_user/db_pwd/db_port5236ddl_mask 按需send 段指向 Oracle 端 IP 与端口exec 段配置目标库为 Oracledb_type 按 Oracle 版本OCI 连接5双向场景两端 exec 段配置 level0两节点并确保 topologyRING、站点号唯一6过滤与映射filter 中 enable 为白名单、disable 为黑名单同步集合 白名单 - 黑名单map 定义源端模式到目标端模式映射需要同步 DDL 时配置 ddl_mask如 TABLE:VIEW:INDEX:OP并在两端执行 DDL 同步支撑脚本达梦侧为安装目录 scripts/ddl_sql_dm8.sqlOracle 侧执行对应 DDL 脚本7调优参数按数据量评估exec_thr入库线程、exec_sqlSQL 缓存大小、exec_trx事务缓存个数、exec_rows批量绑定行数、parse_thr日志分析线程、net_pack_size、vpool/vpools 等。阶段 6・数据初始化全量装载1确定一致性基准建议在业务低峰期执行装载前记录两端数据库当前位置LSN/SCN保证全量与增量衔接无缝隙2启动顺序先启动目标端 DMDRS 服务并 start exec再启动源端服务3控制台命令dmhs_consoleconnect 127.0.0.1:5345 连接本端服务4双向场景全量装载策略避免两端重复装载导致冲突# A 端Oracle 端装载全量结构 数据 字典 断点 clear exec lsn; COPY 0 sch.name业务模式 CREATE|INSERT|INDEX|DICT|REG|LSN # B 端DM8 端仅装载字典与断点避免双向重复写入 clear exec lsn; COPY 0 sch.name业务模式 DICT|REG|LSN5装载支持断点续传装载中断后可继续大表建议分批装载大字段LOB较多的表需调整批量行数避免装载工具内存溢出6核对装载完成后两端数据量一致行数、校验和。阶段 7・增量同步启动与数据校验1装载完成后在源端控制台执行 start cpt 开启实时增量同步必须先完成字典装载 / COPY 后才能启动2在源端 Oracle 与 DM8 分别进行增删改测试验证双向增量均能实时同步至对端3数据一致性校验使用 DMDRS VERI 对比工具WEB 端 /veri或生成 job.xml 配置对比任务对同步表进行全量 / 抽样比对也可在 exec 段开启影响行数检查affect_row1辅助判断一致性会略微影响性能按需开启4监控同步延迟通过控制台 show 命令与 WEB 管理平台观察 CPT 分析位置与 EXEC 应用位置计算延迟5确认错误事务处理策略exec_policy一致性优先用 0出错丢弃整个事务、容忍不一致用 2、严格用 1出错停止。阶段 8・DDL 同步与高级配置1按业务需要配置 ddl_mask如 TABLE:VIEW:INDEX:OP 等掩码组合并同步执行两端 DDL 支撑脚本2验证 DDL 双向同步在两端分别执行建表、加列、改列等 DDL确认对端结构同步生效3DDL 出错策略配置 ddl_continueDDL 出错时是否允许继续同步4大字段与大事务调优确认 enable_lob_buf大字段缓存、exec_sql/exec_trx/exec_rows 满足峰值事务量避免事务缓存溢出导致同步停止5字符集 / 大小写细节确认 case_sensitive对象名大小写敏感、toggle_case、length_in_char 等参数与两端库实际设置一致避免对象名或字段长度换算导致同步失败。5 关键参数配置参考以下参数为 DMDRS 常用配置项实际取值需结合数据量、并发与硬件资源调整并记录为配置基线。参数所在段说明参考取值mgr_portbase管理端口5345ckpt_intervalbase检查点写入间隔秒45~60siteidbase站点号全局唯一两端不同如 1/2versionbase配置文件版本2.0log_size_limitbaseDMDRS 日志总大小上限GB5~20db_typecpt/exec源 / 目标数据库类型ORACLE11g/12C/19C、dm8 等ddl_maskcptDDL 同步掩码TABLE:VIEW:INDEX:OP按需clear_intervalcpt/arch归档清理检查间隔秒600clear_flagcpt/arch归档清理选项0send.ip / mgr_port / data_portcpt/send对端服务地址与端口对端 IP、5345、5346filter.enable / disablecpt/send同步白名单 / 黑名单模式。表* 通配map.itemcpt/send源到目标模式映射源模式. 目标模式.recv.data_portexec数据接收端口5346exec_threxec入库执行线程数4~8按并发exec_sqlexecSQL 缓存大小MB512~1024exec_trxexec事务缓存个数5000exec_rowsexec批量绑定行数250~1000exec_policyexec事务出错策略0 丢弃 / 1 停止 / 2 容忍0一致性优先affect_rowexec影响行数检查0 关 / 1 开0调优开levelexec级联级别两节点为 00topologyexec同步拓扑双向为 RINGRINGparse_thrcpt日志分析线程数1~4case_sensitiveexec/send对象名大小写敏感与库实际设置一致1/0trigger / constraint / identitysend入库时是否禁用触发器 / 约束 / 自增1/1/1默认6 风险分析与应对措施序号风险项影响应对措施1双向同步数据冲突同一行数据两端同时修改后写覆盖导致业务口径偏差业务侧拆分写入口避免同时改同一行关键表可评估单向 主备模式建立冲突监控与对账机制2归档日志保留不足DMDRS 断档后无法补齐同步中断按增量峰值核算归档保留时长配置归档清理策略并监控积压大数据量场景可引入 DMDSS 流存储兜底3字符集 / 大小写不一致乱码、对象找不到、同步报错装载前核对 NLS_LANG 与达梦字符集配置 case_sensitive/toggle_case/length_in_char 并测试4大事务 / 大字段导致缓存溢出同步停止或延迟飙升调大 exec_sql/exec_trx开启 LOB 缓存分批提交业务侧控制单事务规模5DMDRS 进程或节点故障同步链路中断服务化 systemd 守护集群场景部署 DMDRS 主备告警即时通知6全量装载影响源库性能业务高峰卡顿低峰期执行大表分批评估装载对源库 I/O/CPU 影响必要时限速7License 授权不足功能受限或无法启动实施前与达梦确认授权范围节点数、链路数、数据库类型8DDL 同步失败两端结构不一致配置 ddl_continue 策略DDL 变更走审批流程并事后校验定期结构比对7 总结与高频踩坑汇总本次学习围绕达梦 DM8 与 Oracle 数据库间双向数据复制服务DMDRS搭建展开覆盖方案选型、环境与数据库端准备、ODBC 配置、软件安装与 License、双向同步链路配置、数据初始化、增量同步与校验、DDL 同步、监控告警与容灾演练、验收上线等环节并通过实操验证关键步骤。主要收获与踩坑点如下理解 DMDRS 模块组成与同步机制CPT 负责源端日志捕获解析EXEC 负责目标端入库MGR/NET 负责管理与网络传输全量装载与增量同步通过 COPY/LOAD 命令和 start cpt 相衔接。双向同步RING 拓扑关键约束两端 siteid 全局唯一、目标端 topology 配置为 RING、两节点 level0冲突遵循 后写覆盖不能过滤 DRS_$ 辅助表。数据库端准备要点Oracle 端开启归档与补充日志、关闭回收站并授予同步用户相应权限DM8 端开启归档与逻辑日志RLOG_APPEND_LOGIC1、设置 FAST_COMMIT0 并授予同步用户权限。逻辑日志是达梦日志挖掘 / 同步的基础漏配会导致无法捕获增量。ODBC 与依赖环境安装 unixODBC、双端注册驱动并配置 DSN、用 isql 验证连通注意 NLS_LANG 与 LD_LIBRARY_PATH 设置缺少 libodbc.so.1 时创建软链接。安装部署与平台使用按数据库类型选择字符集与依赖库路径、授权文件 dmhs.key 放入 bin 目录、通过 WEB 管理平台/manager、/veri配置同步工程与数据校验。双向全量装载策略A 端装载全量结构、数据、字典与断点B 端仅装载字典与断点以避免双向重复写入装载完成后再启动增量同步注意断点续传与分批装载。错误事务处理策略exec_policy 一致性优先用 0出错丢弃整个事务、容忍不一致用 2、严格用 1出错停止按业务要求选择。运维指南 | 达梦技术文档
返回列表