注册
主备守护集群搭建学习流程
专栏/技术分享/ 文章详情 /

主备守护集群搭建学习流程

JcRapunzel 2026/07/23 62 0 0
摘要

本指南基于单台服务器单网卡(eth0, IP: 192.168.200.31)环境,通过端口错开的方式模拟双节点集群。

一、集群规划

配置项 主库 (GRP1_RT_01) 备库 (GRP1_RT_02)
业务/MAL IP 192.168.200.31 192.168.200.31
实例名 GRP1_RT_01 GRP1_RT_02
实例端口 (PORT_NUM) 5236 5237
MAL 端口 (MAL_PORT) 5336 5337
守护进程端口 (MAL_DW_PORT) 5436 5437
实例守护端口 (MAL_INST_DW_PORT) 5536 5537
OGUID 45331 45331
安装目录 /home/dmdba/dmdbms /home/dmdba/dmdbms
数据目录 /dmdata/data/DAMENG /dmdata/data1/DAMENG
归档目录 /dmdata/arch /dmdata/arch1

二、初始化主库并备份数据

  1. 创建相关目录
mkdir -p /dmdata/data /dmdata/arch /dmdata/dmbak chown -R dmdba:dmdba /dmdata
  1. 初始化主库实例
su - dmdba /home/dmdba/dmdbms/bin/dminit PATH=/dmdata/data INSTANCE_NAME=GRP1_RT_01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=SYSDBA001 SYSAUDITOR_PWD=SYSDBA001
  1. 前台启动主库并开启归档
/home/dmdba/dmdbms/bin/dmserver /dmdata/data/DAMENG/dm.ini

在另开窗口执行disql登录:

/home/dmdba/dmdbms/bin/disql SYSDBA/SYSDBA001@192.168.200.31:5236
ALTER DATABASE MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdata/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200'; ALTER DATABASE OPEN;
  1. 备份主库数据
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/BACKUP_FILE'; exit;
  1. 修改主库 dm.ini 参数
    在 disql 中执行,或直接修改文件:
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); exit;

关闭前台启动的 dmserver 进程 (Ctrl+C)。

三、配置主库 INI 文件

  1. 配置 dmarch.ini
vi /dmdata/data/DAMENG/dmarch.ini
ARCH_WAIT_APPLY = 0 [ARCHIVE_LOCAL] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch/ ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 51200 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = GRP1_RT_02
  1. 配置 dmmal.ini
vi /dmdata/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 10 MAL_CONN_FAIL_INTERVAL = 10 MAL_TEMP_PATH = /dmdata/data/malpath/ MAL_BUF_SIZE = 512 MAL_SYS_BUF_SIZE = 2048 MAL_COMPRESS_LEVEL = 0 [MAL_INST1] MAL_INST_NAME = GRP1_RT_01 MAL_HOST = 192.168.200.31 MAL_PORT = 5336 MAL_INST_HOST = 192.168.200.31 MAL_INST_PORT = 5236 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536 [MAL_INST2] MAL_INST_NAME = GRP1_RT_02 MAL_HOST = 192.168.200.31 MAL_PORT = 5337 MAL_INST_HOST = 192.168.200.31 MAL_INST_PORT = 5237 MAL_DW_PORT = 5437 MAL_INST_DW_PORT = 5537
  1. 配置 dmwatcher.ini
vi /dmdata/data/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 = /dmdata/data/DAMENG/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0

四、配置备库数据与 INI 文件

  1. 创建备库相关目录并恢复数据
mkdir -p /dmdata/data1 /dmdata/arch1 chown -R dmdba:dmdba /dmdata/data1 /dmdata/arch1 # 使用 dmrman 恢复数据到备库目录 /home/dmdba/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data1/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'" # 注意:如果dm.ini尚未生成,需先初始化一个空实例或手工拷贝主库dm.ini后修改PORT_NUM等参数再执行恢复。 # 标准做法:初始化备库再覆盖恢复 /home/dmdba/dmdbms/bin/dminit PATH=/dmdata/data1 INSTANCE_NAME=GRP1_RT_02 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=SYSDBA001 SYSAUDITOR_PWD=SYSDBA001 /home/dmdba/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data1/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'" /home/dmdba/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data1/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'" /home/dmdba/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data1/DAMENG/dm.ini' UPDATE DB_MAGIC"
  1. 配置备库 dm.ini
    修改备库 /dmdata/data1/DAMENG/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
  1. 配置备库 dmarch.ini
vi /dmdata/data1/DAMENG/dmarch.ini
ARCH_WAIT_APPLY = 0 [ARCHIVE_LOCAL] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch1/ ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 51200 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = GRP1_RT_01
  1. 配置备库 dmmal.ini 与 dmwatcher.ini
    备库的 dmmal.inidmwatcher.ini 内容与主库完全一致,直接拷贝并修改 dmwatcher.ini 中的 INST_INI 路径即可。
cp /dmdata/data/DAMENG/dmmal.ini /dmdata/data1/DAMENG/dmmal.ini cp /dmdata/data/DAMENG/dmwatcher.ini /dmdata/data1/DAMENG/dmwatcher.ini

修改 /dmdata/data1/DAMENG/dmwatcher.ini 中的路径:

INST_INI = /dmdata/data1/DAMENG/dm.ini

五、注册服务与启动集群

  1. 注册后台服务 (root 用户执行)
# 注册主库服务 /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_01 -dm_ini /dmdata/data/DAMENG/dm.ini -m mount # 注册备库服务 /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /dmdata/data1/DAMENG/dm.ini -m mount # 注册主库守护进程 /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher01 -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini # 注册备库守护进程 /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher02 -watcher_ini /dmdata/data1/DAMENG/dmwatcher.ini
  1. 启动数据库并设置主备模式 (dmdba 用户执行)
# 启动主库 /home/dmdba/dmdbms/bin/DmServiceGRP1_RT_01 start # 启动备库 /home/dmdba/dmdbms/bin/DmServiceGRP1_RT_02 start # 登录主库设置 OGUID 和模式 /home/dmdba/dmdbms/bin/disql SYSDBA/SYSDBA001@192.168.200.31: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); exit;
# 登录备库设置 OGUID 和模式 /home/dmdba/dmdbms/bin/disql SYSDBA/SYSDBA001@192.168.200.31: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); exit;
  1. 启动守护进程
/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher01 start /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher02 start

六、配置监视器

  1. 创建确认监视器配置文件
vi /home/dmdba/dmdbms/bin/dmmonitor.ini
MON_DW_CONFIRM = 1 MON_LOG_PATH = /home/dmdba/dmdbms/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.31:5436, 192.168.200.31:5437
  1. 创建非确认监视器配置文件 (用于日常交互)
vi /home/dmdba/dmdbms/bin/dmmonitor_manual.ini
MON_DW_CONFIRM = 0 MON_LOG_PATH = /home/dmdba/dmdbms/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.31:5436, 192.168.200.31:5437
  1. 注册并启动确认监视器后台服务 (root 用户执行)
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini su - dmdba -c "/home/dmdba/dmdbms/bin/DmMonitorServiceMonitor start"
  1. 使用非确认监视器查看集群状态
/home/dmdba/dmdbms/bin/dmmonitor /home/dmdba/dmdbms/bin/dmmonitor_manual.ini

输入 show 命令验证主备库状态是否均为 OPEN 且模式分别为 PRIMARYSTANDBY
image.png

七、集群日常启停流程

停止集群流程:

  1. 停止确认监视器:/home/dmdba/dmdbms/bin/DmMonitorServiceMonitor stop
  2. 停止备库守护进程:/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher02 stop
  3. 停止主库守护进程:/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher01 stop
  4. 停止备库实例:/home/dmdba/dmdbms/bin/DmServiceGRP1_RT_02 stop
  5. 停止主库实例:/home/dmdba/dmdbms/bin/DmServiceGRP1_RT_01 stop
    启动集群流程:
  6. 启动主库实例:/home/dmdba/dmdbms/bin/DmServiceGRP1_RT_01 start
  7. 启动备库实例:/home/dmdba/dmdbms/bin/DmServiceGRP1_RT_02 start
  8. 启动主库守护进程:/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher01 start
  9. 启动备库守护进程:/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher02 start
  10. 启动确认监视器:/home/dmdba/dmdbms/bin/DmMonitorServiceMonitor start
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服