注册
DM8 DW 主备集群部署报告
专栏/技术分享/ 文章详情 /

DM8 DW 主备集群部署报告

好运连连 2026/10/23 71 0 0
摘要

学习笔记:DM8 DW 主备集群部署报告

1. 部署规划

1.1 主机信息

角色 主机名 IP 地址
主库 dm1 192.168.234.21
备库 dm2 192.168.234.22
监视器 dm3 192.168.234.23
项目 配置
操作系统 CentOS 7.9
CPU Intel Core i9-13900HX,2 核
内存 4 GB

1.2 目录规划

用途 路径
数据根目录 /dmdata/
数据库软件目录 /home/dmdba/dmdbms
实例数据目录 /dmdata/data/DAMENG
归档目录 /dmdata/arch
备份目录 /dmdata/dmbak

1.3 端口规划

用途 端口 说明
数据库服务 5236 PORT_NUM
MAL 通信 5336 MAL_PORT
守护进程通信 5436 MAL_DW_PORT
实例与守护进程通信 5536 MAL_INST_DW_PORT

以上端口以当前配置为例,部署前需确认未被其他进程占用,并按实际网络策略开放。

2. 部署前准备

以下系统配置需要在三台主机上按需完成。

2.1 防火墙

查看状态:

systemctl status firewalld

本次实验选择关闭防火墙:

systemctl stop firewalld systemctl disable firewalld

生产环境应根据实际端口规划配置防火墙规则,不建议直接关闭防火墙。

2.2 SELinux

查看状态:

getenforce

临时切换为宽松模式:

setenforce 0

如需永久禁用,编辑 /etc/selinux/config:

SELINUX=disabled

修改后需重启系统生效。

2.3 透明大页(THP)

创建服务文件:

cat > /etc/systemd/system/disable-thp.service <<'EOF' [Unit] Description=Disable Transparent Huge Pages (THP) [Service] Type=oneshot ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled; echo never > /sys/kernel/mm/transparent_hugepage/defrag" RemainAfterExit=yes [Install] WantedBy=multi-user.target EOF

加载配置并启用:

systemctl daemon-reload systemctl enable --now disable-thp

检查设置:

cat /sys/kernel/mm/transparent_hugepage/enabled cat /sys/kernel/mm/transparent_hugepage/defrag

2.4 内核参数

查看当前值:

cat /proc/sys/vm/overcommit_memory

本次实验设置为 0:

sysctl -w vm.overcommit_memory=0

如需持久化,在 /etc/sysctl.conf 中增加:

vm.overcommit_memory = 0

应用配置:

sysctl -p

2.5 用户资源限制

检查当前配置:

grep -vE '^\s*#|^\s*$' /etc/security/limits.conf

按部署要求,为 dmdba 配置以下限制:

dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited

修改后重新登录 dmdba 用户,使配置生效。

2.6 时间同步

本次实验使用 chronyd 同步节点时间。请根据实际网络配置时间服务器,并确保相关网络端口可达。

在时间服务器节点编辑 /etc/chrony.conf,按需配置:

allow all
local stratum 10
rtcsync

在其他节点配置时间服务器地址,例如:

server 192.168.234.21 iburst prefer
makestep 1.0 3
rtcsync

重启服务并检查同步状态:

systemctl restart chronyd chronyc tracking

image.png

3. 创建用户与目录

3.1 创建用户和用户组

在需要部署 DM8 的主机上执行:

groupadd -g 2001 dinstall useradd -u 1001 -g dinstall dmdba passwd dmdba

如果用户或用户组已经存在,请先检查现有配置,不要重复创建。

3.2 创建目录

mkdir -p /dmdata/{data,arch,dmbak} chown -R dmdba:dinstall /dmdata/{data,arch,dmbak} chmod -R 755 /dmdata/{data,arch,dmbak}

4. 安装 DM8

三台主机均需安装 DM8 软件。

4.1 安装软件

将安装介质挂载到系统,并确认安装文件可访问。切换至 dmdba 用户,进入安装介质目录执行:

./DMInstall.bin -i

本次安装选项如下:

项目 选择
安装语言 简体中文
Key 文件 未指定,按实验环境选择
时区 中国标准时间(GTM+08:00)
安装类型 典型安装
软件目录 /home/dmdba/dmdbms

安装完成后,以 root 用户执行:

/home/dmdba/dmdbms/script/root/root_installer.sh

检查 DMAP 服务:

systemctl status DmAPService

4.2 配置环境变量

在 /home/dmdba/.bash_profile 中配置相应环境变量。若已设置 DM_HOME,可增加:

export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

使配置生效并检查工具路径:

source /home/dmdba/.bash_profile echo "$DM_HOME" which dminit which disql

5. 配置并备份主库

本节先完成主库初始化、归档和 DW 所需参数配置,再执行全量备份。这样备库恢复时使用的是完成基础配置后的备份。

5.1 初始化主库实例

以 dmdba 用户执行:

dminit PATH=/dmdata/data/ INSTANCE_NAME=node_01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD='<SYSDBA密码>' SYSAUDITOR_PWD='<SYSAUDITOR密码>'

初始化完成后,主库配置文件为:

/dmdata/data/DAMENG/dm.ini

5.2 启动主库并配置本地归档

前台启动实例:

dmserver /dmdata/data/DAMENG/dm.ini

通过 disql 连接后,配置并启用本地归档:

ALTER DATABASE MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdata/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200'; ALTER DATABASE OPEN;

确认数据库正常打开,且本地归档配置符合预期。

5.3 配置主库 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, 'ARCH_INI', 1); SP_SET_PARA_VALUE(2, 'RLOG_SEND_APPLY_MON', 64);

5.4 配置主库 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 = node_02

ARCHIVE_LOCAL 为本地归档配置;ARCHIVE_REALTIME1 指向备库实例 node_02。请确认配置与当前 DM8 版本及实际主备规划一致。

5.5 配置主库 dmmal.ini

编辑:

vi /dmdata/data/DAMENG/dmmal.ini

示例配置如下。IP 地址必须按实际环境修改:

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 = node_01 MAL_HOST = 192.168.234.21 MAL_PORT = 5336 MAL_INST_HOST = 192.168.234.21 MAL_INST_PORT = 5236 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536 [MAL_INST2] MAL_INST_NAME = node_02 MAL_HOST = 192.168.234.22 MAL_PORT = 5336 MAL_INST_HOST = 192.168.234.22 MAL_INST_PORT = 5236 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536

确保临时目录存在且 dmdba 有权限:

mkdir -p /dmdata/data/malpath chown -R dmdba:dinstall /dmdata/data/malpath

5.6 配置主库 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

5.7 注册主库服务

以 root 用户执行:

/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p node_01 -dm_ini /dmdata/data/DAMENG/dm.ini -m mount /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini

5.8 检查配置并执行主库全量备份

在备份前,确认:

  • 本地归档已启用,归档目录可用;
  • dm.ini 中 MAL_INI=1、ARCH_INI=1 等参数已正确写入;
  • dmarch.ini、dmmal.ini、dmwatcher.ini 已按规划配置;
  • 如参数要求重启,已完成重启并确认主库正常运行。

执行全量备份:

BACKUP DATABASE BACKUPSET '/dmdata/dmbak/BACKUP_FILE';

确认备份集生成且备份成功,再将备份文件传输到备库。

6. 初始化并恢复备库

6.1 初始化备库实例

在 B 节点(node_02)以 dmdba 用户执行:

dminit PATH=/dmdata/data/ INSTANCE_NAME=node_02 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD='<与主库一致的SYSDBA密码>' SYSAUDITOR_PWD='<SYSAUDITOR密码>'

备库初始化后将使用主库备份覆盖并恢复数据库文件。执行恢复前请确认路径和目标实例正确,避免覆盖错误的数据目录。

6.2 获取主库备份集

在 B 节点执行,源 IP 按实际主库地址修改:

scp dmdba@192.168.234.21:/dmdata/dmbak/BACKUP_FILE /dmdata/dmbak/

确认备份集已完整传输,并由 dmdba 用户具备访问权限。

6.3 还原并恢复数据库

在 B 节点执行:

dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'" dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'" dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

确认各步骤均成功结束后,再进行备库参数配置。

7. 配置备库

7.1 配置备库 dm.ini

检查并调整 /dmdata/data/DAMENG/dm.ini,确保至少包含以下配置:

INSTANCE_NAME = node_02 PORT_NUM = 5236 DW_INACTIVE_INTERVAL = 60 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 MAL_INI = 1 ARCH_INI = 1 RLOG_SEND_APPLY_MON = 64

特别注意:MAL_INI 和 ARCH_INI 必须为 1。本次排障时,B 节点这两个参数实际为 0,导致守护服务启动时报错:

dm.ini has not configured arch_ini or mal_ini!
fail to read ini file

修改后核对文件中的实际值,并在需要时重启数据库实例后再启动守护服务。

7.2 配置备库 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 = node_01

备库实时归档目标应指向主库 node_01。

7.3 配置备库 dmmal.ini

备库 dmmal.ini 应与主库使用相同的 MAL 集群视图,即均包含 node_01 和 node_02 两个实例,并且两端的实例名、IP 和端口映射一致。请将第 5.5 节配置按实际 IP 写入 B 节点。

7.4 配置备库 dmwatcher.ini

备库的 dmwatcher.ini 可参照第 5.6 节,确认以下配置与主库一致:

  • DW_TYPE = GLOBAL
  • DW_MODE = AUTO
  • INST_OGUID = 45331
  • INST_INI = /dmdata/data/DAMENG/dm.ini
  • INST_AUTO_RESTART = 1
  • INST_STARTUP_CMD 指向实际 dmserver 路径

7.5 注册备库服务

在 B 节点以 root 用户执行:

/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p node_02 -dm_ini /dmdata/data/DAMENG/dm.ini -m mount /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini

如果服务已注册,不要重复注册;先用 systemctl cat 确认服务指向的配置文件。

8. 设置主备角色并启动守护进程

8.1 启动主库并设置角色

在 A 节点执行:

systemctl start DmServicenode_01 disql SYSDBA/'<SYSDBA密码>'

连接数据库后执行:

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);

8.2 启动备库并设置角色

在 B 节点执行:

systemctl start DmServicenode_02 disql SYSDBA/'<SYSDBA密码>'

连接数据库后执行:

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);

8.3 启动守护进程

确认主备实例状态、OGUID、MAL 配置和归档配置无误后,在 A、B 两个节点分别执行:

systemctl start DmWatcherServiceWatcher systemctl status DmWatcherServiceWatcher

如启动失败,查看服务日志:

journalctl -u DmWatcherServiceWatcher -n 50 --no-pager

9. 配置监视器

监视器部署在第三台主机(dm3,IP:192.168.234.23)。以下配置中的 IP、目录及服务名需按实际环境核对。

9.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.234.21:5436 MON_DW_IP = 192.168.234.22:5436

参数说明:

  • MON_DW_CONFIRM = 1:配置确认监视器。
  • MON_LOG_PATH:监视器日志目录。
  • MON_LOG_INTERVAL:日志记录间隔,单位为秒。
  • MON_LOG_FILE_SIZE:单个日志文件大小,单位为 MB。
  • MON_LOG_SPACE_LIMIT:日志空间上限,单位为 MB。
  • MON_DW_IP:填写主、备节点的守护进程通信地址,端口对应 MAL_DW_PORT。

注册监视器服务:

/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini

启动并检查服务:

systemctl start DmMonitorServiceMonitor systemctl status DmMonitorServiceMonitor

9.2 配置非确认监视器(可选)

如需使用非确认监视器,可创建另一份配置文件:

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.234.21:5436 MON_DW_IP = 192.168.234.22:5436

其中,MON_DW_CONFIRM = 0 表示非确认监视器。该配置与确认监视器使用不同的配置文件,按实际部署需求选择,不要在未确认服务用途时重复注册或启动。

需要前台启动时,可执行:

cd /home/dmdba/dmdbms/bin ./dmmonitor dmmonitor_manual.ini

9.3 检查集群状态

监视器启动后,可通过监视器命令行输入 tip 查看当前集群状态。
image.png

至此,DM8 DW 主备集群部署记录整理完毕。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服