单提交机 DM8 两节点实时主备部署与性能验证
本文档用于在一台提交机 VM 上复刻部署规范里的 2 节点 Data Watch 实时主备集群。核心做法是同一台机器上放两个实例目录实例名不同所有服务端口错开用本机 IP 模拟两台机器。1. 架构与端口角色实例名实例目录归档目录实例端口MAL 端口守护监听端口实例监听守护端口主库DW1_01/dmdata/DW1_01/DAMENG/dmarch/DW1_0115236533654365536备库DW1_02/dmdata/DW1_02/DAMENG/dmarch/DW1_0215237533754375537统一参数安装目录/dmdbms守护组GDW1OGUID45331账号密码SYSDBA/Dameng1234HOST_IP提交机本机 IP。只在本机验证时可用127.0.0.1但建议使用 VM 的实际业务 IP。2. 主备集群讲透DM Data Watch 主备集群由数据库实例、实时归档、MAL 通信、守护进程dmwatcher和监视器dmmonitor组成。主库负责对外写入。备库处于STANDBY正常提供只读能力。主库产生 redo 后通过 MAL 链路把日志发给备库。守护进程负责监控本地实例和远端守护进程监视器负责展示状态、执行switchover和takeover。实时主备的关键点是主库在 redo 写入本地联机日志前先把 RLOG_PKG 发给备库备库收到后立即响应不等待重演完成。主库收到响应后继续写本地联机日志并响应业务。因此它的 RPO 接近 0但备库查询仍可能有极短应用延迟。RTO 取决于监视器模式、故障检测时间和人工接管速度。本次采用DW_MODEMANUAL和MON_DW_CONFIRM0原因是提交机只有一台没有独立仲裁机手动模式更适合验收和练习避免单机模拟时自动接管误判。3. 归档类型差异类型配置位置发送时机高可用行为RPO/RTO 逻辑本次用途实时归档REALTIMEdmarch.ini主库写联机 redo 前发送主备核心同步机制支持切换接管RPO 接近 0RTO 看守护和监视器接管主线同步归档SYNCdmarch.ini主库归档日志刷盘后由归档线程发送不作为本次 2 节点实时主备主线RPO 通常较低但与归档刷盘/发送相关RTO 不等同主备接管补充理解异步归档ASYNCdmarch.inidmtimer.ini定时器触发后扫描本地归档发送更适合异地备或级联备不能替代本次主线 HARPO 取决于定时周期和积压RTO 依赖额外接管策略演示理解性能目标优先选实时主备。读写分离在读多写少时可能更高但需要接口层配置且单 VM 上两个实例争抢 CPU/IO结果不一定比单实例稳定。4. 初始化与配置步骤以下命令以dmdba用户执行注册服务命令以root执行。4.1 准备目录mkdir-p/dmdata/DW1_01 /dmdata/DW1_02 /dmarch/DW1_01 /dmarch/DW1_02mkdir-p/dmdata/malpath /dmdata/backup /dmdbms/log4.2 初始化主库/dmdbms/bin/dminitPATH/dmdata/DW1_01INSTANCE_NAMEDW1_01PORT_NUM15236PAGE_SIZE32EXTENT_SIZE32LOG_SIZE2048CHARSET1CASE_SENSITIVEYSYSDBA_PWDDameng1234SYSAUDITOR_PWDDameng1234首次启动主库并修改基础参数/dmdbms/bin/dmserver /dmdata/DW1_01/DAMENG/dm.ini另开窗口执行-- disql SYSDBA/Dameng1234HOST_IP:15236ALTERDATABASEMOUNT;SP_SET_PARA_VALUE(2,PORT_NUM,15236);SP_SET_PARA_VALUE(2,DW_INACTIVE_INTERVAL,60);SP_SET_PARA_VALUE(2,ALTER_MODE_STATUS,0);SP_SET_PARA_VALUE(2,ENABLE_OFFLINE_TS,2);SP_SET_PARA_VALUE(2,MAL_INI,1);SP_SET_PARA_VALUE(2,ARCH_INI,1);SP_SET_PARA_VALUE(2,RLOG_SEND_APPLY_MON,64);ALTERDATABASEOPEN;关闭前台dmserver后备份主库/dmdbms/bin/dmrmanCTLSTMTBACKUP DATABASE /dmdata/DW1_01/DAMENG/dm.ini FULL BACKUPSET /dmdata/backup/DW1_FULL PARALLEL 44.3 配置主库文件把templates/dmmal.ini复制到/dmdata/DW1_01/DAMENG/dmmal.ini将其中HOST_IP替换为提交机 IP。把templates/dmarch_primary.ini复制为/dmdata/DW1_01/DAMENG/dmarch.ini。把templates/dmwatcher_01.ini复制为/dmdata/DW1_01/DAMENG/dmwatcher.ini。4.4 准备备库复制主库实例目录到备库目录cp-a/dmdata/DW1_01/DAMENG /dmdata/DW1_02/修改备库dm.iniINSTANCE_NAME DW1_02 PORT_NUM 15237把templates/dmmal.ini复制到/dmdata/DW1_02/DAMENG/dmmal.ini同样替换HOST_IP。把templates/dmarch_standby.ini复制为/dmdata/DW1_02/DAMENG/dmarch.ini。把templates/dmwatcher_02.ini复制为/dmdata/DW1_02/DAMENG/dmwatcher.ini。恢复备库数据/dmdbms/bin/dmrmanCTLSTMTRESTORE DATABASE /dmdata/DW1_02/DAMENG/dm.ini FROM BACKUPSET /dmdata/backup/DW1_FULL/dmdbms/bin/dmrmanCTLSTMTRECOVER DATABASE /dmdata/DW1_02/DAMENG/dm.ini FROM BACKUPSET /dmdata/backup/DW1_FULL/dmdbms/bin/dmrmanCTLSTMTRECOVER DATABASE /dmdata/DW1_02/DAMENG/dm.ini UPDATE DB_MAGIC4.5 注册服务服务名必须区分两个实例/dmdbms/script/root/dm_service_installer.sh-tdmserver-pDW101-dm_ini/dmdata/DW1_01/DAMENG/dm.ini-mmount/dmdbms/script/root/dm_service_installer.sh-tdmserver-pDW102-dm_ini/dmdata/DW1_02/DAMENG/dm.ini-mmount/dmdbms/script/root/dm_service_installer.sh-tdmwatcher-pWatcher101-watcher_ini/dmdata/DW1_01/DAMENG/dmwatcher.ini /dmdbms/script/root/dm_service_installer.sh-tdmwatcher-pWatcher102-watcher_ini/dmdata/DW1_02/DAMENG/dmwatcher.ini如需注册监视器/dmdbms/script/root/dm_service_installer.sh-tdmmonitor-pMonitorDW1-monitor_ini/dmdbms/bin/dmmonitor.ini5. 启动与角色设置启动两个实例为 mount/dmdbms/bin/DmServiceDW101 start /dmdbms/bin/DmServiceDW102 start设置主库-- disql SYSDBA/Dameng1234HOST_IP:15236SP_SET_PARA_VALUE(1,ALTER_MODE_STATUS,1);SP_SET_OGUID(45331);ALTERDATABASEPRIMARY;SP_SET_PARA_VALUE(1,ALTER_MODE_STATUS,0);设置备库-- disql SYSDBA/Dameng1234HOST_IP:15237SP_SET_PARA_VALUE(1,ALTER_MODE_STATUS,1);SP_SET_OGUID(45331);ALTERDATABASESTANDBY;SP_SET_PARA_VALUE(1,ALTER_MODE_STATUS,0);启动守护进程/dmdbms/bin/DmWatcherServiceWatcher101 start /dmdbms/bin/DmWatcherServiceWatcher102 start配置监视器cptemplates/dmmonitor.ini /dmdbms/bin/dmmonitor.inised-is/HOST_IP/提交机实际IP/g/dmdbms/bin/dmmonitor.ini /dmdbms/bin/dmmonitor /dmdbms/bin/dmmonitor.ini监视器里执行show global info list tip6. 验证场景6.1 主备同步主库执行CREATETABLEDW_TEST(IDINT,C1VARCHAR(50));INSERTINTODW_TESTVALUES(1,PRIMARY_TO_STANDBY);COMMIT;备库执行SELECT*FROMDW_TEST;SELECTARCH_DEST,ARCH_TYPE,ARCH_STATUSFROMV$ARCH_STATUS;预期备库能查到数据主库到DW1_02的实时归档状态为VALID。6.2 正常切换监视器执行choose switchover GDW1 switchover GDW1.DW1_02 show global info预期DW1_02变为PRIMARYDW1_01变为STANDBY。6.3 故障接管停止当前主库实例后在监视器执行choose takeover GDW1 takeover GDW1.DW1_02 show global info如果常规接管不满足条件先执行SELECTSF_DW_CHECK_TAKEOVER();仅在确认归档有效且原主库不会重新写入时才考虑takeover force。7. 性能提交方法7.1 单实例基线使用同样 VM、同样 DM 参数只启动单实例记录工具sysbench / JMeter / 自写 SQL 循环任选一种。并发数建议固定 8、16 或 32。持续时间建议至少 3 分钟。指标TPS、QPS、平均延迟、P95 延迟、CPU、IO wait。7.2 实时主备压测启动主备和守护只连接当前主库端口压测。记录同样指标并计算主备性能比例 实时主备 TPS / 单实例 TPS7.3 基本优化点MAL_COMPRESS_LEVEL0本机或内网无需压缩降低 CPU 开销。归档目录与数据目录分开至少逻辑路径分开便于观察 IO。压测时关闭过重 SQL 日志只保留必要监控。根据 VM 内存调大BUFFER但不要挤爆系统页缓存。保持两个实例端口、服务名、归档目录完全独立避免相互覆盖。8. 最终提交内容建议提交以下内容集群架构和端口表。实时、同步、异步归档差异表。show global info、list、tip的关键输出截图或文本。主备同步验证 SQL 结果。正常切换或故障接管验证结果。单实例与实时主备性能表以及主备/单机比例。

相关新闻

TMS320F28004x DMA模块架构解析与驱动开发实战

TMS320F28004x DMA模块架构解析与驱动开发实战

1. DMA模块核心架构与设计思路拆解 在嵌入式实时控制系统中,CPU的算力是宝贵的资源。当系统需要频繁地在内存与外设之间搬运数据时,例如ADC连续采样、SPI/UART通信数据收发,如果这些操作都由CPU通过软件循环来完成,会大量占用CPU时…

2026/7/21 6:50:56阅读更多 →
程序员排序工具箱:冒泡、插入、归并、快排、堆排工程选型指南

程序员排序工具箱:冒泡、插入、归并、快排、堆排工程选型指南

1. 这不是算法课,是程序员的“排序工具箱”实战指南你写过多少次array.sort()?点开文档看参数时,有没有一秒犹豫过:它底层到底用的什么?为什么有时候快得飞起,有时候又卡在那儿不动?我见过太多人…

2026/7/21 6:50:56阅读更多 →
风帆蓄电池备件供应:企业可靠渠道选择策略解析

风帆蓄电池备件供应:企业可靠渠道选择策略解析

“选对风帆蓄电池备件渠道,比买贵的更重要——多数企业踩过的假货、断供坑,其实可以通过3个核心标准规避”企业在保障风帆蓄电池系统稳定运行时,备件供应的可靠性直接影响业务连续性。但市场上渠道鱼龙混杂,假货、适配性差、售后缺…

2026/7/21 6:48:56阅读更多 →
Dockerless:不跑测试、不搭环境,也能给 Coding Agent 的修复打分?

Dockerless:不跑测试、不搭环境,也能给 Coding Agent 的修复打分?

做 Coding Agent 训练和研发的团队,大概都绕不开一个又脏又累的环节:搭环境。不管是给 SFT 筛选高质量轨迹,还是给 RL 提供奖励信号,都需要一个 verifier(验证器)来判断 Agent 生成的 patch 是否真正解决了…

2026/7/21 16:17:44阅读更多 →
MobaXterm中文版终极指南:一站式远程开发解决方案

MobaXterm中文版终极指南:一站式远程开发解决方案

MobaXterm中文版终极指南:一站式远程开发解决方案 【免费下载链接】Mobaxterm-Chinese Mobaxterm simplified Chinese version. Mobaxterm 的简体中文版. 项目地址: https://gitcode.com/gh_mirrors/mo/Mobaxterm-Chinese 还在为Windows系统下繁琐的远程开发…

2026/7/21 16:17:44阅读更多 →
病区排班管理智能体开发文档

病区排班管理智能体开发文档

病区排班管理智能体开发文档 第一章:系统概述与需求分析 1.1 项目背景 病区排班管理是医疗机构日常运营中的关键环节,合理的排班制度能够确保护理工作的连续性和质量。本系统针对18名护士的病区环境,开发一套智能排班管理智能体,实现自动化、智能化的排班生成与管理。 …

2026/7/21 16:17:44阅读更多 →
Java JDK版本选择策略与LTS长期支持解析

Java JDK版本选择策略与LTS长期支持解析

1. Java版本选择背后的长期支持策略Java开发工具包(JDK)的版本选择一直是开发者面临的难题。Oracle官方将JDK版本分为两类:常规版本(每6个月发布一次)和长期支持版本(LTS)。这种分类直接影响了开…

2026/7/21 16:17:44阅读更多 →
ASP.NET MVC角色管理实战:从入门到高级应用

ASP.NET MVC角色管理实战:从入门到高级应用

1. ASP.NET MVC用户角色管理入门在Web应用开发中,用户角色管理是构建安全系统的基石。ASP.NET MVC框架提供了完善的基于角色的授权机制,让开发者能够轻松实现不同级别的访问控制。想象一下,一个电商平台需要区分普通用户、客服人员和系统管理…

2026/7/21 16:17:44阅读更多 →
自动驾驶核心算法盘点|目标跟踪与轨迹预测篇

自动驾驶核心算法盘点|目标跟踪与轨迹预测篇

目录 01 目标跟踪篇:从 3D 极简基线到多模态融合 1. AB3DMOT:3D 空间中的极简基线 2. CenterPoint:基于中心点的检测与跟踪一体化 3. EagerMOT:相机与激光雷达的“急切”融合 02 轨迹预测篇:从单体推演到…

2026/7/21 16:15:44阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 0:51:49阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 0:51:49阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 0:51:49阅读更多 →
Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

📌教程适配:OpenClaw v2.7.9 | 兼容 Windows10/11、macOS 双系统 📖前言 当下各类本地 AI 工具层出不穷,多数产品仅能完成文字问答交互,很难直接操控电脑执行实际操作。OpenClaw,业内常称小龙虾 AI&#…

2026/7/21 0:01:46阅读更多 →
Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

聊《一次Codex项目复盘,问题最后出在流程而不是模型》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做&…

2026/7/21 0:01:46阅读更多 →
手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

大家好,还是我。前几期带大家做了心情日记本和可视化大屏,后台有朋友留言:“能不能教点好玩的?我想做游戏,但一行代码都不会。”行,这期就安排。今天的目标:从零做一个五子棋游戏。 带AI对战、三…

2026/7/21 0:03:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/20 22:51:39阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/20 18:51:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/20 18:51:18阅读更多 →