当前位置: 首页 > article >正文

达梦数据库主备集群手工搭建及主备切换演练

环境DM8、LinuxCentOS 7 三台服务器。本文记录从零搭一套一主一备一监视 式的主备集群纯手工操作不依赖图形化工具。一、环境规划1.1 IP规划角色主机名业务IP心跳IP实例名主库Primarydw01192.168.6.100192.168.100.100DMDB01备库Standbydw02192.168.1.101192.168.100.101DMDB02监视器monitordwmon192.168.1.102192.168.100.102/1.2 端口规划实例名MAL_INST_PORTMAL_INST_DW_PORTMAL_HOSTMAL_PORTMAL_DW_PORTDMDB01Primary52365536192.168.6.10153365436DMDB02Standby52365536192.168.6.10253365436约定安装目录/dm数据目录/dmata归档目录/dmarch二、前置准备2.1 关闭防火墙两台机器都做# 关闭防火墙生产环境改为放行 5236 端口systemctl stop firewalld systemctl disable firewalld2.3 创建 dmdba 用户和目录groupadddinstalluseradd-gdinstall-m-d/home/dmdba-s/bin/bash dmdbaechodmdba:DM123456|chpasswd2.4 主备库上安装dm8软件./DMInstall.bin-i三、初始化主备库切换到 dmdba 用户su- dmdba3.1 初始化实例# 主库初始化/dm/bin/dminitPATH/dmdataPAGE_SIZE32EXTENT_SIZE32LOG_SIZE1024CASE_SENSITIVE0CHARSET1INSTANCE_NAMEdmdb01PORT_NUM5236SYSDBA_PWDDameng123# SYSAUDITOR_PWDDameng123## 备库初始化/dm/bin/dminitPATH/dmdataPAGE_SIZE32EXTENT_SIZE32LOG_SIZE1024CASE_SENSITIVE0CHARSET1INSTANCE_NAMEdmdb02PORT_NUM5236SYSDBA_PWDDameng123# SYSAUDITOR_PWDDameng123#charset1表示UTF-8 则填 。log_size单位 MB生产环境的日志文件建议 2G 以上主备环境尤其要大。初始化成功后数据文件位于/dmdata/DAMENG。3.2 注册主库服务# root 用户执行/dm/script/root/dm_service_installer.sh-tdmserver-pdmdb01-dm_ini/dmdata/DAMENG/dm.ini-mmount四、配置主库归档和参数主备同步依赖归档日志Redo Log Archive必须先开启。4.1 修改 dm.ini编辑/dmdata/DAMENG/dm.ini添加或修改以下参数## 归档相关 ARCH_INI 1 # 启用归档配置文件 ## 主备角色主库填 1 ALTER_MODE_STATUS 0 # 允许切换模式 ENABLE_OFFLINE_TS 2 ## MAL 链路主备通信总线 MAL_INI 14.2 配置归档文件 dmarch.ini新建/dmdata/DAMENG/dmarch.ini#DaMeng Database Archive Configuration file #this is comments ARCH_WAIT_APPLY 0 [ARCHIVE_LOCAL1] ARCH_TYPE LOCAL ARCH_DEST /dmarch ARCH_FILE_SIZE 1024 ARCH_SPACE_LIMIT 51200 ARCH_FLUSH_BUF_SIZE 2 ARCH_HANG_FLAG 1 [ARCHIVE_REALTIME1] ARCH_TYPE REALTIME #实时归档类型 ARCH_DEST dmdb01 #实时归档目标实例名ARCH_DEST中的dmdb02是下面 dmmal.ini 里定义的备库 MAL 节点名。4.3 配置 MAL主备通信 dmmal.ini新建/dmdata/DAMENG/dmmal.iniMAL_CHECK_INTERVAL 5 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL 5 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME dmdb01 #实例名和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST 192.168.100.100 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT 5336 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST 192.168.6.100 #实例的对外服务 IP 地址 MAL_INST_PORT 5236 #实例的对外服务端口和 dm.ini 中的 PORT_NUM 一致 MAL_DW_PORT 5436 #实例本地的守护进程监听 TCP 连接的端口 MAL_INST_DW_PORT 5536 #实例监听守护进程 TCP 连接的端口 [MAL_INST2] MAL_INST_NAME dmdb02 MAL_HOST 192.168.100.101 MAL_PORT 5336 MAL_INST_HOST 192.168.6.101 MAL_INST_PORT 5236 MAL_DW_PORT 5436 MAL_INST_DW_PORT 5536MAL_PORT是 MAL 通信端口默认 61141MAL_DW_PORT是守护进程端口默认 52141。4.4 配置守护进程 dmwatcher.ini新建/dmdata/DAMENG/dmwatcher.ini[GRP1] DW_TYPE GLOBAL DW_MODE AUTO DW_ERROR_TIME 30 INST_ERROR_TIME 20 INST_RECOVER_TIME 60 INST_OGUID 941027 INST_INI /dmdata/DAMENG/dm.ini INST_AUTO_RESTART 1 INST_STARTUP_CMD /dm/bin/DmServiceDAMENG start RLOG_SEND_THRESHOLD 0 RLOG_APPLY_THRESHOLD 04.5 启动主库使配置生效./dmserver /dmdata/DAMENG/dm.ini登录确认归档已开启SELECTARCH_STATUSFROMV$DATABASE;SELECT*FROMV$ARCH_STATUS;五、备份主库准备备库数据5.1 对主库做全量备份关闭主库进行脱机备份./dmrmanCTLSTMTBACKUP DATABASE /dmdata/DAMENG/dm.ini BACKUPSET /home/dmdba/full_bak5.2 将备份传到备库scp-r/home/dmdba/full_bak dmdba192.168.6.101:/home/dmdba/六、初始化备库切换到dm-standby机器6.1 恢复数据到备库su- dmdba# 备库已初始化好一个空实例参数和主库保持一致尤其是 page_size、charset# 用主库备份恢复覆盖空实例数据文件./dmrmanCTLSTMTrestore database /dmdata/DAMENG/dm.ini from backupset /home/dmdba/full_bak./dmrmanCTLSTMTrecover database /dmdata/DAMENG/dm.ini from backupset /home/dmdba/full_bak./dmrmanCTLSTMTrecover database /dmdata/DAMENG/dm.ini update db_magic最后一步UPDATE DB_MAGIC是将备库数据库标记为可接收主库日志的状态不能省略。6.2 将主库的配置文件复制到备库scpdmdba192.168.6.100:/dmdata/DAMENG/dmarch.ini /dmdata/DAMENG/scpdmdba192.168.6.100:/dmdata/DAMENG/dmmal.ini /dmdata/DAMENG/6.3 修改备库的 dm.ini编辑/dm8/data/DMSERVER/dm.ini和主库相同添加ARCH_INI 1 ALTER_MODE_STATUS 0 MAL_INI 16.4 修改备库的 dmarch.ini备库的dmarch.ini与主库一致仅需修改ARCH_DEST ARCH_WAIT_APPLY 1 [ARCHIVE_LOCAL1] ARCH_TYPE LOCAL ARCH_DEST /dmarch/DAMENG ARCH_FILE_SIZE 1024 ARCH_SPACE_LIMIT 10244 [ARCHIVE_REALTIME1] ARCH_TYPE REALTIME ARCH_DEST GRP1_DW_016.5 配置备库的 dmwatcher.ini新建/dmdata/DAMENG/dmwatcher.ini[GRP1] DW_TYPE GLOBAL DW_MODE AUTO DW_ERROR_TIME 30 INST_ERROR_TIME 20 INST_RECOVER_TIME 60 INST_OGUID 941027 INST_INI /dmdata/DAMENG/dm.ini INST_AUTO_RESTART 1 INST_STARTUP_CMD /dm/bin/DmServiceDAMENG start RLOG_SEND_THRESHOLD 0 RLOG_APPLY_THRESHOLD 0与主库的配置一致。6.6 注册并以 Mount 模式启动备库# root 执行/dm/script/root/dm_service_installer.sh-tdmserver-pdmdb02-dm_ini/dmdata/DAMENG/dm.ini-mmount# 先以 Mount 模式启动备库不能直接 Opensystemctl start DmServiceDMSERVER备库启动后处于MOUNT状态不接受普通业务连接只接收主库日志。七、启动守护进程dmwatcher守护进程负责主备心跳检测和自动切换两台机器都要启动。7.1 注册 dmwatcher 服务# root 执行主库机器/dm/script/root/dm_service_installer.sh-tdmwatcher-pWatcher-watcher_ini/dmdata/DAMENG/dmwatcher.ini# root 执行备库机器同上命令/dm/script/root/dm_service_installer.sh-tdmwatcher-pWatcher-watcher_ini/dmdata/DAMENG/dmwatcher.ini7.2 启动顺序必须先启主库 watcher再启备库 watcher否则主备握手会失败。# 主库机器systemctl start DmWatcherServiceGRP1# 备库机器systemctl start DmWatcherServiceGRP1查看日志确认握手成功tail-fdm_dmwatcher_GRP1_DW_01_202605.log八、验证主备同步8.1 在主库写入数据-- 主库CREATETABLETEST_SYNC(IDINT,NAMEVARCHAR(100));INSERTINTOTEST_SYNCVALUES(1,hello standby);COMMIT;8.2 在备库查询只读-- 备库以只读方式连接SELECT*FROMTEST_SYNC;-- 能查到说明同步正常8.3 查看主备状态-- 配置一个普通监视器 MON_DW_CONFIRM0#普通监视器MON_LOG_PATH/dm/log MON_LOG_INTERVAL60MON_LOG_FILE_SIZE32MON_LOG_SPACE_LIMIT2048[GRP1]MON_INST_OGUID941027MON_DW_IP192.168.100.100:5436 MON_DW_IP192.168.100.101:5436九、测试主备切换注测试主备切换前先了解一下达梦datawatch集群的启停顺序关闭顺序停监视器 → 停备库守护 → 停主库守护 → 停主库实例 → 停备库实例启动顺序启守护先备后主 → 启数据库先备后主 → 最后启监视器9.1 手动切换主备库查看dwmon服务器上的确认监视器是否正常运行ps-ef|grepdmm查看dw01服务器上的数据库服务和守护进程ps-ef|grepdmsps-ef|grepdmw查看dw02服务器上的数据库服务和守护进程ps-ef|grepdmsps-ef|grepdmw登录普通监视器dw02从备机切换为主机9.2 将主库的内网网卡down掉备库dw01自动takeover升为主节点旧的主库dw02状态变为suspend恢复dw02的网络后会自动拉起dw02切换为备机加入集群9.2 模拟主库断电虚拟机→ 电源 → 关机monitor检测到主节点异常开始切换原来的备节点提升为主节点注原主库恢复后不能直接重新加入需要用新主库的当前备份恢复数据重走一遍第六节修改角色为STANDBY启动后守护进程自动同步十、配置文件速查汇总文件位置作用dm.ini/dmdata/DAMENG/实例核心参数dmarch.ini/dmdata/DAMENG/归档策略配置dmmal.ini/dmdata/DAMENG/主备 MAL 通信配置dmwatcher.ini/dmdata/DAMENG/守护进程配置小结整个搭建流程核心就四步初始化主库→ 开归档 → 配 MAL 和 watcher备份主库→ 传到备库 → 恢复带 UPDATE DB_MAGIC备库配置→ 复制 MAL 文件 → 改角色为 STANDBY → Mount 启动两端启动 dmwatcher→ 等待握手成功 → 验证同步达梦的主备机制和 Oracle Data Guard 思路基本一致熟悉 DG 的同学上手很快。日常运维重点是监控V$RAPPLY_STAT里的日志延迟以及定期测试 failover 演练。达梦社区地址https://eco.dameng.com

相关文章:

达梦数据库主备集群手工搭建及主备切换演练

环境:DM8、Linux(CentOS 7 ),三台服务器。 本文记录从零搭一套"一主一备一监视" 式的主备集群,纯手工操作,不依赖图形化工具。 一、环境规划 1.1 IP规划 角色主机名业务IP心跳IP实例名主库&…...

Obsidian Importer:一站式笔记数据迁移终极指南

Obsidian Importer:一站式笔记数据迁移终极指南 【免费下载链接】obsidian-importer Obsidian Importer lets you import notes from other apps and file formats into your Obsidian vault. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-importer …...

NoFences:如何用开源方案解决Windows桌面管理难题

NoFences:如何用开源方案解决Windows桌面管理难题 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences Windows桌面图标管理长期困扰着用户,NoFences作为开…...

【模块化设计-14】深入解析 RT-Thread syswatch 系统监控模块:保障系统稳定的核心卫士

在嵌入式系统开发中,系统的稳定性是重中之重。RT-Thread 提供的 syswatch(系统监控)模块,专为解决线程异常阻塞、保障系统持续运行设计。本文将从模块设计理念、核心功能、配置项、工作流程到实际测试,全方位解析 sysw…...

【模块化设计-13】OAM 线程模块详解

该模块是基于 RT-Thread 实时操作系统实现的一个 OAM(Operation, Administration and Maintenance,操作、管理和维护)专用线程模块,核心功能是提供独立的 OAM 业务处理线程、消息队列机制和定时器管理能力,适用于嵌入式…...

【模块化设计-11】基于嵌入式系统的周期性任务调度框架设计与实现

基于嵌入式系统的周期性任务调度框架设计与实现嵌入式系统的稳定性与实时性核心在于任务调度框架的设计,合理的框架不仅能保障各类外设任务有序执行,更能为系统扩展与维护奠定基础。本文以一款集成 ADC 采集、系统守护、外设交互的嵌入式应用为例&#x…...

【模块化设计-10】UART1 驱动 + 环形 FIFO 实现高效串口数据收发

在嵌入式开发中,串口(UART)是最常用的通信接口之一,而直接采用中断 缓冲区的方式处理串口数据,能有效避免数据丢失、提升收发效率。本文将基于实际项目代码,详解UART1 驱动与环形 FIFO(ring_fi…...

网络通信调试难题的Qt解决方案:mNetAssist深度解析

网络通信调试难题的Qt解决方案:mNetAssist深度解析 【免费下载链接】mNetAssist mNetAssist - A UDP/TCP Assistant 项目地址: https://gitcode.com/gh_mirrors/mn/mNetAssist 网络协议调试过程中,开发者常面临协议兼容性、数据传输验证和连接状态…...

LineageOS 18.1在一加9 Pro上的体验报告:纯净安卓11的续航、性能与Magisk模块搭配

一加9 Pro刷入LineageOS 18.1深度体验:纯净Android 11的终极玩法 当厂商定制系统越来越臃肿时,许多极客用户开始寻找更纯净的安卓体验。LineageOS作为CyanogenMod的精神继承者,一直是刷机爱好者的首选。本文将带您深入体验一加9 Pro刷入Linea…...

紧急预警:2024Q3起PlayAI将下线v2.1旧版翻译协议!迁移倒计时47天,5类遗留系统升级避坑手册

更多请点击: https://intelliparadigm.com 第一章:PlayAI多语种同步翻译功能详解 PlayAI 的多语种同步翻译功能基于端到端神经机器翻译(NMT)架构与实时语音流处理引擎深度融合,支持中、英、日、韩、法、西、德、俄等…...

扔掉KVM切换器!GitHub 25.7K Star的Deskflow:用一套键鼠无缝控制多台电脑的软件KVM方案

两台电脑两套键鼠,桌面杂乱、切换繁琐,硬件KVM切换器又贵得离谱?Deskflow 是一款开源跨平台的软件KVM方案,它允许用一套键鼠无缝穿梭于不同设备之间,让一台电脑的鼠标光标直接“穿越”到另一台电脑的屏幕上。本文将从技…...

工业AI相机的散热困局:为什么你的视觉检测总在夏天失效?

🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 211、985硕士,从业16年 从事结构设计、热设计、售前、产品设计、项目管理等工作,涉足消费电子、新能源、医疗设备、制药信息化、核工业等…...

四通道32孔生物源性检测仪 肉源性检测仪器

四通道32孔生物源性检测仪搭载四通道48孔高通量检测架构,本少、效率低的短板,大幅提升肉类质检筛查效率。多通道独立运行互不干扰,可一次性完成大批量肉类样本同步检测设备检测精度优异,可精准识别各类常见动物源性成分&#xff0…...

260513实训:路由器连接

路由器工作原理: 转发动作:路由器收到数据后,根据目的IP地址查路由器路由表(地图)转发 路由表:路由器默认会将直连网段加入路由表 查看IP路由表:display ip routing-table 127.0.0.0/8 本地环…...

告别论文焦虑:Paperxie 为本科毕业论文搭建的「全流程写作脚手架」

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 毕业季的凌晨三点,宿舍台灯下亮着的电脑屏幕,是无数本科生共同的记忆。当 10000 字的毕业…...

被论文压到喘不过气?Paperxie 本科论文功能,把你的毕业节奏拉回正轨

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 毕业季的焦虑,一半来自答辩,一半来自毕业论文。选题卡壳、文献找不全、格式改到崩溃、写了…...

iOS BLE 开发(Swift 实现 + 面试 + 开发必备)

一、BLE 基础概念(必须懂) 1. BLE 是什么 Bluetooth Low Energy 低功耗蓝牙,特点:低功耗、连接快、小数据传输适用于:智能硬件、手环、车机、传感器、设备诊断2. BLE 角色Central(中心设备)&…...

AWorksLP嵌入式平台FatFs文件系统与SD卡驱动移植实战指南

1. 项目概述:为什么要在AWorksLP上折腾FatFs和SD卡?在嵌入式开发里,存储扩展是个绕不开的话题。尤其是当你手头的MCU片上Flash只有几百KB,却要存点日志、配置文件,甚至是一些小体积的音频、图片资源时,外挂…...

Python代码质量双保险:Black格式化与类型提示实战指南

1. 项目概述:当代码格式化遇上类型安全在嵌入式开发,尤其是像CircuitPython这样的微控制器编程领域,代码的清晰度和可靠性往往比在桌面环境更为重要。资源受限、调试困难,意味着每一行代码都最好能“一次写对”。我这些年折腾过不…...

AI智能体在社交约会场景中的架构设计与工程实践

1. 项目概述:当AI遇见约会,一个开源智能体的诞生最近在GitHub上看到一个挺有意思的项目,叫jessastrid/matchclaws-ai_agent_dating。光看名字,就能嗅到一股混合了技术、社交与未来感的独特气息。简单来说,这是一个利用…...

Java后端工程师必备:系统学习大模型应用开发(收藏版)

本文深入探讨了Java后端工程师如何系统性地学习AI应用开发,从基础的CRUD操作到大模型的集成,包括RAG、Tool Calling、MCP、Agent等关键技术。文章强调了AI应用开发不仅是调用大模型接口,而是将大模型能力融入真实业务系统,实现理解…...

AI应用开发与AI Agent开发:小白程序员必备技能,收藏学习迎高薪未来!

本文介绍了AI应用开发和AI Agent开发的核心概念和区别,通过传统后端开发、AI应用开发和AI Agent开发三个场景的对比,阐述了AI技术如何赋能产品和服务。AI应用开发是将大模型能力嵌入产品,而AI Agent开发则是让大模型自主完成任务。文章还结合…...

2026程序员必看:收藏这份AI大模型学习资源包,小白也能轻松入门!

2026程序员必看:收藏这份AI大模型学习资源包,小白也能轻松入门! 随着AI大模型技术的快速发展,传统编程技能已难以满足职场需求。本文分析了程序员面临的职场焦虑,指出掌握大模型技术是2026年程序员提升竞争力的关键。文…...

对比直接使用官方API体验Taotoken在稳定性与成本上的差异

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用官方API体验Taotoken在稳定性与成本上的差异 在将大模型能力集成到个人项目或小团队工作流中时,开发者通常…...

番茄小说下载器终极指南:如何轻松构建个人离线图书馆

番茄小说下载器终极指南:如何轻松构建个人离线图书馆 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否经常在地铁、高铁或飞机上想要阅读番茄小说&#xff0c…...

对比直接购买,使用 Taotoken 的 Token Plan 带来的成本优势感知

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接购买,使用 Taotoken 的 Token Plan 带来的成本优势感知 1. 从按需付费到套餐规划的成本视角转变 在直接使用各…...

Java程序员必看:收藏这份2026大模型转型攻略,小白也能轻松入行高薪赛道!

Java程序员必看:收藏这份2026大模型转型攻略,小白也能轻松入行高薪赛道! 随着大模型(LLMs)成为IT行业新质生产力的核心引擎,2026年国内大模型核心市场规模将突破700亿元,人才缺口达200万。本文专…...

2026年十大最佳小程序制作平台:革新数字化运营体验

小程序制作已成为企业数字化运营的重要抓手,2026年市场涌现多个高效平台。本文聚焦十大主流工具,涵盖从开发效率到生态构建的核心维度。好赞科技凭借地域精准算法领跑,亿点通科技以低代码开发见长,启帆数字突出定制化能力。各平台…...

第9课:Linux开发工具(四):make与makefile

第9课:Linux开发工具(四):make与makefile 一、为什么我们需要 Makefile? 1.1 IDE 背后的秘密 在使用 Visual Studio 等 IDE 时,我们只需按下 F5 或点击"编译"按钮,程序就会自动完成编…...

绝对不要让两根线在同一个交换机上连成一个圈。 为什么 形成一个环就会网络风暴?

为了让你彻底理解“为什么环路会导致风暴”,我们把网络连接看作一个“数字信息的传递游戏”。 1. 关键前提:交换机不懂“记忆” 交换机(特别是普通的傻瓜交换机)在转发广播消息时,它不具备判断“这条消息我刚才是不是发过”的能力。它只认一个逻辑: “只要是从端口A进来…...