注册
达梦单机双实例数据守护主备集群部署
技术分享/ 文章详情 /

达梦单机双实例数据守护主备集群部署

Kira 2026/07/31 167 0 0

DM8单机双实例数据守护主备集群部署

目录

  • 一、实验概述
  • 二、集群规划
  • 三、主库配置
  • 四、备库配置
  • 五、设置主备角色并启动集群
  • 六、配置监视器并检查状态
  • 七、业务同步验证
  • 八、集群启停命令
  • 九、注意事项与总结

一、实验概述

本报告记录在一台主机上部署DM8单机双实例数据守护主备集群的完整过程。集群采用同一 IP、不同端口的方式区分主库与备库实例,完成主库、备库、守护进程、监视器以及同步验证的配置。

二、集群规划

项目 主库 备库
IP 192.168.200.192 192.168.200.192
实例名 GRP1_RT_01 GRP1_RT_02
实例端口 5236 5237
MAL 端口 5336 5337
MAL 守护进程端口 5436 5437
守护进程端口 5536 5537
OGUID 45331 45331
守护组 GRP1 GRP1
数据目录 /opt/dmdbms/data/DAMENG /opt/dmdbms/data_standby/DAMENG

三、主库配置

3.1 初始化主库实例

以 dmdba 用户执行,初始化主库实例 GRP1_RT_01。

/opt/dmdbms/dmhome/bin/dminit \ PATH=/opt/dmdbms/data/ \ INSTANCE_NAME=GRP1_RT_01 \ PAGE_SIZE=32 \ EXTENT_SIZE=32 \ LOG_SIZE=2048 \ SYSDBA_PWD=******** \ SYSAUDITOR_PWD=********

3.2 启动主库实例

使用 dmserver 前台启动主库实例。

/opt/dmdbms/dmhome/bin/dmserver /opt/dmdbms/data/DAMENG/dm.ini

3.3 开启归档

连接主库 5236 端口,切换到 MOUNT 状态后开启归档,再重新 OPEN 数据库。

/opt/dmdbms/dmhome/bin/disql SYSDBA/********@127.0.0.1:5236 ALTER DATABASE MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE ADD ARCHIVELOG 'DEST=/opt/dmdbms/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200'; ALTER DATABASE OPEN;

image.png

3.4 备份主库数据

在主库执行数据库备份,备份集路径为 /opt/dmdbms/data/DAMENG/bak/BACKUP_FILE。

BACKUP DATABASE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE';

3.5 修改主库 dm.ini 参数

连接主库后设置数据守护相关参数。

SP_SET_PARA_VALUE(2, 'PORT_NUM', 5236); 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, 'RLOG_SEND_APPLY_MON', 64);

3.6 配置主库 dmarch.ini

关闭前台实例后,编辑主库归档配置文件。

vi /opt/dmdbms/data/DAMENG/dmarch.ini ARCH_WAIT_APPLY = 0 # 0:高性能;1:事务一致 [ARCHIVE_LOCAL] ARCH_TYPE = LOCAL ARCH_DEST = /opt/dmdbms/data/DAMENG/arch/ ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 51200 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = GRP1_RT_02

3.7 创建主库 dmmal.ini

创建 MAL 配置文件,单机双实例环境下两个实例必须使用不同端口。

vi /opt/dmdbms/data/DAMENG/dmmal.ini MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间 MAL_TEMP_PATH = /opt/dmdbms/data/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 = GRP1_RT_01 #实例名,和 dm.ini 的 INSTANCE_NAME 一致 MAL_HOST = 192.168.200.192 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.200.192 #实例的对外服务 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 = GRP1_RT_02 MAL_HOST = 192.168.200.192 MAL_PORT = 5337 MAL_INST_HOST = 192.168.200.192 MAL_INST_PORT = 5237 MAL_DW_PORT = 5437 MAL_INST_DW_PORT = 5537

3.8 创建主库 dmwatcher.ini

创建主库守护进程配置文件。

vi /opt/dmdbms/data/DAMENG/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 = /opt/dmdbms/data/DAMENG/dm.ini #dm.ini 文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /opt/dmdbms/dmhome/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

3.9 注册主库服务

切换 root 用户,分别注册主库实例服务和主库守护进程服务。

/opt/dmdbms/dmhome/script/root/dm_service_installer.sh \ -t dmserver \ -p GRP1_RT_01 \ -dm_ini /opt/dmdbms/data/DAMENG/dm.ini \ -m mount /opt/dmdbms/dmhome/script/root/dm_service_installer.sh \ -t dmwatcher \ -p GRP1_RT_01 \ -watcher_ini /opt/dmdbms/data/DAMENG/dmwatcher.ini

四、备库配置

4.1 初始化备库实例

以 dmdba 用户执行,初始化备库实例 GRP1_RT_02。

/opt/dmdbms/dmhome/bin/dminit \ PATH=/opt/dmdbms/data_standby/ \ INSTANCE_NAME=GRP1_RT_02 \ PAGE_SIZE=32 \ EXTENT_SIZE=32 \ LOG_SIZE=2048 \ SYSDBA_PWD='********' \ SYSAUDITOR_PWD='********'

image.png

4.2 恢复备库数据

使用主库备份集恢复备库,并更新 DB_MAGIC。

/opt/dmdbms/dmhome/bin/dmrman CTLSTMT="RESTORE DATABASE '/opt/dmdbms/data_standby/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE'" /opt/dmdbms/dmhome/bin/dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data_standby/DAMENG/dm.ini' FOR STANDBY FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE'" /opt/dmdbms/dmhome/bin/dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data_standby/DAMENG/dm.ini' UPDATE DB_MAGIC"

image.png

4.3 配置备库 dmarch.ini

创建备库本地归档目录,并配置备库归档文件。

mkdir -p /opt/dmdbms/data_standby/DAMENG/arch vi /opt/dmdbms/data_standby/DAMENG/dmarch.ini ARCH_WAIT_APPLY = 0 [ARCHIVE_LOCAL] ARCH_TYPE = LOCAL ARCH_DEST = /opt/dmdbms/data_standby/DAMENG/arch/ ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 51200 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = GRP1_RT_01

4.4 配置备库 dm.ini

修改备库 dm.ini 中的实例名、端口和数据守护相关参数。

INSTANCE_NAME = GRP1_RT_02 PORT_NUM = 5237 DW_INACTIVE_INTERVAL = 60 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 MAL_INI = 1 ARCH_INI = 1 RLOG_SEND_APPLY_MON = 64

4.5 配置备库 dmmal.ini

同一 MAL 环境中的 dmmal.ini 保持一致,直接复制主库文件到备库目录。

cp -f \ /opt/dmdbms/data/DAMENG/dmmal.ini \ /opt/dmdbms/data_standby/DAMENG/dmmal.ini

4.6 配置备库 dmwatcher.ini

创建备库守护进程配置文件。注意备库的 INST_INI 需要指向备库 dm.ini。

vi /opt/dmdbms/data_standby/DAMENG/dmwatcher.ini [GRP1] DW_TYPE = GLOBAL DW_MODE = AUTO DW_ERROR_TIME = 20 INST_ERROR_TIME = 20 INST_RECOVER_TIME = 60 INST_OGUID = 45331 INST_INI = /opt/dmdbms/data_standby/DAMENG/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = /opt/dmdbms/dmhome/bin/dmserver RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0

4.7 注册备库服务

切换 root 用户,分别注册备库实例服务和备库守护进程服务。

/opt/dmdbms/dmhome/script/root/dm_service_installer.sh \ -t dmserver \ -p GRP1_RT_02 \ -dm_ini /opt/dmdbms/data_standby/DAMENG/dm.ini \ -m mount /opt/dmdbms/dmhome/script/root/dm_service_installer.sh \ -t dmwatcher \ -p GRP1_RT_02 \ -watcher_ini /opt/dmdbms/data_standby/DAMENG/dmwatcher.ini

image.png

image.png

4.8 检查服务文件

检查主库、备库实例服务与守护进程服务是否均已生成。

ls -l \ /opt/dmdbms/dmhome/bin/DmServiceGRP1_RT_01 \ /opt/dmdbms/dmhome/bin/DmServiceGRP1_RT_02 \ /opt/dmdbms/dmhome/bin/DmWatcherServiceGRP1_RT_01 \ /opt/dmdbms/dmhome/bin/DmWatcherServiceGRP1_RT_02

image.png

五、设置主备角色并启动集群

5.1 启动主库并设置 PRIMARY

启动主库实例服务,连接主库 5236 端口,将主库设置为 PRIMARY。

/opt/dmdbms/dmhome/bin/DmServiceGRP1_RT_01 start /opt/dmdbms/dmhome/bin/disql SYSDBA/********@127.0.0.1:5236
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SP_SET_OGUID(45331); ALTER DATABASE PRIMARY; SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

5.2 启动备库并设置 STANDBY

启动备库实例服务,连接备库 5237 端口,将备库设置为 STANDBY。

/opt/dmdbms/dmhome/bin/DmServiceGRP1_RT_02 start /opt/dmdbms/dmhome/bin/disql SYSDBA/********@127.0.0.1:5237
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SP_SET_OGUID(45331); ALTER DATABASE STANDBY; SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

image.png

5.3 启动两个守护进程

分别启动主库和备库的 watcher 服务。

/opt/dmdbms/dmhome/bin/DmWatcherServiceGRP1_RT_01 start /opt/dmdbms/dmhome/bin/DmWatcherServiceGRP1_RT_02 start

image.png

六、配置监视器并检查状态

6.1 配置本机非确认监视器

编辑 dmmonitor_manual.ini,配置非确认监视器。

vi /opt/dmdbms/dmhome/bin/dmmonitor_manual.ini MON_DW_CONFIRM = 0 MON_LOG_PATH = /opt/dmdbms/data/monitor_log MON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 512 MON_LOG_SPACE_LIMIT = 2048 [GRP1] MON_INST_OGUID = 45331 MON_DW_IP = 192.168.200.192:5436 MON_DW_IP = 192.168.200.192:5437

6.2 启动监视器

启动前台监视器。

/opt/dmdbms/dmhome/bin/dmmonitor /opt/dmdbms/dmhome/bin/dmmonitor_manual.ini

6.3 查看集群状态

进入监视器后执行以下命令。正常情况下应看到主库为 PRIMARY、备库为 STANDBY,并且两个节点状态正常。

show global info
tip

正常状态:
GRP1_RT_01  PRIMARY
GRP1_RT_02  STANDBY

七、业务同步验证

7.1 在主库建表并插入数据

连接主库,在主库创建测试表并插入数据。

/opt/dmdbms/dmhome/bin/disql SYSDBA/********@127.0.0.1:5236 CREATE TABLE T_DW_TEST(ID INT, NAME VARCHAR(50)); INSERT INTO T_DW_TEST VALUES(1, 'PRIMARY_TO_STANDBY'); COMMIT; SELECT * FROM T_DW_TEST; EXIT;

image.png

7.2 在备库查询同步结果

连接备库,查询主库写入的数据。

/opt/dmdbms/dmhome/bin/disql SYSDBA/********@127.0.0.1:5237 SELECT * FROM T_DW_TEST; EXIT; 查询结果: 1 PRIMARY_TO_STANDBY

image.png

7.3 验证结论

如果备库能够查询到主库写入的数据,说明业务数据同步正常。

八、集群启停命令

8.1 正常启动

整套环境配置完成后,后续启动集群不需要再次执行 SP_SET_OGUID 和 ALTER DATABASE PRIMARY/STANDBY。直接启动两个 watcher 即可。

/opt/dmdbms/dmhome/bin/DmWatcherServiceGRP1_RT_01 start /opt/dmdbms/dmhome/bin/DmWatcherServiceGRP1_RT_02 start

8.2 正常停止

停止时建议先停止 watcher,再停止数据库服务。

/opt/dmdbms/dmhome/bin/DmWatcherServiceGRP1_RT_01 stop /opt/dmdbms/dmhome/bin/DmWatcherServiceGRP1_RT_02 stop /opt/dmdbms/dmhome/bin/DmServiceGRP1_RT_01 stop /opt/dmdbms/dmhome/bin/DmServiceGRP1_RT_02 stop

九、注意事项与总结

9.1 非确认监视器说明

当前监视器配置为 MON_DW_CONFIRM = 0,即非确认监视器。它可以查看状态、执行手工切换,但在 AUTO 模式下不能执行自动接管。对于单机双实例实验环境,该配置可以满足学习和验证需要。

9.2 单机双实例说明

本次实验主库和备库部署在同一台主机,通过不同端口区分实例。该方式适合学习、验证和演示数据守护流程,但不具备物理主机级高可用能力。

9.3 实验总结

本次操作完成了主库初始化、归档开启、备份、备库恢复、MAL 配置、守护进程配置、监视器配置以及同步验证。最终监视器状态显示主库为 PRIMARY、备库为 STANDBY,实时归档状态为 VALID,说明数据守护主备集群部署成功。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服