国产数据库DM8实战手册:静默安装部署全教程

达梦数据库(DM8)作为国产数据库的核心代表,在企业级应用中应用广泛。在一些特殊场景下,用户需要实现非交互式安装(无需人工手动操作交互),在这种情况下,DM提供了静默安装方案,可通过预先配置安装参数文件的方式完成静默安装,静默安装能避免交互式操作的繁琐,提高部署效率,尤其适合批量部署或无人值守场景。本篇将分享达梦8数据库的静默安装全流程,新手也能轻松上手!

一、安装前准备工作

1. 系统环境检查

首先确认系统满足以下最低配置(生产环境建议提升配置,保证运行稳定性):

配置项 最低要求
操作系统 Linux x86_64 位
内存 ≥ 2GB(建议 4GB+)
磁盘空间 ≥ 10GB(安装 + 数据存储)
内核版本 ≥ 2.6.32

执行以下命令,查看主机系统信息和配置,确认符合要求:

bash 复制代码
# 查看系统架构
uname -m
# 查看系统版本
cat /etc/redhat-release
# 查看内核版本
uname -a
# 查看磁盘空间
df -h
# 查看内存情况
free -g

2. 临时关闭防火墙与SeLinux

bash 复制代码
# CentOS 7/8 关闭防火墙(临时+永久)
systemctl stop firewalld
systemctl disable firewalld

# 临时关闭 SELinux
setenforce 0
# 永久关闭 SELinux(需重启生效,可选)
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

3. 检查并调整系统资源限制

系统资源限制不足会导致数据库启动或安装失败,先查看当前资源限制:

bash 复制代码
[root@node02 ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31722
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31722
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@node02 ~]# 

重点关注以下4个参数,建议设置为如下要求:

  • data seg size:建议 ≥1GB 或 unlimited(无限制)

  • file size:建议 unlimited(无限制)

  • open files:建议 ≥65536 或 unlimited

  • virtual memory:建议 ≥1GB 或 unlimited

若参数不满足,修改配置文件调整(需重启生效):

bash 复制代码
# 编辑资源限制配置文件
vim /etc/security/limits.conf

# 添加以下内容(* 表示所有用户,也可指定dmdba用户)
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

4. 安装依赖包

达梦数据库安装依赖部分系统组件,执行以下命令安装:

bash 复制代码
# CentOS/RHEL 7 安装依赖
yum install -y libaio-devel numactl-devel gcc gcc-c++ make

5. 创建安装用户

不建议使用root用户直接安装数据库,创建专用安装用户dmdba及用户组:

bash 复制代码
# 创建用户组 dmgroup
groupadd dmgroup
# 创建用户 dmdba,指定所属组、家目录和登录shell
useradd -g dmgroup -m -d /home/dmdba -s /bin/bash dmdba
# 设置 dmdba 用户密码(替换"密码"为实际密码,如Dm@123456)
echo '密码'|passwd --stdin dmdba

二、达梦8数据库静默安装

1. 上传并解压安装包

将达梦8安装包(.zip格式)上传至dmdba用户家目录,切换至dmdba用户,解压安装包:

bash 复制代码
# 切换至dmdba用户
su - dmdba
# 解压安装包(替换安装包名称为实际文件名)
unzip dm8_20251208_x86_CentOS7_64.zip

解压后会得到iso镜像文件、校验文件和说明文档,重点关注iso镜像文件。

2. 创建目录并挂载镜像

切换至root用户,创建镜像挂载目录,将iso镜像挂载到该目录(镜像路径需替换为实际路径):

bash 复制代码
# 切换至root用户
su - root
# 创建挂载目录
mkdir /mnt/dm8
# 挂载iso镜像(替换镜像路径为实际路径)
mount -o loop /home/dmdba/dm8_20251208_x86_CentOS7_64.iso /mnt/dm8/

3. 创建静默安装配置文件

静默安装需通过xml配置文件指定安装参数,切换至dmdba用户,创建配置文件dm_install.xml:

bash 复制代码
# 切换至dmdba用户
su - dmdba
# 创建并编辑配置文件
cat >/home/dmdba/dm_install.xml<<EOF
<?xml version="1.0"?>
<DATABASE>
	<!--安装数据库的语言配置,简体中文版: ZH,繁体中文版: CHT,英文版: EN,不区分大小写,不允许为空 -->
	<LANGUAGE>ZH</LANGUAGE>
	<!--安装程序的时区配置,缺省为+08:00 -->
	<TIME_ZONE>+08:00</TIME_ZONE>
	<!-- key文件路径 -->
	<KEY></KEY>
	<!--安装程序组件类型,取值范围:0、1、2,0表示安装全部,1表示安装服务器,2表示安装客户端,缺省为0 -->
	<INSTALL_TYPE>0</INSTALL_TYPE>
	<!--安装路径 -->
	<INSTALL_PATH>/home/dmdba/dmdbms</INSTALL_PATH>
	<!--是否初始化库,取值范围:Y/N、y/n,不允许为空 -->
	<INIT_DB>y</INIT_DB>
	<!--数据库实例参数 -->
	<DB_PARAMS>
		<!--初始数据库存放的路径,不允许为空 -->
		<PATH>/data/dm8/data/</PATH>
		<!--初始化数据库名字,缺省为DAMENG,不超过128个字符 -->
		<DB_NAME>DAMENG</DB_NAME>
		<!--初始化数据库实例名字,缺省为DMSERVER,不超过128个字符 -->
		<INSTANCE_NAME>DMSERVER</INSTANCE_NAME>
		<!--初始化时设置dm.ini中的PORT_NUM,缺省为5236,取值范围:1024~65534 -->
		<PORT_NUM>5236</PORT_NUM>

		<!--初始数据库控制文件的路径,文件路径长度最大为256 -->
		<CTL_PATH>/data/dm8/data/DAMENG/dm.ctl</CTL_PATH>

		<!--初始化数据库日志文件的路径,文件路径长度最大为256,LOG_PATH值为空则使用缺省值,如果使用非默认值,LOG_PATH中节点数不能少于2个 -->
		<LOG_PATHS>
			<LOG_PATH>/data/dm8/data/DAMENG/logs/log01.log</LOG_PATH>
            <LOG_PATH>/data/dm8/data/DAMENG/logs/log02.log</LOG_PATH>
		</LOG_PATHS>

		<!--数据文件使用的簇大小,取值范围:16页、32页、64页,缺省为16页 -->
		<EXTENT_SIZE>16</EXTENT_SIZE>

		<!--数据文件使用的页大小,取值范围:4K、8K、16K、32K,缺省为8K -->
		<PAGE_SIZE>8</PAGE_SIZE>

		<!--重做日志文件使用的大小,单位MB,在32位版本下,取值范围为256~2048之间的整数,缺省值为2048;在64位版本下,取值范围为256和8192之间的整数,缺省值为4096 -->
		<LOG_SIZE>4096</LOG_SIZE>

		<!--大小写敏感。取值范围:Y/N y/n 1/0,缺省为Y -->
		<CASE_SENSITIVE>Y</CASE_SENSITIVE>

		<!--字符集选项,缺省为0。0代表GB18030,1代表UTF-8,2代表韩文字符集EUC-KR -->
		<CHARSET>1</CHARSET>
		<!--字符类型在计算HASH值时所采用的HASH算法类别。取值范围0,1。0:原始HASH算法;1:改进的HASH算法。缺省为1 -->
		<USE_NEW_HASH>1</USE_NEW_HASH>
		<!--初始化时设置SYSDBA的密码。1. 长度不能小于8且不能大于48  2. 需要同时包含大写字母、小写字母和数字-->
		<SYSDBA_PWD>Sysdm168</SYSDBA_PWD>
		<!--初始化时设置SYSAUDITOR的密码。1. 长度不能小于8且不能大于48  2. 需要同时包含大写字母、小写字母和数字-->
		<SYSAUDITOR_PWD>Sysdmau168</SYSAUDITOR_PWD>

		<!--初始化时区,默认是东八区。格式为:正负号小时:分钟,取值范围:-12:59 ~ +14:00 -->
		<TIME_ZONE>+08:00</TIME_ZONE>

		<!--是否启用页面内容校验,取值范围:0,1,2,3。0:不启用;1:开启页校验并使用CRC校验;2:开启页校验并使用指定的HASH算法进行校验;3:开启页校验并使用快速CRC校验,缺省为3 -->
		<PAGE_CHECK>3</PAGE_CHECK>

		<!--设置默认加密算法,不超过128个字符 -->
		<EXTERNAL_CIPHER_NAME></EXTERNAL_CIPHER_NAME>

		<!--设置默认HASH算法,不超过128个字符 -->
		<EXTERNAL_HASH_NAME></EXTERNAL_HASH_NAME>

		<!--设置根密钥加密引擎,不超过128个字符 -->
		<EXTERNAL_CRYPTO_NAME></EXTERNAL_CRYPTO_NAME>

		<!--全库加密密钥使用的算法名。算法可以是DM内部支持的加密算法,或者是第三方的加密算法。默认使用"AES256_ECB"算法加密,最长为128个字节 -->
		<ENCRYPT_NAME></ENCRYPT_NAME>

		<!--用于加密服务器根密钥,最长为48个字节 -->
		<USBKEY_PIN></USBKEY_PIN>

		<!--设置空格填充模式,取值范围:0,1,缺省为0 -->
		<BLANK_PAD_MODE>0</BLANK_PAD_MODE>

		<!--指定system.dbf文件的镜像路径,缺省值为空 -->
		<SYSTEM_MIRROR_PATH></SYSTEM_MIRROR_PATH>

		<!--指定main.dbf文件的镜像路径,缺省值为空 -->
		<MAIN_MIRROR_PATH></MAIN_MIRROR_PATH>

		<!--指定roll.dbf文件的镜像路径,缺省值为空 -->
		<ROLL_MIRROR_PATH></ROLL_MIRROR_PATH>

		<!--是否是四权分立,取值范围:0,1。0:不使用;1:使用。缺省为0。仅在安全版本下可见和可设置。 -->
		<PRIV_FLAG>0</PRIV_FLAG>

		<!--指定初始化过程中生成的日志文件所在路径。合法的路径,文件路径长度最大为257(含结束符),不包括文件名 -->
		<ELOG_PATH></ELOG_PATH>
	</DB_PARAMS>

	<!--是否创建数据库实例的服务,取值范围: Y/N y/n,不允许为空,不初始化数据库将忽略此节点。非root用户不能创建数据库服务。 -->
	<CREATE_DB_SERVICE>N/CREATE_DB_SERVICE>

	<!--是否启动数据库,取值范围: Y/N y/n,不允许为空,不创建数据库服务将忽略此节点。 -->
	<STARTUP_DB_SERVICE>N</STARTUP_DB_SERVICE>
</DATABASE>
EOF

⚠️ 注意:修改配置文件中的密码、路径等参数,确保符合实际需求(如SYSDBA密码建议自定义,避免使用默认密码)。

4. 执行静默安装命令

切换至dmdba用户,进入镜像挂载目录,执行静默安装命令(指定配置文件路径):

bash 复制代码
# 切换至dmdba用户
su - dmdba
# 进入镜像挂载目录
cd /mnt/dm8
# 执行静默安装(配置文件路径替换为实际路径)
./DMInstall.bin -q /home/dmdba/dm_install.xml

安装成功后,会提示"安装达梦数据库完成",并要求以root用户执行后续脚本,结果如下:

bash 复制代码
[root@node03 ~]# su - dmdba
Last login: Fri Mar 13 17:18:47 CST 2026 on pts/2
[dmdba@node03 ~]$ cd /mnt/dm8/
[dmdba@node03 dm8]$ ./DMInstall.bin -q /home/dmdba/dm_install.xml
Extract install files..........
Hardware architecture verification passed!
2026-03-13 17:22:04 
[INFO] 安装 基础 模块...
2026-03-13 17:22:04 
[INFO] 安装达梦数据库...
2026-03-13 17:22:09 
[INFO] 安装 服务器 模块...
2026-03-13 17:22:09 
[INFO] 安装 客户端 模块...
2026-03-13 17:22:12 
[INFO] 安装 驱动 模块...
2026-03-13 17:22:15 
[INFO] 安装 手册 模块...
2026-03-13 17:22:16 
[INFO] 安装 服务 模块...
2026-03-13 17:22:16 
[INFO] 移动日志文件。
2026-03-13 17:22:18 
[INFO] 安装达梦数据库完成。

请以root系统用户执行命令:
/home/dmdba/dmdbms/script/root/root_installer.sh
2026-03-13 17:22:21 
[INFO] 开始初始化数据库...
2026-03-13 17:22:22 
[INFO] 初始化数据库完成。
[dmdba@node03 dm8]$ 

5. 执行root用户脚本

切换至root用户,执行安装完成后提示的脚本,完成服务配置:

bash 复制代码
# 切换至root用户
su - root
# 执行脚本(路径与安装提示一致)
sh /home/dmdba/dmdbms/script/root/root_installer.sh

执行成功后,会创建并启动DmAPService服务。

6. 创建数据库实例服务并启动

若需要通过系统服务管理数据库,执行以下命令创建实例服务并启动:

bash 复制代码
# 进入root脚本目录
cd /home/dmdba/dmdbms/script/root
# 创建DMSERVER服务(指定实例配置文件路径)
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /data/dm8/data/DAMENG/dm.ini
bash 复制代码
# 查看达梦相关服务
systemctl list-units --all | grep Dm
# 启动数据库服务
systemctl start DmServiceDMSERVER
# 查看服务状态(确认启动成功)
systemctl status DmServiceDMSERVER

7. 设置环境变量

为dmdba用户设置环境变量,方便后续操作数据库(无需输入完整路径):

bash 复制代码
# 切换至dmdba用户
su - dmdba
# 编辑环境变量配置文件
vim ~/.bash_profile

# 在文件末尾添加以下内容(替换路径为实际安装路径)
export DM_HOME=/home/dmdba/dmdbms
export PATH=$DM_HOME/bin:$PATH
export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH

# 使环境变量生效
source ~/.bash_profile

8. 测试连接

环境变量生效后,执行以下命令测试数据库连接,确认安装成功:

sql 复制代码
# 连接数据库(用户名/密码,与配置文件中一致)
disql SYSDBA/Sysdm168

# 输出结果
[dmdba@node03 ~]$ disql SYSDBA/Sysdm168

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 32.092(ms)
disql V8
SQL> 
相关推荐
sygydxfwd2 小时前
TwinCAT 3配合MySQL数据库实现ms级数据存储
数据库·mysql
HAPPY酷2 小时前
Ubuntu 中如何启用 root 账户?—— 从 “su: 认证失败” 到成功切换 root 的完整指南
服务器·数据库·ubuntu
熊哈哈O_o2 小时前
基于代价模型的复杂查询连接条件下推技术实践——以金仓数据库为例
数据库
Elastic 中国社区官方博客2 小时前
Elasticsearch Serverless 的无状态架构
大数据·数据库·elasticsearch·搜索引擎·云原生·架构·serverless
happymaker06262 小时前
JDBC(MySQL)——DAY02
android·数据库·mysql
十月南城2 小时前
实时数据平台的价值链——数据采集、加工、存储、查询与消费的协同效应与ROI评估
数据库·数据仓库·hive·hadoop·spark
有梦想的小何2 小时前
从结算需求出发:基于库存日快照与分区的结算报表的Java实践
java·数据库·mysql
Yungoal2 小时前
SQL基础0
数据库·sql
韩立学长2 小时前
基于Springboot的商品库存管理系统369jr3t9(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
java·数据库·spring boot·后端