注册
达梦主备集群DW部署指南
专栏/技术分享/ 文章详情 /

达梦主备集群DW部署指南

肖庚 2026/08/21 201 0 0
摘要

1.服务器规划

1.1.集群规划

3个数据库服务器节点的名字分别是 dmdw1、 dmdw2 和 dmdw3

dmdw1 dmdw2 dmdw3
业务 IP 192.168.xxx.x 192.168.xxx.x
心跳 IP 192.168.xxx.x 192.168.xxx.x 192.168.xxx.x
实例名 JKXX1 JKXX2
实例端口 5236 5236
MAL 端口 5336 5336
MAL 守护进程端口 5436 5436
守护进程端口 5536 5536
OGUID 260811 260811
守护组 JKXX JKXX

1.2.目录规划

目录 备注
/home/dmdba/dmdbms 数据库软件安装目录
/data/dmdata 数据文件目录
/data/dmarch 日志归档目录
/data/sqllog sql监控目录
/data/dmbak 备份目录
/data/dmcore core日志目录

2.部署前环境配置

参考
https://eco.dameng.com/community/post/2026080713391431INLSGOX6FDDFWJCY

3.部署主备DW集群

3.1.配置节点dmdw1

3.1.1.初始化数据库

dminit PATH=/data/dmdata INSTANCE_NAME=JKXX1 DB_NAME=JKXX CASE_SENSITIVE=N CHARSET=1 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=xxxxxx  SYSAUDITOR_PWD=xxxxxx

3.1.2.启动服务

这个启动服务是前台进程,临时使用,需要在新窗口启动服务。启动后这个窗口不能关闭。

dmserver /data/dmdata/JKXX/dm.ini

3.1.3.开启归档

disql SYSDBA/xxxxxx@:5236

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

3.1.4.备份数据

SQL> BACKUP DATABASE BACKUPSET '/data/dmbak/BACKUP_FILE_20260811';

3.1.5.修改 dm.ini

SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60); --dmserver监控本机dmwatcher心跳
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);     -- 禁止人工手工切换主备模式
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);     -- 备库禁止表空间offline,防止数据分裂
SP_SET_PARA_VALUE (2,'MAL_INI',1);               -- 开启MAL主备通信通道
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);  -- 采集日志发送/重演耗时样本,供守护判断备库同步健康度

3.1.6.关闭前台实例服务

将 3.1.2 步骤启动的实例服务关闭,可以直接 ctrl+c,然后关闭窗口

3.1.7.修改dmarch.ini

增加了 [ARCHIVE_REALTIME1] 部分信息

vi /data/dmdata/JKXX/dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments

	ARCH_WAIT_APPLY      = 0

[ARCHIVE_LOCAL1]
	ARCH_TYPE            = LOCAL
	ARCH_DEST            = /data/dmarch
	ARCH_FILE_SIZE       = 1024
	ARCH_SPACE_LIMIT     = 51200
	ARCH_FLUSH_BUF_SIZE  = 2
	ARCH_HANG_FLAG       = 1

[ARCHIVE_REALTIME1]
ARCH_TYPE                = REALTIME  #实时归档类型
ARCH_DEST                = JKXX2  #实时归档目标实例名

3.1.8.创建 dmmal.ini

vi /data/dmdata/JKXX/dmmal.ini

MAL_CHECK_INTERVAL         = 10  #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL     = 10  #判定 MAL 链路断开的时间
MAL_TEMP_PATH              = /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            = JKXX1  #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST                 = 192.168.xxx.x  #MAL 系统监听 TCP 连接的 IP 地>址
MAL_PORT                 = 5336  #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST            = 192.168.xxx.x  #实例的对外服务 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            = JKXX2
MAL_HOST                 = 192.168.xxx.x
MAL_PORT                 = 5336
MAL_INST_HOST            = 192.168.xxx.x
MAL_INST_PORT            = 5236
MAL_DW_PORT              = 5436
MAL_INST_DW_PORT         = 5536

3.1.9.创建 dmwatcher.ini

vi /data/dmdata/JKXX/dmwatcher.ini

[JKXX]
DW_TYPE                  = GLOBAL  #全局守护类型
DW_MODE                  = AUTO  #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME            = 20  #远程守护进程故障认定时间
INST_ERROR_TIME          = 20  #本地实例故障认定时间
INST_RECOVER_TIME        = 60  #主库守护进程启动恢复的间隔时间
INST_OGUID               = 260811  #守护系统唯一 OGUID 值
INST_INI                 = /data/dmdata/JKXX/dm.ini  #dm.ini 文件路径
INST_AUTO_RESTART        = 1  #打开实例的自动启动功能
INST_STARTUP_CMD         = /home/dmdba/dmdbms/bin/dmserver  #命令行方式启动
RLOG_SEND_THRESHOLD      = 0  #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD     = 0  #指定备库重演日志的时间阈值,默认关闭

3.1.10.拷贝备份文件

将备份文件从节点1 拷贝到节点2

scp -r /data/dmbak/BACKUP_FILE_20260811 dmdba@192.168.xxx.x:/data/dmbak

3.1.11.注册服务

#root执行
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p JKXX1 -dm_ini /data/dmdata/JKXX/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /data/dmdata/JKXX/dmwatcher.ini

3.2.配置节点dmdw2

3.2.1.初始化实例

dminit PATH=/data/dmdata INSTANCE_NAME=JKXX2 DB_NAME=JKXX CASE_SENSITIVE=N CHARSET=1 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=xxxxxx  SYSAUDITOR_PWD=xxxxxx

3.2.2.恢复数据

dmrman CTLSTMT="RESTORE DATABASE '/data/dmdata/JKXX/dm.ini' FROM BACKUPSET '/data/dmbak/BACKUP_FILE_20260811'"

dmrman CTLSTMT="RECOVER DATABASE '/data/dmdata/JKXX/dm.ini' FROM BACKUPSET '/data/dmbak/BACKUP_FILE_20260811'"

dmrman CTLSTMT="RECOVER DATABASE '/data/dmdata/JKXX/dm.ini' UPDATE DB_MAGIC"

3.2.3.创建 dmarch.ini

vi /data/dmdata/JKXX/dmarch.ini

ARCH_WAIT_APPLY            = 0  #0:高性能  1:事务一致

[ARCHIVE_LOCAL]
	ARCH_TYPE            = LOCAL
	ARCH_DEST            = /data/dmarch
	ARCH_FILE_SIZE       = 1024
	ARCH_SPACE_LIMIT     = 51200
	ARCH_FLUSH_BUF_SIZE  = 2
	ARCH_HANG_FLAG       = 1

[ARCHIVE_REALTIME1]
ARCH_TYPE                = REALTIME  #实时归档类型
ARCH_DEST                = JKXX1  #实时归档目标实例名

3.2.4.配置 dm.ini

vi /data/dmdata/JKXX/dm.ini

INSTANCE_NAME  = JKXX2
PORT_NUM = 5236             #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60   #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0       #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS  = 2      #不允许备库 OFFLINE 表空间
MAL_INI = 1                 #打开 MAL 系统
ARCH_INI = 1                #打开归档配置
RLOG_SEND_APPLY_MON = 64    #统计最近 64 次的日志重演信息

3.2.5.配置dmmal.ini 和 dmwatcher.ini

文件内容与节点1一样,将节点1 的信息拷贝过来

cd /data/dmdata/JKXX
scp dmmal.ini dmwatcher.ini dmdba@192.168.xxx.x:/data/dmdata/JKXX

3.2.6.注册服务

#使用root执行

/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p JKXX2 -dm_ini /data/dmdata/JKXX/dm.ini -m mount

/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /data/dmdata/JKXX/dmwatcher.ini

3.3.修改数据库角色信息

3.3.1.启动数据库修改角色

节点1 dmdw1

/home/dmdba/dmdbms/bin/DmServiceJKXX1 start
disql SYSDBA/xxxxxx
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(260811);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

节点2 dmdw2

/home/dmdba/dmdbms/bin/DmServiceJKXX2 start
disql SYSDBA/xxxxxx
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(260811);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

3.3.2.启动守护进程

##节点1和节点2
/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start

3.4.集群的启停操作

3.4.1.启动集群

正常集群配置了跟随操作系统自启动,如果手动启动分别在2个节点执行

[dmdba@~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start

3.4.2.停止集群

##节点1 和节点2 分别操作
[dmdba@~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher stop
##节点1操作
[dmdba@~]$ /home/dmdba/dmdbms/bin/DmServiceJKXX1 stop
##节点2 操作
[dmdba@~]$ /home/dmdba/dmdbms/bin/DmServiceJKXX2 stop

3.5.配置监视器

在节点dmdw3 配置监控 进程

3.5.1.配置确认监视器

vi /home/dmdba/dmdbms/bin/dmmonitor.ini

MON_DW_CONFIRM             = 1  #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH               = /home/dmdba/dmdbms/log  #监视器日志文件存放路径
MON_LOG_INTERVAL           = 60  #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE          = 512  #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT        = 2048  #日志上限,单位 MB

[JKXX]
MON_INST_OGUID           = 260811  #组 GRP1 的唯一 OGUID 值
MON_DW_IP                = 192.168.xxx.x:5436  #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP                = 192.168.xxx.x:5436

注册服务

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

3.5.2.配置非确认监视器

vi /home/dmdba/dmdbms/bin/dmmonitor_manual.ini

MON_DW_CONFIRM             = 0  #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH               = /home/dmdba/dmdbms/log  #监视器日志文件存放路径
MON_LOG_INTERVAL           = 60  #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE          = 512  #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT        = 2048  #日志上限,单位 MB

[JKXX]
MON_INST_OGUID           = 260811  #组 GRP1 的唯一 OGUID 值
MON_DW_IP                = 192.168.xxx.x:5436  #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP                = 192.168.xxx.x:5436

启动非确认监控器查看

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

通过 show 和tip 可以查看主备的数据库状态

3.6.配置 dm_svc.conf

vi /etc/dm_svc.conf

##以#开头的行表示是注释#
##全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DMHA=(192.168.xxx.x:5236,192.168.xxx.x:5236)
##服务配置
[DMHA]
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
LOGIN_MODE=(1)

3.7.测试主备切换

参考
https://eco.dameng.com/community/post/202608101731348R4MU7PC1AXFL6MJ7M

https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服