目录
一、环境信息
|----------|---------------|
| 名称 | 值 |
| CPU | X86 |
| 操作系统 | Red Hat 8 |
| DM版本 | 9.1.0.26 |
| 集群主IP | 192.168.139.5 |
| 集群备IP | 192.168.139.6 |
| 集群监视器IP | 192.168.139.6 |
| 达梦软件安装目录 | /dm |
| 达梦数据存放目录 | /dmdata |
| 达梦归档存放目录 | /dmarch |
| 达梦备份存放目录 | /dmbak |
二、安装步骤
没有特别指明用户,均用dmdba用户执行命令。
1、用户组创建
所有节点执行。
root用户操作。
bash
groupadd dinstall -g 2000
useradd dmdba -g 2000 -u 2000
echo "Dameng@123"|passwd --stdin dmdba
2、防火墙关闭
所有节点执行。
root用户操作。
bash
systemctl stop firewalld
systemctl disable firewalld
systemctl stop iptables
systemctl disable iptables
3、目录创建
所有节点执行。
root用户操作。
bash
mkdir -p /dm/dmdbms
mkdir -p /dmdata/dmdbms
mkdir -p /dmarch/dmdbms
mkdir -p /dmbak/dmdbms
chown dmdba:dinstall -R /dm
chown dmdba:dinstall -R /dmdata
chown dmdba:dinstall -R /dmarch
chown dmdba:dinstall -R /dmbak
4、selinux关闭
所有节点执行。
root用户操作。
(1)配置文件修改
/etc/selinux/config 修改SELINUX=disabled,改完如下:
bash
[root@localhost dmdbms]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
(2)配置立即生效
bash
[root@localhost Pkg]# setenforce 0
5、软件部署
所有节点执行。
(1)镜像挂载
bash
[root@localhost Pkg]# mount -o loop dm9_20260509_x86_kylin10_sp1_64.iso /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
(2)软件安装
bash
[root@bogon Pkg]# /mnt/DMInstall.bin -i
安装语言:
1) 简体中文
2) English
请输入选项[1]:
正在解压安装包...
硬件架构校验通过!
GLIBC VERSION校验通过!
欢迎使用 DM9 安装工具
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
输入[exit]可退出程序
阅读并同意《DM9许可协议与服务条款》?
1) 阅读
2) 同意并继续
3) 不同意并退出
请输入选项[2]:
-- 安装配置 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
安装组件 (多选, 逗号分隔):
1) 服务器
2) 客户端工具
请输入选项[1,2]:
所需磁盘空间: 2.23GB
指定安装目录[/opt/dmdbms]:/dm/dmdbms
可用磁盘空间: 51.9GB
-- 许可证文件 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
未填写许可证文件时,系统将以试用版运行;如需启用安全特性,必须指定有效的许可证文件。
许可证文件路径 (为空使用试用版):
-- 安装小结 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
产品名称: 达梦数据库V9
安装目录: /dm/dmdbms
安装内容: 服务器,客户端工具
所需磁盘空间: 2.23GB
可用磁盘空间: 51.9GB
可用内存: 3.03GB
版本信息:
有效日期:
确认安装?[y/n]:y
-- 安装中 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[*] 正在初始化安装日志...
[✓] 初始化安装日志完成
[*] 正在拷贝文件...
[✓] 拷贝文件完成
[*] 正在修改文件...
[✓] 修改文件完成
[*] 正在修改环境变量...
[✓] 修改环境变量完成
[*] 正在安装服务...
[✓] 安装服务完成
[*] 正在配置...
[✓] 配置完成
-- 安装总结 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
达梦数据库DM9安装完成
安装目录: /dm/dmdbms
更多安装信息, 请查看安装日志文件: /dm/dmdbms/log/install.log
6、环境变量
所有节点执行。
root用户操作。
(1)配置
/home/dmdba/.bashrc添加如下变量。
bash
export DM_HOME="/dm/dmdbms"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DM_HOME/bin"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
(2)生效
bash
[dmdba@bogon ~]$ source /home/dmdba/.bashrc
7、初始化数据库
所有节点执行。
bash
[dmdba@bogon ~]$ dminit path=/dmdata/dmdbms SYSDBA_PWD=qwer1234S SYSAUDITOR_PWD=qwer1234S
dminit V9
db version: 0x7000d
file dm.key not found, use default license!
License will expire on 2027-04-17
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dmdata/dmdbms/DAMENG/DAMENG01.log
log file path: /dmdata/dmdbms/DAMENG/DAMENG02.log
write to dir [/dmdata/dmdbms/DAMENG].
create dm database success. 2026-08-24 16:18:14
8、主库开归档
主库执行即可。
(1)打开归档
bash
[dmdba@bogon ~]$ cat /dmdata/dmdbms/DAMENG/dm.ini |grep ARCH_INI
ARCH_INI = 1 #Whether to enable dmarch
(2)归档文件配置
此文件需手动创建。
bash
[dmdba@bogon ~]$ cat /dmdata/dmdbms/DAMENG/dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmarch/dmdbms #本地归档文件存放路径
ARCH_FILE_SIZE = 256 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 1024 #单位 Mb,0 表示无限制,范围 1024~2147483647M
9、主库前台启动
主库执行即可。
bash
[dmdba@bogon ~]$ dmserver /dmdata/dmdbms/DAMENG/dm.ini
10、主库备份
主库执行即可。
备份完成,关闭主库前台服务,之前的会话下输入exit。
bash
[dmdba@bogon ~]$ disql SYSDBA/qwer1234S
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 4.306(ms)
disql V9
SQL> BACKUP DATABASE FULL BACKUPSET '/dmbak/dmdbms/BACKUP_FILE_01' COMPRESSED level 3 task thread 8 parallel 5;
操作已执行
已用时间: 00:00:04.556. 执行号:68901.
11、备份拷贝
主库执行即可。
bash
[dmdba@bogon ~]$ scp -r /dmbak/dmdbms/BACKUP_FILE_01 192.168.139.6:/dmbak/dmdbms/
12、备机恢复
备库执行即可。
bash
[dmdba@localhost ~]$ dmrman
dmrman V9
RMAN> RESTORE DATABASE '/dmdata/dmdbms/DAMENG/dm.ini' FROM BACKUPSET '/dmbak/dmdbms/BACKUP_FILE_01'
RESTORE DATABASE '/dmdata/dmdbms/DAMENG/dm.ini' FROM BACKUPSET '/dmbak/dmdbms/BACKUP_FILE_01'
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.705
RMAN> RECOVER DATABASE '/dmdata/dmdbms/DAMENG/dm.ini' FOR STANDBY FROM BACKUPSET '/dmbak/dmdbms/BACKUP_FILE_01'
RECOVER DATABASE '/dmdata/dmdbms/DAMENG/dm.ini' FOR STANDBY FROM BACKUPSET '/dmbak/dmdbms/BACKUP_FILE_01'
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:03.292
RMAN> RECOVER DATABASE '/dmdata/dmdbms/DAMENG/dm.ini' UPDATE DB_MAGIC
RECOVER DATABASE '/dmdata/dmdbms/DAMENG/dm.ini' UPDATE DB_MAGIC
recover successfully!
time used: 00:00:01.287
13、dm.ini配置
bash
cat /dmdata/dmdbms/DAMENG/dm.ini |grep -E 'INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON'
修改参数如下:
(1)主库
bash
INSTANCE_NAME = GRP1_RT_01 #Instance name
PORT_NUM = 5236 #Port number on which the database server will listen
RLOG_SEND_APPLY_MON = 64 #Monitor recently send or apply rlog_buf info
DW_INACTIVE_INTERVAL = 60 #Time in seconds that used to determine whether DMWATCHER exist
ALTER_MODE_STATUS = 0 #Whether to permit database user to alter database mode and status by SQLs, 2: yes, 1: yes when dmwatcher ERROR, 0: no
ENABLE_OFFLINE_TS = 2 #Whether tablespace can be offline
MAL_INI = 1 #Whether to enable dmmal
ARCH_INI = 1 #Whether to enable dmarch
(2)备库
bash
INSTANCE_NAME = GRP1_RT_02 #Instance name
PORT_NUM = 5236 #Port number on which the database server will listen
RLOG_SEND_APPLY_MON = 64 #Monitor recently send or apply rlog_buf info
DW_INACTIVE_INTERVAL = 60 #Time in seconds that used to determine whether DMWATCHER exist
ALTER_MODE_STATUS = 0 #Whether to permit database user to alter database mode and status by SQLs, 2: yes, 1: yes when dmwatcher ERROR, 0: no
ENABLE_OFFLINE_TS = 2 #Whether tablespace can be offline
MAL_INI = 1 #Whether to enable dmmal
ARCH_INI = 1 #Whether to enable dmarch
14、dmmal.ini配置
此文件主备库一致。
此文件需手动创建。
bash
[dmdba@bogon ~]$ cat /dmdata/dmdbms/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.139.5 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.139.5 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.139.6
MAL_PORT = 61142
MAL_INST_HOST = 192.168.139.6
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
15、dmarch.ini配置
此文件需手动创建。
(1)主库
bash
[dmdba@bogon ~]$ cat /dmdata/dmdbms/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmarch/dmdbms #本地归档文件存放路径
ARCH_FILE_SIZE = 256 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 1024 #单位 Mb,0 表示无限制,范围 1024~2147483647M
(2)备库
bash
[dmdba@bogon ~]$ cat /dmdata/dmdbms/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_01 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmarch/dmdbms #本地归档文件存放路径
ARCH_FILE_SIZE = 256 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 1024 #单位 Mb,0 表示无限制,范围 1024~2147483647M
16、dmwatcher.ini配置
此文件主备库一致。
此文件需手动创建。
bash
[dmdba@bogon ~]$ cat /dmdata/dmdbms/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/dmdbms/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
17、注册服务
所有节点执行。
root用户执行。
(1)切换目录
bash
[root@bogon dmdbms]# cd /dm/dmdbms/script/root/
(2)注册dmserver服务
bash
[root@bogon root]# ./dm_service_installer.sh -t dmserver -p Sun -dm_ini /dmdata/dmdbms/DAMENG/dm.ini -m mount
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceSun.service → /usr/lib/systemd/system/DmServiceSun.service.
创建服务(DmServiceSun)完成
(3)注册dmwatcher服务
bash
[root@bogon root]# ./dm_service_installer.sh -t dmwatcher -p Sun -watcher_ini /dmdata/dmdbms/DAMENG/dmwatcher.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceSun.service → /usr/lib/systemd/system/DmWatcherServiceSun.service.
创建服务(DmWatcherServiceSun)完成
18、dmserver服务启动
所有节点执行。
bash
[dmdba@bogon ~]$ DmServiceSun start
Starting DmServiceSun: [ OK ]
19、状态+OGUID配置
(1)主库
sql
[dmdba@bogon ~]$ disql SYSDBA/qwer1234S
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间 : 8.650(ms)
disql V9
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 20.760(毫秒). 执行号:1.
SQL> SP_SET_OGUID(453331);
DMSQL 过程已成功完成
已用时间: 4.085(毫秒). 执行号:2.
SQL> ALTER DATABASE PRIMARY;
操作已执行
已用时间: 17.414(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 21.245(毫秒). 执行号:3.
(2)备库
sql
[dmdba@localhost ~]$ disql SYSDBA/qwer1234S
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间 : 7.476(ms)
disql V9
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 21.366(毫秒). 执行号:1.
SQL> SP_SET_OGUID(453331);
DMSQL 过程已成功完成
已用时间: 7.395(毫秒). 执行号:2.
SQL> ALTER DATABASE STANDBY;
操作已执行
已用时间: 23.581(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 23.852(毫秒). 执行号:3.
20、dmwatcher服务启动
所有节点执行。
bash
[dmdba@localhost ~]$ DmWatcherServiceSun start
Starting DmWatcherServiceSun: [ OK ]
21、dmmonitor.ini配置
备库执行即可。
此文件需手动创建。
bash
[dmdba@localhost ~]$ cat /dmdata/dmdbms/DAMENG/dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以"IP:PORT"的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.139.5:52141
MON_DW_IP = 192.168.139.6:52142
22、dmmonitor前台启动
备库执行即可。
执行下述命令后,输入show查看集群状态。
bash
[dmdba@localhost ~]$ dmmonitor /dmdata/dmdbms/DAMENG/dmmonitor.ini
[monitor] 2026-08-24 17:31:05.248: DMMONITOR[4.0] V9
[monitor] 2026-08-24 17:31:05.263: DMMONITOR[4.0] IS READY.
[monitor] 2026-08-24 17:31:05.267:
#-----------------------------------------------------------------------------------------------#
GET MONITOR CONNECT INFO FROM DMWATCHER(GRP1_RT_02), THE FIRST LINE IS SELF INFO.
DW_CONN_TIME MON_CONFIRM MID MON_IP MON_VERSION
2026-08-24 17:31:05 TRUE 2087027810 ::ffff:192.168.139.6 DMMONITOR[4.0] V9
#-----------------------------------------------------------------------------------------------#
[monitor] 2026-08-24 17:31:05.270: 收到守护进程(GRP1_RT_02)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2026-08-24 17:31:04 OPEN OK GRP1_RT_02 OPEN STANDBY NULL 2 55026 55026
[monitor] 2026-08-24 17:31:05.274: 收到守护进程(GRP1_RT_01)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2026-08-24 17:31:04 OPEN OK GRP1_RT_01 OPEN PRIMARY VALID 2 55026 55026
show
2026-08-24 17:31:22
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 453331 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 DETACHED AUTO_MODE_CHANGE
192.168.139.5 52141 2026-08-24 17:31:20 GLOBAL VALID OPEN GRP1_RT_01 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID FALSE OFF
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.139.5 5236 OK GRP1_RT_01 OPEN PRIMARY 0 0 REALTIME VALID 3208 55026 3208 55026 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 DETACHED AUTO_MODE_CHANGE
192.168.139.6 52142 2026-08-24 17:31:20 GLOBAL VALID OPEN GRP1_RT_02 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID FALSE OFF
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.139.6 5236 OK GRP1_RT_02 OPEN STANDBY 0 0 REALTIME VALID 3208 55026 3208 55026 NONE
DATABASE(GRP1_RT_02) APPLY INFO FROM (GRP1_RT_01), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[3208, 3208, 3208], (RLSN, SLSN, KLSN)[55026, 55026, 55026], N_TSK[0], TSK_MEM_USE[0]
#================================================================================#
所有WSTATUS、ISTATUS都为OPEN,表示集群正常。
输入EXIT正常退出监视器。
23、注册dmmonitor服务
备节点执行。
root用户执行。
(1)切换目录
bash
[root@bogon dmdbms]# cd /dm/dmdbms/script/root/
(2)注册服务
bash
[root@localhost root]# ./dm_service_installer.sh -t dmmonitor -p Sun -monitor_ini /dmdata/dmdbms/DAMENG/dmmonitor.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmMonitorServiceSun.service → /usr/lib/systemd/system/DmMonitorServiceSun.service.
创建服务(DmMonitorServiceSun)完成
24、dmmonitor服务启动
备节点执行。
bash
[dmdba@localhost ~]$ DmMonitorServiceSun start
Starting DmMonitorServiceSun: [ OK ]
至此集群部署完毕,和达梦8几乎没有区别,这一点值得点赞,降低学习成本。