本文以DM7为例演示达梦守护集群的部署IPPORT角色192.168.1.1005237primary192.168.1.1015237slave192.168.1.102monitor达梦数据守护集群DM Data Watch简称 DMDW是达梦数据库为实现数据库级高可用与数据容灾的集成化解决方案。采用share nothing也就是主备独立存储非共享存储架构通过 MAL消息访问层通信层传输 Redo 日志基于实时归档机制实现主备间数据同步。MAL_INST_PORT数据库实例port用于mal内部通信MAL_PORTMAL-PORT:用于数据库间传输redo同步数据MAL_DW_PORTMAL间相互通信判断状态DW_PORTdmwatcher守护进程通过此端口向数据库下发命令一、环境准备1.1 本次使用DM7版本将安装包传到服务器的/opt目录下1.2 创建安装用户、用户组及文件目录[rootdwtest1 opt]# mkdir /home/dmdba[rootdwtest1 opt]# mkdir -p /dbdata/dmdata[rootdwtest1 opt]# mkdir -p /dbbak/dmbak[rootdwtest1 opt]# mkdir -p /dbarch/dmarch[rootdwtest1 opt]# groupadd dinstall[rootdwtest1 opt]# useradd -g dinstall -m -d /home/dmdba/dm -s /bin/bash dmdba[rootdwtest1 opt]# chown -R dmdba:dinstall /home/dmdba /dbdata /dbbak /dbarch1.3 检查修改基础的操作系统参数1.3.1 磁盘测速#磁盘测速[root~]# dd if/dev/zero of/dbdata/test bs32k count4k oflagdsync1.3.2 关闭防火墙#查看防火墙状态[root~]# systemctl status firewalld.service#停止防火墙服务[root~]# systemctl stop firewalld.service#禁用防火墙服务[root~]# systemctl disable firewalld.service1.3.3 用户内核参数调整[root~]# vi /etc/security/limits.confdmdba soft as unlimiteddmdba hard as unlimiteddmdba soft fsize unlimiteddmdba hard fsize unlimiteddmdba soft nproc 131072dmdba hard nproc 131072dmdba soft nofile 131072dmdba hard nofile 131072dmdba soft core unlimiteddmdba hard core unlimiteddmdba soft data unlimiteddmdba hard data unlimiteddmdba soft memlock unlimiteddmdba hard memlock unlimited1.3.4 sysctl.conf 配置调整root~]#vi /etc/sysctl.conf添加如下内容kernel.core_pattern/dbbak/core-%e-%p-%t-%svm.swappiness10vm.overcommit_memory0# 当物理内存小于等于64G时设置系统保留的最小空闲内存量为1153434单位KB# 当物理内存大于64G时设置系统保留的最小空闲内存量为物理内存的2%vm.min_free_kbytes 物理内存的2%单位KB保存后执行#保存后执行如下命令生效[root~]# sysctl -p1.3.5 禁止透明大页[root~]# vi /etc/rc.local添加如下内容内容加在 exit 0 之前echo never /sys/kernel/mm/transparent_hugepage/defragecho never /sys/kernel/mm/transparent_hugepage/enabled1.3.6 磁盘I/O调度算法固态盘建议磁盘调度算法设置为noop或none机械磁盘建议为dead1ine从而优化数据库的磁盘性能。该操作需让操作系统厂家进行调整永久生效。如个人临时调整可参考以下方式#手动临时调整 sdc 为盘符需要对应数据库使用的真实盘符固态磁盘[root~]# echo noop /sys/block/sdc/queue/scheduler[root~]# echo none /sys/block/sdc/queue/scheduler机械磁盘[root~]# echo deadline /sys/block/sdc/queue/scheduler1.3.7 关闭SELinux#查看当前selinux的状态[root~]# /usr/sbin/sestatus -v[root~]# vi /etc/selinux/config设置SELINUXdisabled重启机器生效。整合的环境检查测试脚本#!/bin/bash # # 达梦数据库DM7/8部署前环境准备脚本V1.1 # 适用系统CentOS / RHEL 7 # 运行要求root 或其他超权用户 # authordw # time 2026-07-23 # set -e # 遇到错误立即退出 # ------------------------- 颜色定义 ------------------------- RED\033[0;31m GREEN\033[0;32m YELLOW\033[0;33m BLUE\033[0;34m NC\033[0m # No Color # ------------------------- 颜色打印函数 ------------------------- print_title() { echo -e ${BLUE} $* ${NC} } print_step() { echo -e ${BLUE} $*${NC} } print_success() { echo -e ${GREEN} $*${NC} } print_warning() { echo -e ${YELLOW} 警告$*${NC} } print_error() { echo -e ${RED}错误$*${NC} } print_info() { echo -e $* } # ------------------------- 定义变量 ------------------------- DM_USERdmdba DM_GROUPdinstall DM_HOME/home/dmdba/dm # 用户家目录安装目录 DATA_DIR/dbdata/dmdata # 数据文件目录 BAK_DIR/dbbak/dmbak # 备份目录 ARCH_DIR/dbarch/dmarch # 归档目录 # 各配置文件的备份后缀 BACKUP_SUFFIX.dm_prepare.bak # ------------------------- 检查 root 权限 ------------------------- if [ $EUID -ne 0 ]; then print_error 请使用 root 用户执行此脚本 exit 1 fi print_title 开始达梦数据库环境准备 # ------------------------- 1. 创建用户、组及目录 ------------------------- print_step 1. 创建用户组 ${DM_GROUP} ... if getent group $DM_GROUP /dev/null 21; then print_success 组 ${DM_GROUP} 已存在跳过。 else groupadd $DM_GROUP print_success 组 ${DM_GROUP} 创建成功。 fi print_step 创建用户 ${DM_USER} ... if id $DM_USER /dev/null 21; then print_success 用户 ${DM_USER} 已存在跳过。 else useradd -g $DM_GROUP -m -d $DM_HOME -s /bin/bash $DM_USER print_success 用户 ${DM_USER} 创建成功家目录${DM_HOME} fi print_step 创建数据、备份、归档目录 ... mkdir -p $DATA_DIR $BAK_DIR $ARCH_DIR chown -R ${DM_USER}:${DM_GROUP} $DM_HOME $DATA_DIR $BAK_DIR $ARCH_DIR print_success 目录创建完成权限已设置。 # ------------------------- 2. 关闭防火墙 ------------------------- print_step 2. 关闭防火墙firewalld... if systemctl is-active --quiet firewalld; then systemctl stop firewalld systemctl disable firewalld print_success 防火墙已停止并禁用。 else print_success 防火墙当前未运行跳过。 fi # ------------------------- 3. 调整用户资源限制limits.conf ------------------------- print_step 3. 配置 /etc/security/limits.conf ... LIMITS_FILE/etc/security/limits.conf if [ -f $LIMITS_FILE ]; then cp -p $LIMITS_FILE ${LIMITS_FILE}${BACKUP_SUFFIX} print_success 已备份原文件至 ${LIMITS_FILE}${BACKUP_SUFFIX} fi # 追加或覆盖 $DM_USER 的配置先删除可能已有的 $DM_USER 行再添加 sed -i /^$DM_USER[[:space:]]/d $LIMITS_FILE cat $LIMITS_FILE EOF $DM_USER soft as unlimited $DM_USER hard as unlimited $DM_USER soft fsize unlimited $DM_USER hard fsize unlimited $DM_USER soft nproc 131072 $DM_USER hard nproc 131072 $DM_USER soft nofile 131072 $DM_USER hard nofile 131072 $DM_USER soft core unlimited $DM_USER hard core unlimited $DM_USER soft data unlimited $DM_USER hard data unlimited $DM_USER soft memlock unlimited $DM_USER hard memlock unlimited EOF print_success limits.conf 配置已添加。 # ------------------------- 4. 调整系统内核参数sysctl.conf ------------------------- print_step 4. 配置 /etc/sysctl.conf ... SYSCTL_FILE/etc/sysctl.conf if [ -f $SYSCTL_FILE ]; then cp -p $SYSCTL_FILE ${SYSCTL_FILE}${BACKUP_SUFFIX} print_success 已备份原文件至 ${SYSCTL_FILE}${BACKUP_SUFFIX} fi # 计算 vm.min_free_kbytes MEM_TOTAL_KB$(grep MemTotal /proc/meminfo | awk {print $2}) MEM_TOTAL_MB$((MEM_TOTAL_KB / 1024)) MEM_TOTAL_GB$((MEM_TOTAL_MB / 1024)) if [ $MEM_TOTAL_GB -le 64 ]; then MIN_FREE_KB1153434 else MIN_FREE_KB$((MEM_TOTAL_KB * 2 / 100)) fi # 删除可能已存在的同名参数避免重复 sed -i /^kernel.core_pattern/d $SYSCTL_FILE sed -i /^vm.swappiness/d $SYSCTL_FILE sed -i /^vm.overcommit_memory/d $SYSCTL_FILE sed -i /^vm.min_free_kbytes/d $SYSCTL_FILE cat $SYSCTL_FILE EOF kernel.core_pattern/dbbak/core-%e-%p-%t-%s vm.swappiness10 vm.overcommit_memory0 vm.min_free_kbytes${MIN_FREE_KB} EOF print_success sysctl.conf 配置已添加vm.min_free_kbytes ${MIN_FREE_KB} KB。 # 使配置生效 sysctl -p print_success sysctl 配置已生效。 # ------------------------- 5. 禁止透明大页 ------------------------- print_step 5. 禁止透明大页Transparent HugePages... # 立即生效 echo never /sys/kernel/mm/transparent_hugepage/defrag echo never /sys/kernel/mm/transparent_hugepage/enabled print_success 当前已禁用透明大页。 # 设置开机自动禁用写入 /etc/rc.local RC_LOCAL/etc/rc.local if [ -f $RC_LOCAL ]; then chmod x $RC_LOCAL if ! grep -q transparent_hugepage/defrag $RC_LOCAL; then sed -i /^exit 0/i echo never /sys/kernel/mm/transparent_hugepage/defrag\necho never /sys/kernel/mm/transparent_hugepage/enabled $RC_LOCAL print_success 已写入 ${RC_LOCAL}重启后生效。 else print_success ${RC_LOCAL} 中已存在透明大页配置跳过。 fi else print_warning ${RC_LOCAL} 不存在无法设置开机自动禁用。请手动配置。 fi # ------------------------- 6. 磁盘 I/O 调度算法需人工干预 ------------------------- print_step 6. 磁盘 I/O 调度算法需手动设置 print_info 根据数据库使用的磁盘类型建议执行以下命令请替换 sdX 为实际盘符 print_info 固态硬盘 echo none /sys/block/sdX/queue/scheduler print_info 机械硬盘 echo deadline /sys/block/sdX/queue/scheduler print_warning 如需永久生效请咨询操作系统管理员配置udev规则或写入rc.local。 print_info 当前步骤仅给出建议脚本未自动执行请根据实际情况手动操作。 # ------------------------- 7. 关闭 SELinux ------------------------- print_step 7. 关闭 SELinux ... SELINUX_FILE/etc/selinux/config if [ -f $SELINUX_FILE ]; then cp -p $SELINUX_FILE ${SELINUX_FILE}${BACKUP_SUFFIX} print_success 已备份原文件至 ${SELINUX_FILE}${BACKUP_SUFFIX} sed -i s/^SELINUX.*/SELINUXdisabled/ $SELINUX_FILE print_success 已设置 SELINUXdisabled需重启系统后生效。 else print_warning ${SELINUX_FILE} 不存在请手动确认 SELinux 状态。 fi # ------------------------- 完成提示 ------------------------- print_title 环境准备脚本执行完毕 print_info 请检查输出中是否有错误或警告。 print_warning 为使 SELinux 更改生效建议重启系统。 print_success 重启后使用 ${DM_USER} 用户登录即可开始安装达梦数据库。二、集群部署2.1 主库安装2.1.1 程序安装[rootdwtest1 ~]#mount -o loop /opt/dm7_20251014_x86_rocky4.2_64.iso /mntmount: /dev/loop0 is write-protected, mounting read-only[rootdwtest1 ~]# su - dmdbaLast login: Thu Jul 23 19:54:29 PDT 2026 on pts/0[dmdbadwtest1 ~]$ cd /mnt[dmdbadwtest1 mnt]$ ls -ltrtotal 615789-r-xr-xr-x 1 root root 2353064 Oct 14 2025 DM_Install.pdf-r-xr-xr-x 1 root root 628214467 Oct 14 2025 DMInstall.bin[dmdbadwtest1 mnt]$./DMInstall.bin -iPlease select the installers language (E/e:English C/c:Chinese) [E/e]:c解压安装程序.........欢迎使用达梦数据库安装程序是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n是否设置时区? (Y/y:是 N/n:否) [Y/y]:y设置时区:[ 1]: GTM-12日界线西[ 2]: GTM-11萨摩亚群岛[ 3]: GTM-10夏威夷[ 4]: GTM-09阿拉斯加[ 5]: GTM-08太平洋时间美国和加拿大[ 6]: GTM-07亚利桑那[ 7]: GTM-06中部时间美国和加拿大[ 8]: GTM-05东部部时间美国和加拿大[ 9]: GTM-04大西洋时间美国和加拿大[10]: GTM-03巴西利亚[11]: GTM-02中大西洋[12]: GTM-01亚速尔群岛[13]: GTM格林威治标准时间[14]: GTM01萨拉热窝[15]: GTM02开罗[16]: GTM03莫斯科[17]: GTM04阿布扎比[18]: GTM05伊斯兰堡[19]: GTM06达卡[20]: GTM07曼谷河内[21]: GTM08中国标准时间[22]: GTM09汉城[23]: GTM10关岛[24]: GTM11所罗门群岛[25]: GTM12斐济[26]: GTM13努库阿勒法[27]: GTM14基里巴斯请选择设置时区 [6]:21安装类型:1 典型安装2 服务器3 客户端4 自定义请选择安装类型的数字序号 [1 典型安装]:1所需空间: 1236M请选择安装目录 [/home/dmdba/dm/dmdbms]:可用空间: 22G是否确认安装路径(/home/dmdba/dm/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y安装前小结安装位置: /home/dmdba/dm/dmdbms所需空间: 1236M可用空间: 22G版本信息:有效日期:安装类型: 典型安装是否确认安装? (Y/y:是 N/n:否):[rootdwtest1 ~]#/home/dmdba/dm/dmdbms/script/root/root_installer.sh2.1.2 实例初始化[dmdbadwtest1 ~]$ cd dmdbms/bin[dmdbadwtest1 bin]$./dminit PATH/dbdata/dmdata_new PAGE_SIZE32 EXTENT_SIZE16 CASE_SENSITIVEY LOG_SIZE2048 SYSDBA_PWDDwtest_11 SYSAUDITOR_PWDDwtest_11initdb V7db version: 0x7000afile dm.key not found, use default license!License will expire on 2026-10-14log file path: /dbdata/dmdata_new/DAMENG/DAMENG01.loglog file path: /dbdata/dmdata_new/DAMENG/DAMENG02.logwrite to dir [/dbdata/dmdata_new/DAMENG].create dm database success. 2026-07-23 20:10:17[dmdbadwtest1 bin]$2.1.3 配置归档及备份修改配置文件[dmdbadwtest1 ~]$ cd /dbdata/dmdata_new/DAMENG/[dmdbadwtest1 DAMENG]$ vi dm.ini[dmdbadwtest1 DAMENG]$ cat dm.ini|grep ARCH_INIARCH_INI 1 #dmarch.ini[dmdbadwtest1 DAMENG]$[dmdbadwtest1 DAMENG]$ cat dmarch.ini[ARCHIVE_REALTIME]ARCH_TYPE REALTIMEARCH_DEST GRP2_RT_02[ARCHIVE_LOCAL]ARCH_TYPE LOCALARCH_DEST /dbarch/dmarch_newARCH_FILE_SIZE 128ARCH_SPACE_LIMIT 1024[dmdbadwtest1 bin]$ vi /dbdata/dmdata_new/DAMENG/dm.ini[dmdbadwtest1 bin]$ nohup ./dmserver /dbdata/dmdata_new/DAMENG/dm.ini [1] 120837[dmdbadwtest1 bin]$ nohup: ignoring input and appending output to ‘nohup.out’[dmdbadwtest1 bin]$ rlwrap ./dmrmandmrman V7RMAN backup database /dbdata/dmdata_new/DAMENG/dm.ini FULL TO BACKUP_FULL BACKUPSET /dbbak/dmbak_newbackup database /dbdata/dmdata_new/DAMENG/dm.ini FULL TO BACKUP_FULL BACKUPSET /dbbak/dmbak_newfile dm.key not found, use default license!checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[4].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[3].the database under system path [/dbdata/dmdata_new/DAMENG] is running.[-102]:服务器正在运行RMAN exitexittime used: 0.004(ms)[dmdbadwtest1 bin]$ kill 120837[dmdbadwtest1 bin]$[dmdbadwtest1 bin]$ kill 120837-bash: kill: (120837) - No such process[dmdbadwtest1 bin]$ rlwrap ./dmrmandmrman V7RMANbackup database /dbdata/dmdata_new/DAMENG/dm.ini FULL TO BACKUP_FULL BACKUPSET /dbbak/dmbak_newbackup database /dbdata/dmdata_new/DAMENG/dm.ini FULL TO BACKUP_FULL BACKUPSET /dbbak/dmbak_newfile dm.key not found, use default license!checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[4].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[3].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[2].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[1].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[0].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running, write dmrman info.EP[0] max_lsn: 47206BACKUP DATABASE [DAMENG],execute......CMD CHECK LSN......BACKUP DATABASE [DAMENG],collect dbf......CMD CHECK ......DBF BACKUP SUBS......total 2 packages processed...total 7 packages processed...total 8 packages processed...DBF BACKUP MAIN......BACKUPSET [/dbbak/dmbak_new] END, CODE [0]......META GENERATING......total 12 packages processed...total 12 packages processed!CMD END.CODE:[0]backup successfully!time used: 7007.838(ms)RMAN exitexittime used: 0.005(ms)[dmdbadwtest1 bin]$ ls -l /dbbak/dmbak_newtotal 15092-rw-r--r-- 1 dmdba dinstall 15374336 Jul 23 20:26 dmbak_new.bak-rw-r--r-- 1 dmdba dinstall 74240 Jul 23 20:26 dmbak_new.meta2.1.4 mal文件配置及mount启动mal文件配置MAL_INST_NAME数据库实例名用于mal内部通信MAL_INST_HOST数据库实例ip用于mal内部通信MAL_INST_PORT数据库实例port用于mal内部通信MAL_HOSTMAL-IPMAL_PORTMAL-PORT:用于数据库间传输redo同步数据MAL_DW_PORTMAL间相互通信判断状态DW_PORTdmwatcher守护进程通过此端口向数据库下发命令[dmdbadwtest1 bin]$ vi /dbdata/dmdata_new/DAMENG/dmmal.ini[dmdbadwtest1 bin]$ cat /dbdata/dmdata_new/DAMENG/dmmal.iniMAL_CHECK_INTERVAL 5MAL_CONN_FAIL_INTERVAL 5[MAL_INST1]MAL_INST_NAME GRP2_RT_01MAL_HOST 192.168.1.100MAL_PORT 61241MAL_INST_HOST 192.168.1.100MAL_INST_PORT 5237MAL_DW_PORT 52241[MAL_INST2]MAL_INST_NAME GRP2_RT_02MAL_HOST 192.168.1.101MAL_PORT 61242MAL_INST_HOST 192.168.1.101MAL_INST_PORT 5237MAL_DW_PORT 52242[dmdbadwtest1 bin]$ vi /dbdata/dmdata_new/DAMENG/dm.ini[dmdbadwtest1 bin]$ cat /dbdata/dmdata_new/DAMENG/dm.ini|grep -Ei alter_mode_stataus|mal_ini|enable_offline_check|instance_nameINSTANCE_NAME GRP2_RT_01 #Instance nameMAL_INI 1 #dmmal.ini[dmdbadwtest1 bin]$[dmdbadwtest1 bin]$ cat /dbdata/dmdata_new/DAMENG/dm.ini|grep -Ei alter_mode_status|mal_ini|enable_offline_check|instance_nameINSTANCE_NAME GRP2_RT_01 #Instance nameALTER_MODE_STATUS 1 #Whether to permit database user to alter database mode and status by SQLs, 2: yes, 1: yes when dmwatcher ERROR, 0: noMAL_INI 1 #dmmal.ini[dmdbadwtest1 bin]$[dmdbadwtest1 bin]$[dmdbadwtest1 bin]$ cat /dbdata/dmdata_new/DAMENG/dm.ini|grep -Ei alter_mode_status|mal_ini|enable_offline_ts|instance_nameINSTANCE_NAME GRP2_RT_01 #Instance nameALTER_MODE_STATUS 1 #Whether to permit database user to alter database mode and status by SQLs, 2: yes, 1: yes when dmwatcher ERROR, 0: noENABLE_OFFLINE_TS 2 #Whether tablespace can be offlineMAL_INI 1 #dmmal.ini启动主库到mount状态至主库状态[dmdbadwtest1 bin]$./dmserver /dbdata/dmdata_new/DAMENG/dm.ini mountfile dm.key not found, use default license!version info: developUse normal os_malloc instead of HugeTLBUse normal os_malloc instead of HugeTLBDM Database Server x64 V7 03117834163-20251014-296526-10003 startup...License will expire on 2026-10-14ckpt lsn: 56424ndct db load finishedndct fill fast pool finishednsvr_startup end.aud sys init success.aud rt sys init success.systables desc init success.ndct_db_load_info success.SYSTEM IS READY.mount启动并启动到主库模式[dmdbadwtest1 bin]$ ./disql SYSDBA/Dwtest_11:5237服务器[LOCALHOST:5237]:处于普通配置状态登录使用时间: 4.566(毫秒)disql V7SQLSQLsp_set_para_value(1,ALTER_MODE_STATUS,1);--使实例到可操作状态DMSQL 过程已成功完成已用时间: 3.620(毫秒). 执行号:1.SQLsp_set_oguid(453332);--指定数据库组idDMSQL 过程已成功完成已用时间: 1.870(毫秒). 执行号:2.SQLalter database primary;-- 启动数据库到主库操作已执行已用时间: 1.731(毫秒). 执行号:3.SQLsp_set_para_value(1,ALTER_MODE_STATUS,0);--使实例到不可操作状态DMSQL 过程已成功完成已用时间: 1.975(毫秒). 执行号:4.2.2 备库安装2.2.1 程序安装同主库操作2.1.12.2.2 实例初始化同主库操作2.1.22.2.3 配置归档及还原[dmdbadwtest2 DAMENG]$ cd ~/dmdbms/bin[dmdbadwtest2 bin]$ rlwrap ./dmrmandmrman V7RMANrestore database /dbdata/dmdata_new/DAMENG/dm.ini from backupset /dbbak/dmbak_newrestore database /dbdata/dmdata_new/DAMENG/dm.ini from backupset /dbbak/dmbak_newchecking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[4].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[3].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[2].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[1].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[0].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running, write dmrman info.RESTORE DATABASE CHECK......RESTORE DATABASE,dbf collect......RESTORE DATABASE,dbf refresh ......RESTORE BACKUPSET [/dbbak/dmbak_new] START......total 4 packages processed...RESTORE DATABASE,UPDATE ctl file......RESTORE DATABASE,REBUILD key file......RESTORE DATABASE,CHECK db info......RESTORE DATABASE,UPDATE db info......total 8 packages processed!CMD END.CODE:[0]restore successfully.time used: 10630.560(ms)RMANRMANrecover database /dbdata/dmdata_new/DAMENG/dm.ini from backupset /dbbak/dmbak_newrecover database /dbdata/dmdata_new/DAMENG/dm.ini from backupset /dbbak/dmbak_newchecking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[4].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[3].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[2].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[1].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[0].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running, write dmrman info.EP[0] max_lsn: 47206RESTORE RLOG CHECK......CMD END.CODE:[603],DESC:[备份集[/dbbak/dmbak_new]备份过程中未产生日志]备份集[/dbbak/dmbak_new]备份过程中未产生日志recover successfully!time used: 7006.175(ms)RMANRMANrecover database /dbdata/dmdata_new/DAMENG/dm.ini update db_magicrecover database /dbdata/dmdata_new/DAMENG/dm.ini update db_magicchecking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[4].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[3].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[2].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[1].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running...[0].checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running, write dmrman info.EP[0] max_lsn: 47206[-8305]:未执行还原操作禁止更新magic或者从备份集恢复RMAN2.2.4 mal文件配置及mount启动主备mal文件需要配置一致[dmdbadwtest2 DAMENG]$ cat dmmal.iniMAL_CHECK_INTERVAL 5MAL_CONN_FAIL_INTERVAL 5[MAL_INST1]MAL_INST_NAME GRP2_RT_01MAL_HOST 192.168.1.100MAL_PORT 61241MAL_INST_HOST 192.168.1.100MAL_INST_PORT 5237MAL_DW_PORT 52242[MAL_INST2]MAL_INST_NAME GRP2_RT_02MAL_HOST 192.168.1.101MAL_PORT 61242MAL_INST_HOST 192.168.1.101MAL_INST_PORT 5237MAL_DW_PORT 52241[dmdbadwtest2 DAMENG]$ cat dmarch.ini[ARCHIVE_REALTIME]ARCH_TYPE REALTIMEARCH_DEST GRP2_RT_01[ARCHIVE_LOCAL]ARCH_TYPE LOCALARCH_DEST /dbarch/dmarch_newARCH_FILE_SIZE 128ARCH_SPACE_LIMIT 1024mount启动并调整至备库模式[dmdbadwtest2 ~]$ cd dmdbms/bin[dmdbadwtest2 bin]$ ./disql SYSDBA/Dwtest_11:5237服务器[LOCALHOST:5237]:处于普通配置状态登录使用时间: 6.631(毫秒)disql V7SQL sp_set_para_value(1,ALTER_MODE_STATUS,1);DMSQL 过程已成功完成已用时间: 12.583(毫秒). 执行号:1.SQL sp_set_oguid(453332);DMSQL 过程已成功完成已用时间: 4.084(毫秒). 执行号:2.SQL alter database standby;操作已执行已用时间: 1.996(毫秒). 执行号:0.SQL sp_set_para_value(1,ALTER_MODE_STATUS,0);DMSQL 过程已成功完成已用时间: 1.817(毫秒). 执行号:3.SQLSQL exit[dmdbadwtest2 bin]$ ./disql SYSDBA/Dwtest_11:5237服务器[LOCALHOST:5237]:处于备库配置状态登录使用时间: 2.401(毫秒)disql V7SQL2.3 集群组建2.3.1 守护进程配置并初始化成控制文件主备库均配置[dmdbadwtest2 ~]$ cd /dbdata/dmdata_new/DAMENG/[dmdbadwtest2 DAMENG]$ vi dmwatcher.ini[dmdbadwtest2 DAMENG]$ cat dmwatcher.ini[GRP2]DW_TYPE GLOBALDW_MODE AUTODW_ERROR_TIME 10INST_RECOVER_TIME 60INST_ERROR_TIME 10INST_OGUID 453332INST_INI /dbdata/dmdata_new/DAMENG/dm.iniINST_AUTO_RESTART 1INST_STARTUP_CMD /home/dmdba/dm/dmdbms/bin/dmserverd_new startRLOG_SEND_THRESHOLD 0RLOG_APPLY_THRESHOLD 0DW_FAILOVER_FORCE 1INST_SERVICE_IP_CHECK 1初始化成控制文件[dmdbadwtest1 bin]$./dmctlcvt TYPE3 SRC/dbdata/dmdata_new/DAMENG/dmwatcher.ini DEST/dbdata/dmdata_new/DAMENGDMCTLCVT V7convert txt to ctl success![dmdbadwtest1 bin]$cp /dbdata/dmdata_new/DAMENG/GRP2/dmwatcher.ctl/dbdata/dmdata_new/DAMENG*主库生产配置文件后scp到备库*[dmdbadwtest1 DAMENG]$scp /dbdata/dmdata_new/DAMENG/dmwatcher.ctl 192.168.1.101:/dbdata/dmdata_new/DAMENG/配置启动脚本[dmdbadwtest1 bin]$ cp service_template/DmWatcherService ./dmwatcherd_new修改配置文件位置保存后启动[rootdwtest1 bin]# ./dmwatcherd_new startStarting dmwatcherd_new: Last login: Sat Jul 25 19:00:24 PDT 2026 on pts/2[ OK ]2.3.2 查看集群状态配置非确认监视器[dmdbadwtest1 bin]$ vi dmmonitor_new.ini[dmdbadwtest1 bin]$ cat dmmonitor_new.iniMON_DW_CONFIRM 0 #非确认监视器模式MON_LOG_PATH /home/dmdba/dm/dmdbms_v7/log #监视器日志文件存放路径MON_LOG_INTERVAL 60 #每隔 60s 定时记录系统信息到日志文件MON_LOG_FILE_SIZE 32 #每个日志文件最大 32MMON_LOG_SPACE_LIMIT 0 #不限定日志文件总占用空间[GRP2]MON_INST_OGUID 453332 #组 GRP1 的唯一 OGUID 值#以下配置为监视器到组 GRP1 的守护进程的连接信息以“IP:PORT”的形式配置#IP 对应 dmmal.ini 中的 MAL_HOSTPORT 对应 dmmal.ini 中的 MAL_DW_PORTMON_DW_IP 192.168.1.100:52241 #MAL_HOST和MAL_DW_PORTMON_DW_IP 192.168.1.101:52242[dmdbadwtest1 bin]$./dmmonitor dmmonitor_new.ini三、功能验证3.1 确认监视器安装3.2 手动切换登录监视器后执行switchover 命令可以看到主备切换达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台