达梦数据库主备集群搭建实战教程
摘要本文详细介绍了达梦数据库DM8数据守护集群主备集群的完整搭建流程涵盖集群原理、环境规划、五套核心配置文件详解、主备库初始化、守护进程与监视器配置、集群启动验证及常见报错排查适用于测试环境与生产环境的高可用部署参考。前言达梦数据守护是达梦数据库提供的高可用解决方案通过主备架构实现数据冗余与故障自动切换保障业务连续性。本文基于一主一备架构从零开始完整演示主备集群的搭建过程帮助读者快速掌握达梦高可用集群的部署方法。一、集群概述1.1 主备集群工作原理达梦数据守护集群基于重做日志REDO同步机制实现主备数据一致。主库负责处理读写请求将产生的重做日志通过 MAL 系统实时发送到备库备库重演日志保持数据同步。守护进程dmwatcher监控各节点状态主库故障时自动将备库切换为主库实现故障自愈。核心组件主库PRIMARY对外提供读写服务产生重做日志备库STANDBY接收并重演主库日志保持数据一致可切换为主库守护进程dmwatcher监控数据库状态负责主备切换与状态同步监视器dmmonitor集群管理入口查看状态、执行手动切换MAL 系统达梦内部通信机制负责主备间日志与消息传输1.2 主备集群 vs 读写分离集群对比项主备集群数据守护读写分离集群备库作用仅做数据冗余不对外提供服务备库可承接读请求实现读负载均衡适用场景高可用容灾、故障切换读多写少业务、性能扩展数据一致性实时归档强一致实时 / 即时归档读存在毫秒级延迟配置复杂度中等较高需配置分发器二、环境准备2.1 服务器规划节点IP 地址实例名角色操作系统主库192.168.1.101GRP1_RT_01PRIMARYCentOS 7.x备库192.168.1.102GRP1_RT_02STANDBYCentOS 7.x监视器192.168.1.103-MONITORCentOS 7.x说明测试环境可将监视器部署在主库或备库机器上生产环境建议独立部署。2.2 软件与硬件要求项目要求达梦版本DM8 企业版物理内存 4 GB交换区Swap 物理内存磁盘根据数据量规划建议单独挂载数据盘网络主备节点网络互通建议万兆网卡2.3 目录规划用途目录路径备注数据库软件安装目录/dm/dmdbms主备节点相同数据文件目录/dm/data/DAMENG主备节点相同归档日志目录/dm/dmarch主备节点相同备份文件目录/dm/dmbak主备节点相同三、搭建步骤3.1 单机数据库安装主备都执行两台机器分别安装达梦数据库创建 dmdba 用户与 dinstall 用户组挂载镜像后执行安装脚本选择 服务器 安装类型安装路径统一为 /dm/dmdbms。# 创建用户组与用户 groupadd dinstall useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba passwd dmdba # 创建目录并授权 mkdir -p /dm/dmdbms /dm/data /dm/dmarch /dm/dmbak chown -R dmdba:dinstall /dm3.2 主库初始化与配置步骤 1初始化数据库实例su - dmdba cd /dm/dmdbms/bin ./dminit path/dm/data db_nameDAMENG instance_nameGRP1_RT_01 port_num5236步骤 2配置 dm.ini主库INSTANCE_NAME GRP1_RT_01 PORT_NUM 5236 MAL_INI 1 ARCH_INI 1 ALTER_MODE_STATUS 0 ENABLE_OFFLINE_TS 2步骤 3配置 dmmal.ini主备都要配内容相同[MAL_INST1] MAL_INST_NAME GRP1_RT_01 MAL_HOST 192.168.1.101 MAL_PORT 61141 MAL_INST_HOST 192.168.1.101 MAL_INST_PORT 5236 [MAL_INST2] MAL_INST_NAME GRP1_RT_02 MAL_HOST 192.168.1.102 MAL_PORT 61142 MAL_INST_HOST 192.168.1.102 MAL_INST_PORT 5236步骤 4配置 dmarch.ini主库[ARCHIVE_REALTIME] ARCH_TYPE REALTIME ARCH_DEST GRP1_RT_02 [ARCHIVE_LOCAL1] ARCH_TYPE LOCAL ARCH_DEST /dm/dmarch ARCH_FILE_SIZE 1024 ARCH_SPACE_LIMIT 0步骤 5配置 dmwatcher.ini主库[GRP1] DW_TYPE GLOBAL DW_MODE AUTO DW_ERROR_TIME 10 INST_RECOVER_TIME 60 INST_ERROR_TIME 10 INST_OGUID 453331 INST_INI /dm/data/DAMENG/dm.ini INST_AUTO_RESTART 1 INST_STARTUP_CMD /dm/dmdbms/bin/dmserver RLOG_SEND_THRESHOLD 0 RLOG_APPLY_THRESHOLD 0步骤 6启动主库并设置 OGUID# 以mount方式启动 ./dmserver /dm/data/DAMENG/dm.ini mount # 新开窗口用disql登录设置OGUID与模式 SP_SET_PARA_VALUE(1, ALTER_MODE_STATUS, 1); alter database primary; SP_SET_OGUID(453331); SP_SET_PARA_VALUE(1, ALTER_MODE_STATUS, 0);3.3 备库初始化与配置步骤 1备份主库数据还原到备库# 主库执行脱机备份 ./dmrman backup database /dm/data/DAMENG/dm.ini backupset /dm/dmbak/full_bak; # 将备份集拷贝到备库 scp -r /dm/dmbak/full_bak dmdba192.168.1.102:/dm/dmbak/ # 备库执行还原与恢复 ./dmrman restore database /dm/data/DAMENG/dm.ini from backupset /dm/dmbak/full_bak; recover database /dm/data/DAMENG/dm.ini from backupset /dm/dmbak/full_bak; recover database /dm/data/DAMENG/dm.ini update db_magic;步骤 2备库 dm.ini 修改INSTANCE_NAME GRP1_RT_02 PORT_NUM 5236 MAL_INI 1 ARCH_INI 1 ALTER_MODE_STATUS 0 ENABLE_OFFLINE_TS 2步骤 3备库 dmarch.ini 配置[ARCHIVE_REALTIME] ARCH_TYPE REALTIME ARCH_DEST GRP1_RT_01 [ARCHIVE_LOCAL1] ARCH_TYPE LOCAL ARCH_DEST /dm/dmarch ARCH_FILE_SIZE 1024 ARCH_SPACE_LIMIT 0步骤 4备库 dmwatcher.ini 配置与主库相同步骤 5启动备库并设置模式# 以mount方式启动备库 ./dmserver /dm/data/DAMENG/dm.ini mount # disql登录设置 SP_SET_PARA_VALUE(1, ALTER_MODE_STATUS, 1); alter database standby; SP_SET_OGUID(453331); SP_SET_PARA_VALUE(1, ALTER_MODE_STATUS, 0);3.4 监视器配置在监视器节点创建 dmmonitor.iniMONITOR_DW_TIME 2 MONITOR_DW_ERROR 10 MONITOR_LOG_PATH /dm/data/dmmonitor_log [GRP1] MONITOR_INST_OGUID 453331 MONITOR_DW_IP 192.168.1.101 MONITOR_DW_PORT 5236 MONITOR_DW_IP 192.168.1.102 MONITOR_DW_PORT 52363.5 启动集群启动顺序主库 → 备库 → 主守护 → 备守护 → 监视器# 1. 主库启动后台运行 nohup ./dmserver /dm/data/DAMENG/dm.ini # 2. 备库启动后台运行 nohup ./dmserver /dm/data/DAMENG/dm.ini # 3. 主库守护进程启动 nohup ./dmwatcher /dm/data/DAMENG/dmwatcher.ini # 4. 备库守护进程启动 nohup ./dmwatcher /dm/data/DAMENG/dmwatcher.ini # 5. 启动监视器 ./dmmonitor /dm/data/dmmonitor.ini四、集群状态验证登录监视器后执行 show 命令查看集群状态show正常状态下应显示主库PRIMARY 模式OPEN 状态守护进程 OPEN备库STANDBY 模式OPEN 状态守护进程 OPEN归档状态VALID验证数据同步在主库创建表并插入数据到备库查询确认数据已同步。五、常见问题与报错排查5.1 报错 -720守护进程处于活动状态现象执行 alter database open 时报错 -720:守护进程处于活动状态或当前配置不允许该操作原因dmwatcher 守护进程运行时数据库禁止手动修改状态这是集群保护机制。解决生产环境通过监视器执行 open database 实例名测试环境先停止 dmwatcher再修改 ALTER_MODE_STATUS1 后执行5.2 守护进程无法连接对端现象监视器显示备库状态异常守护进程日志报连接失败排查检查 dmmal.ini 中 IP 和端口配置是否正确主备节点间网络是否互通telnet 测试 MAL_PORT两边 OGUID 是否一致5.3 归档状态无效现象show 命令显示归档状态 INVALID原因主备日志序列号不连续归档断流解决重新备份主库并还原到备库确保备库 DB_MAGIC 与主库匹配。六、总结达梦主备集群搭建的核心在于理解五套配置文件dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini、dmmonitor.ini的作用与关联关系其中 MAL 系统是主备通信的基础实时归档是数据同步的核心守护进程是高可用切换的保障。搭建过程中需严格遵循启动顺序主备 OGUID 必须保持一致归档配置中的目标实例名不能写错。通过本文的步骤可快速搭建一套稳定可用的达梦数据守护集群为业务系统提供高可用保障。运维指南 | 达梦技术文档