一、介绍参照文章:
二、环境准备
- 数据库环境信息
| 主机名 | 主库 | 备库 | 监视器 |
|---|---|---|---|
| 操作系统 | CentOS 7.9 | CentOS 7.9 | CentOS 7.9 |
| MAL_INST_HOST:业务 IP | 192.168.1.10 | 192.168.1.11 | 192.168.1.12 |
| MAL_HOST:心跳 IP | 192.168.2.10 | 192.168.2.11 | 192.168.2.12 |
| 实例名 | Primary | Standby | Monitor |
| 库名 | twodb | twodb | twodb |
| 实例端口 | 5236 | 5236 | - |
| MAL 端口 | 5336 | 5336 | - |
| MAL_DW_PORT:MAL 守护进程端口 | 5436 | 5436 | - |
| 守护进程端口 | 5536 | 5536 | - |
| OGUID | 45331 | 45331 | - |
| 守护组 | GRP1 | GRP1 | - |
| 安装目录 | /md8/dmdbms | /md8/dmdbms | /dm8/dmdbms |
| 实例目录 | /md8/dmdbms/data/ | /md8/dmdbms/data/ | - |
| 归档上限 | 51200 | 51200 | - |
- 主、备、监控服务器需提前安装DM软件,无需安装数据,参考:国产数据库学习-达梦篇DM8-初装安装软件部份
- 关闭防火墙
[root@~]# systemctl stop firewalld
##关闭开机自启
[root@~]# systemctl disable firewalld
-
主备集群架构图

-
切换模式说明
| 故障切换方式 | dmarch | dmwatcher | dmmonitor | 监视器要求 |
|---|---|---|---|---|
| 故障手动切换 | ARCH_WAIT_APPLY=0 | DW_MODE=MANUAL | MON_DW_CONFIRM=0 | 1、配置手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。 |
| 故障自动切换 | ARCH_WAIT_APPLY= 0 | DW_MODE=AUTO | MON_DW_CONFIRM=1 | 1、配置手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。2、配置自动切换:在确认监视器上(非集群节点),存放确认监视器配置文件,并注册后台自启服务。 |
- ARCH_WAIT_APPLY 参数,设置为 0:高性能模式;设置为 1:事务一致模式。
- 故障手动切换情境下 ARCH_WAIT_APPLY 只能为 0。故障自动切换情境下 ARCH_WAIT_APPLY 可以为 0,也可以为 1。
- ARCH_WAIT_APPLY 参数设置的判断依据为业务是否要查询备机最新数据。如果需要,则配置为 1(较大性能衰减);如果不需要,则配置为 0。
三、实时主备搭建
3.1、配置Primary
3.1.1 初始化实例并备份数据
- 初始化实例
[dmdba@localhost tool]$ dminit PATH=/dm8/dmdbms/data/ DB_NAME=TWODB INSTANCE_NAME=MYINSTANCE PORT_NUM=5236 INSTANCE_NAME=Primary PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=OracleTwoDm8! SYSAUDITOR_PWD=OracleTwoDm8!
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire in 14 day(s) on 2025-10-24
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm8/dmdbms/data/TWODB/TWODB01.log
log file path: /dm8/dmdbms/data/TWODB/TWODB02.log
write to dir [/dm8/dmdbms/data/TWODB].
create dm database success. 2025-10-10 19:43:44
SYSDBA_PWD 和 SYSAUDITOR_PWD 为配置数据库 SYSDBA 用户和 SYSAUDITOR 用户的登录密码
- 启动前台服务
[dmdba@localhost TWODB]$ dmserver /dm8/dmdbms/data/TWODB/dm.ini MOUNT
file dm.key not found, use default license!
version info: develop
DM Database Server 64 V8 03134284094-20231214-211963-20067 startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire in 14 day(s) on 2025-10-24
......
nsvr_process_before_open success.
SYSTEM IS READY
- 另启窗口会话:开启归档
[dmdba@localhost ~]$ disql SYSDBA/'OracleTwoDm8!'@192.168.1.10:5236
服务器[192.168.1.10:5236]:处于普通打开状态
登录使用时间 : 2.786(ms)
disql V8
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/dmdbms/data/TWODB/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
SQL> ALTER DATABASE OPEN;
- 备份数据
SQL> BACKUP DATABASE BACKUPSET '/dm8/dmdbms/data/TWODB/bak/20251011_BACKUP';
操作已执行
已用时间: 00:00:03.025. 执行号:60702.
- 修改 dm.ini
-- 修改OGUID:45331
-- OGUID(Object Global Unique Identifier)是数据库对象的全局唯一标识符,通常用于数据守护集群等场景中标识数据库实例
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> SP_SET_OGUID(45331);
SQL> ALTER DATABASE PRIMARY;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
SQL> SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
-- PORT_NUM参数用于配置达梦数据库的监听端口号
SQL> SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
-- DW_INACTIVE_INTERVAL:守护进程消息接收超时参数,单位为秒
-- 作用:控制守护进程间的通信检测机制,影响主备切换的响应速度
-- 典型值:60秒是常见配置值,平衡了响应速度和网络波动容忍度
-- 应用场景:主要用于数据守护集群配置中,确保主备库间通信的可靠性
SQL> SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
-- 作用:禁止通过SQL语句(如ALTER DATABASE)直接修改数据库模式、状态和OGUID
-- 安全增强:防止意外或恶意修改导致集群脑裂或数据不一致
-- 维护模式:需要维护时,必须先将参数临时改为1才能进行模式/状态修改
-- 集群一致性:确保所有配置变更通过守护进程(dmwatcher)统一管理
SQL> SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
-- 操作限制:完全禁止备库执行表空间离线(OFFLINE)操作
-- 安全增强:确保备库表空间始终与主库保持一致状态
-- 集群一致性:防止因备库表空间离线导致的数据同步问题
-- 维护模式:需要维护时,必须先将参数临时改为0或1才能进行表空间管理操作
SQL> SP_SET_PARA_VALUE (2,'MAL_INI',1);
-- 作用:启用MAL系统是搭建数据守护集群、实现DBLink等高级功能的必要前提
-- 启用达梦数据库的消息访问层系统,允许实例间通信
-- 当MAL_INI=1时,数据库会读取同目录下的dmmal.ini配置文件
-- 为数据守护、读写分离集群等提供底层通信支持
-- 集群环境:搭建数据守护或读写分离集群时必须设置为1
-- 单机环境:若无需集群功能可保持默认值0以减少资源占用
SQL> SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
-- 守护系统中监控主备库日志同步状态的关键参数,主要控制日志发送和应用信息的统计范围
-- 日志监控:统计最近N次主库发送Redo日志到备库的情况
-- 性能评估:用于评估主备库之间的同步性能和稳定性
-- 故障诊断:为数据守护系统提供日志传输异常的诊断依据
-- 参数联动:需配合MAL_INI=1和ARCH_INI=1才能完全生效
-- 典型值范围:通常设置为32-128之间,64是平衡性能与监控精度的推荐值
注:scope参数说明:
0:仅在内存中修改(重启后失效)
1:同时在内存和配置文件中修改
2:仅在配置文件中修改(重启后生效)
- 关闭前台实例服务 Ctrl+C
^CServer is stopping...
listener closed and all sessions disconnected
adjust undo_retention & wakeup purge thread...full check point starting...
generate force checkpoint, rlog free space[4294955008], used space[4096]
checkpoint begin, used_space[4096], free_space[4294955008]...
full check point end.
shutdown audit subsystem...OK
shutdown schedule subsystem...OK
shutdown timer successfully.
pre-shutdown MAL subsystem...OK
shutdown worker threads subsystem...OK
shutdown logic log subsystem...OK
shutdown sequence cache subsystem...OK
wait for mtsk link worker to exit..OK
shutdown mpp session subsystem...OK
wait for rapply is all over... OK
rapply worker threads exit successfully.
pre ending task & worker threads...OK
shutdown dblink subsystem...OK
shutdown local parallel threads pool successfully.
shutdown pthd_pools...OK
shutdown session subsystem...shutdown aux session subsystem...OK
shutdown rollback segments purging subsystem...OK
shutdown transaction subsystem...OK
shutdown locking subsystem...OK
shutdown dbms_lock subsystem...OK
ending tsk and worker threads...OK
ckpt2_exec_immediately begin.
checkpoint begin, used_space[0], free_space[4294959104]...
checkpoint end, 0 pages flushed, used_space[8192], free_space[4294950912].
checkpoint begin, used_space[8192], free_space[4294950912]...
checkpoint begin, used_space[0], free_space[4294959104]...
shutdown archive subsystem...OK
shutdown redo log subsystem...OK
shutdown MAL subsystem...OK
shutdown message compress subsystem successfully.
shutdown task subsystem...OK
shutdown trace subsystem...OK
shutdown svr_log subsystem...OK
shutdown plan cache subsystem...OK
shutdown database dictionary subsystem...OK
shutdown file subsystem...OK
shutdown mac cache subsystem...OK
shutdown dynamic login cache subsystem...OK
shutdown ifun/bifun/sfun/afun cache subsystem...OK
shutdown crypt subsystem...OK
shutdown pipe subsystem...OK
shutdown compress component...OK
shutdown slave redo subsystem...OK
shutdown kernel buffer subsystem...OK
shutdown SQL capture subsystem...OK
shutdown control file system...OK
shutdown dtype subsystem...OK
shutdown huge buffer and memory pools...OK
close lsnr socket
DM Database Server shutdown successfully.
3.1.2 修改 dmarch.ini
[dmdba@localhost ~]$ vi /dm8/dmdbms/data/TWODB/dmarch.ini
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/dmdbms/data/TWODB/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = Standby #实时归档目标实例名
3.1.3 创建 dmmal.ini
[dmdba@localhost ~]$ vi /dm8/dmdbms/data/TWODB/dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /dm8/dmdbms/data/TWODB/malpath/ #临时文件目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = Primary #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.2.10 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.10 #实例的对外服务 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 = Standby
MAL_HOST = 192.168.2.11
MAL_PORT = 5336
MAL_INST_HOST = 192.168.1.11
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
3.1.4 创建 dmwatcher.ini
[dmdba@localhost ~]$ vi /dm8/dmdbms/data/TWODB/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /dm8/dmdbms/data/TWODB/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
3.1.5 拷贝备份文件
##拷贝备份文件到 Standby
[dmdba@localhost ~]$ scp -r /dm8/dmdbms/data/TWODB/bak/20251011_BACKUP dmdba@192.168.1.11:/dm8/data/TWODB/bak/
dmdba@192.168.1.11's password:
20251011_BACKUP.bak 100% 24MB 70.0MB/s 00:00
20251011_BACKUP_1.bak 100% 65KB 18.6MB/s 00:00
20251011_BACKUP.meta 100% 106KB 32.3MB/s 00:00
3.1.6 注册服务
[root@localhost ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmserver -p Primary -dm_ini /dm8/dmdbms/data/TWODB/dm.ini -m mount
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicePrimary.service to /usr/lib/systemd/system/DmServicePrimary.service.
创建服务(DmServicePrimary)完成
[root@localhost ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/dmdbms/data/TWODB/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service to /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成
- 若要删除自启,可利用如下方式:
[root@~]# /dm8/dmdbms/script/root/dm_service_uninstaller.sh -n DmServicePrimary
[root@~]# /dm8/dmdbms/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher
3.2、配置Standby
3.2.1 初始化实例
[dmdba@localhost bak]$ dminit PATH=/dm8/dmdbms/data/ DB_NAME=TWODB INSTANCE_NAME=MYINSTANCE PORT_NUM=5236 INSTANCE_NAME=Standby PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=OracleTwoDm8! SYSAUDITOR_PWD=OracleTwoDm8!
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire in 14 day(s) on 2025-10-25
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm8/dmdbms/data/TWODB/TWODB01.log
log file path: /dm8/dmdbms/data/TWODB/TWODB02.log
write to dir [/dm8/dmdbms/data/TWODB].
create dm database success. 2025-10-11 00:40:06
3.2.2 恢复数据
[dmdba@localhost bak]$ dmrman CTLSTMT="RESTORE DATABASE '/dm8/dmdbms/data/TWODB/dm.ini' FROM BACKUPSET '/dm8/data/TWODB/bak/20251011_BACKUP'"
dmrman V8
RESTORE DATABASE '/dm8/dmdbms/data/TWODB/dm.ini' FROM BACKUPSET '/dm8/data/TWODB/bak/20251011_BACKUP'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.534
[dmdba@localhost bak]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdbms/data/TWODB/dm.ini' FROM BACKUPSET '/dm8/data/TWODB/bak/20251011_BACKUP'"
dmrman V8
RECOVER DATABASE '/dm8/dmdbms/data/TWODB/dm.ini' FROM BACKUPSET '/dm8/data/TWODB/bak/20251011_BACKUP'
file dm.key not found, use default license!
Database mode = 2, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[39677], file_lsn[39677]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:02.490
[dmdba@localhost bak]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdbms/data/TWODB/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/dmdbms/data/TWODB/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 2, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[39895], file_lsn[39895]
recover successfully!
time used: 00:00:01.051
3.2.3 配置:dmarch.ini
[dmdba@localhost TWODB]$ vim /dm8/dmdbms/data/TWODB/dmarch.ini
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/dmdbms/data/TWODB/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = Primary #实时归档目标实例名
3.2.4 配置:dm.ini
[dmdba@localhost TWODB]$ vim /dm8/dmdbms/data/TWODB/dm.ini
#instance name
INSTANCE_NAME = Standby
#database
PORT_NUM = 5236
#data watch
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
#configuration file
MAL_INI = 1
ARCH_INI = 1
#redo log
RLOG_SEND_APPLY_MON = 64
3.2.5 配置 dmmal.ini 和 dmwatcher.ini
- 将Primary 的参数复制到Standby服务器即可
[dmdba@localhost ~]$ scp /dm8/dmdbms/data/TWODB/dmmal.ini 192.168.1.11:/dm8/dmdbms/data/TWODB/
dmdba@192.168.1.11's password:
dmmal.ini 100% 735 264.1KB/s 00:00
[dmdba@localhost ~]$ scp /dm8/dmdbms/data/TWODB/dmwatcher.ini 192.168.1.11:/dm8/dmdbms/data/TWODB/
dmdba@192.168.1.11's password:
dmwatcher.ini
3.2.6 注册服务
[root@localhost dmdbms]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmserver -p Standby -dm_ini /dm8/dmdbms/data/TWODB/dm.ini -m mount
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceStandby.service to /usr/lib/systemd/system/DmServiceStandby.service.
创建服务(DmServiceStandby)完成
[root@localhost dmdbms]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/dmdbms/data/TWODB/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service to /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成
- 若要删除自启,可利用如下方式:
[root@~]# /dm8/dmdbms/script/root/dm_service_uninstaller.sh -n DmServiceStandby
[root@~]# /dm8/dmdbms/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher
3.2.7 修改备库OGUID及备库状态
# 关闭守护进程
[dmdba@localhost ~]$ /dm8/dmdbms/bin/DmWatcherServiceWatcher stop
Stopping DmWatcherServiceWatcher: [ OK ]
# 关闭数据库
[dmdba@localhost ~]$ /dm8/dmdbms/bin/DmServiceStandby stop
Stopping DmServiceStandby: [ OK ]
# 启库
[dmdba@localhost ~]$ /dm8/dmdbms/bin/DmServiceStandby start
Starting DmServiceStandby: [ OK ]
# 登录
[dmdba@localhost ~]$ disql sysdba/'OracleTwoDm8!'
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间 : 10.271(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> SP_SET_OGUID(45331);
SQL> ALTER DATABASE STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
# 重启备库
# 关库
[dmdba@localhost ~]$ /dm8/dmdbms/bin/DmWatcherServiceWatcher stop
Stopping DmWatcherServiceWatcher: [ OK ]
[dmdba@localhost ~]$ /dm8/dmdbms/bin/DmServiceStandby stop
Stopping DmServiceStandby: [ OK ]
# 启库-启动防守进程会顺带启库
[dmdba@localhost ~]$ /dm8/dmdbms/bin/DmWatcherServiceWatcher start
Stopping DmWatcherServiceWatcher: [ OK ]
# 登录数据库
[dmdba@localhost ~]$ disql sysdba/'OracleTwoDm8!'
服务器[LOCALHOST:5236]:处于备库配置状态
登录使用时间 : 3.738(ms)
disql V8
3.3、配置监控器-Monitor
监视器:存放确认监视器配置文件,并注册后台自启服务。
3.3.1 创建 dmmonitor.ini
[dmdba@localhost ~]$ vim /dm8/dmdbms/bin/dmmonitor_auto.ini
MON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /dm8/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.2.10:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.2.11:5436 # 备库
配置非确认监视器:集群各节点的 bin 目录中,存放非确认监视器配置文件。
在配置监视器时,一般配置好确认监视器后,建议再配置一个非确认监视器的配置文件,在主备发生切换时,可以通过前台的方式启动非确认监视器进行手动切换。非确认监视器是通过将监视器配置文件中 MON_DW_CONFIRM 参数值修改为 0 来实现,示例如下:
[dmdba@~]$ vi /opt/dmdbms/bin/dmmonitor_manual.ini
MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.2.10:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.2.11:5436 # 备库
3.3.2 注册服务
[root@localhost ~]# /dm8/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dm8/dmdbms/bin/dmmonitor_auto.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServiceMonitor.service to /usr/lib/systemd/system/DmMonitorServiceMonitor.service.
创建服务(DmMonitorServiceMonitor)完成
非确认监视器无需注册服务。
若要删除自启服务,可利用如下方式:
[root@localhost ~]#/dm8/dmdbms/script/root/dm_service_uninstaller.sh -n DmMonitorServiceMonitor
3.3.3 查看集群状态
[dmdba@localhost ~]$ dmmonitor path='/dm8/dmdbms/bin/dmmonitor_auto.ini'
[monitor] 2025-10-13 19:24:45: DMMONITOR[4.0] V8
[monitor] 2025-10-13 19:24:46: DMMONITOR[4.0] IS READY.
[monitor] 2025-10-13 19:29:55: 收到守护进程(STANDBY)消息
[monitor] 2025-10-13 19:29:55: 守护进程(PRIMARY)状态切换 [STARTUP-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2025-10-13 19:29:55 OPEN OK PRIMARY OPEN PRIMARY VALID 5 40935 40935
[monitor] 2025-10-13 19:29:55: 守护进程(STANDBY)状态切换 [STARTUP-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2025-10-13 19:29:55 OPEN OK STANDBY OPEN STANDBY VALID 5 40935 40935
show
2025-10-13 19:30:06
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 45331 TRUE AUTO FALSE
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.2.10 5436 2025-10-13 19:30:05 GLOBAL VALID OPEN PRIMARY OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.1.10 5236 OK PRIMARY OPEN PRIMARY 0 0 REALTIME VALID 4898 40935 4898 40935 NONE
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.2.11 5436 2025-10-13 19:30:05 GLOBAL VALID OPEN STANDBY OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.1.11 5236 OK STANDBY OPEN STANDBY 0 0 REALTIME VALID 4898 40935 4898 40935 NONE
DATABASE(STANDBY) APPLY INFO FROM (PRIMARY), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4898, 4898, 4898], (RLSN, SLSN, KLSN)[40935, 40935, 40935], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (40935)
- 注:show:关注:flsn(已经收到) 和clsn(已经同步)
四、问题记录
1、主备全部mount 无法open
- 解决:关闭防火墙
2、监控器报错
[monitor] 2025-10-13 19:24:46: dmmonitor(mid:610401318) create link to dmwatcher(192.168.2.10:5436) error, code=-9402, please check configuration!!! [monitor] 2025-10-13 19:24:46: dmmonitor(mid:610401318) create link to dmwatcher(192.168.2.10:5436) error, code=-6010, oguid or group_name mismatch, please check configuration!!! [monitor] 2025-10-13 19:24:46: dmmonitor(mid:610401318) create link to dmwatcher(192.168.2.11:5436) error, code=-9402, please check configuration!!! [monitor] 2025-10-13 19:24:46: dmmonitor(mid:610401318) create link to dmwatcher(192.168.2.11:5436) error, code=-6010, oguid or group_name mismatch, please check configuration!!! [monitor] 2025-10-13 19:24:47: dmmonitor(mid:610401318) create link to dmwatcher(192.168.2.10:5436) error, code=-6010, oguid or group_name mismatch, please check configuration!!!
解决:
- 主备配置文件:dmwatcher.ini错误

- 监控器配置

五、参考引用: 达梦技术文档
欢迎赞赏支持或留言指正

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




