你也在搞信创?这份麒麟V10+达梦DM8“保姆级”安装指南请收好
作者: ShunWah
公众号: "shunwah星辰数智社"主理人。持有认证: OceanBase、MySQL、OpenGauss、崖山、金仓KingBase、KaiwuDB、亚信AntDBCA、翰高、GBase、Galaxybase、Neo4j、NebulaGraph、东方通TongTech、TiDB 等多项权威认证。
获奖经历: 崖山YashanDB YVP、浪潮KaiwuDB MVP、墨天轮 MVP、金仓社区KVA、TiDB社区MVA、NebulaGraph社区之星、IFClub星珩联盟·智库星系技术专家、ITPUB 技术专家,社区版主及布道师。在OceanBase&墨天轮征文大赛、OpenGauss、TiDB、YashanDB、Kingbase、KWDB、Navicat 征文等赛事中多次斩获一、二、三等奖,原创技术文章常年被墨天轮、CSDN、ITPUB 等平台首页推荐。

接触信创数据库已有一段时间,信创化这事儿,前几年能明显感受到信创化建设一直在循序渐进推进,而今年开始,整个改造落地的步伐明显加快。近期手上多个项目启动信创改造,需要把原有CentOS 7+MySQL架构,整体迁移为银河麒麟 V10 SP2 + 达梦 DM8(最新补丁版)。为此我整理了全套实操指南,覆盖巡检、环境配置、数据库安装初始化、日常运维全环节,每一步都附带执行命令和现场截图,跟着操作就能一次性部署成功。
之前我也觉得,装个数据库嘛,按文档下一步下一步不就完了?
结果真上手达梦 + 麒麟才发现——文档写得像法律条文,每一步都对,但连在一起就卡住。尤其是从 MySQL 转过来的,什么大小写敏感、页大小、VARCHAR 长度单位……全是暗坑。
这次项目要求:
我把自己从零开始的全流程记录下来,包括
系统巡检、用户创建、内核参数调整、命令行静默安装、实例初始化、服务注册、启停命令,以及新版 VARCHAR 的行为测试。
每一条命令我都跑过,每一张截图都是现场拍的。你跟着做,基本不会翻车。
💡 如果你用的是鲲鹏、飞腾、海光等信创 CPU,步骤完全一样,只要下载对应架构的安装包即可。
[root@bogon ~]# cat /etc/os-release NAME="Kylin Linux Advanced Server"VERSION="V10 (Halberd)"ID="kylin"VERSION_ID="V10"PRETTY_NAME="Kylin Linux Advanced Server V10 (Halberd)"ANSI_COLOR="0;31"

[root@bogon ~]# df -Th文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 16G 0 16G 0% /dev tmpfs tmpfs 16G 2.4M 16G 1% /dev/shm tmpfs tmpfs 16G 74M 16G 1% /run tmpfs tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/mapper/klas-root xfs 184G 18G 166G 10% / tmpfs tmpfs 16G 36K 16G 1% /tmp /dev/sda1 xfs 1014M 212M 803M 21% /boot /dev/sdb1 ext4 1007G 4.1G 952G 1% /data ...
✅
/data 下有 952G 可用,装库绰绰有余。

[root@bogon ~]# free -hm total used free shared buff/cache available Mem: 30Gi 11Gi 12Gi 250Mi 5.4Gi 16Gi Swap: 15Gi 0B 15Gi
30G 内存 + 15G swap,跑 DM8 典型业务没问题。

⚠️ 这条是铁律:数据库必须用自己的普通用户跑,root 只负责系统级操作。就像住酒店,root 是万.能总卡,但你住进去还是要用房卡(dmdba)。
# 创建用户组[root@bogon ~]# groupadd dinstall -g 2001# 创建用户,指定家目录、shell、UID[root@bogon ~]# useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba# 设置密码(别学我用弱密码,生产环境一定要强密码)[root@bogon ~]# passwd dmdba更改用户 dmdba 的密码 。 新的密码: 重新输入新的密码: passwd:所有的身份验证令牌已经成功更新。

Linux 默认限制一个进程只能打开 1024 个文件,DM8 一开起来几百个线程,瞬间打满就会报
too many open files。
用 root 编辑
/etc/security/limits.conf,追加以下内容:
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 用户才会生效,可以用
ulimit -n检查。
# 实例数据目录mkdir -p /data/dmdata/data# 归档日志目录mkdir -p /data/dmdata/arch# 备份文件目录mkdir -p /data/dmdata/dmbak

⚠️ 注意:以上目录目前是 root 创建的,等会儿必须把所有权交给 dmdba,否则安装程序写不进去。
[root@bogon ~]# chown -R dmdba:dinstall /data/dmdata/data[root@bogon ~]# chown -R dmdba:dinstall /data/dmdata/arch[root@bogon ~]# chown -R dmdba:dinstall /data/dmdata/dmbak[root@bogon ~]# chmod -R 755 /data/dmdata/data[root@bogon ~]# chmod -R 755 /data/dmdata/arch[root@bogon ~]# chmod -R 755 /data/dmdata/dmbak


把下载好的 ISO 放到某个目录,比如
/soft。
[root@bogon ~]# cd /soft/[root@bogon soft]# lsdm8_20260506_x86_kylin10_sp1_64.iso kingbase Kingbase software

[root@bogon ~]# cd /soft/[root@bogon soft]# mount -o loop dm8_20260506_x86_kylin10_sp1_64.iso /mnt/mount: /mnt: WARNING: source write-protected, mounted read-only.

切换到 dmdba 用户,进入挂载目录:
[root@bogon soft]# su - dmdba[dmdba@bogon ~]$ cd /mnt/ [dmdba@bogon mnt]$ ls'DM8 Install.pdf' DMInstall.bin

开始安装:
[dmdba@bogon mnt]$ ./DMInstall.bin -i 安装语言: [1]: 简体中文 [2]: English 请选择安装语言 [1]:1 解压安装程序......... 硬件架构校验通过! 欢迎使用达梦数据库安装程序

是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n # 没有 key 直接跳过

是否设置时区? (Y/y:是 N/n:否) [Y/y]:y# 选择 21(中国标准时间)请选择时区 [21]:21

请选择安装目录 [/home/dmdba/dmdbms]: 可用空间: 164G 是否确认安装路径(/home/dmdba/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y 安装前小结 安装位置: /home/dmdba/dmdbms 所需空间: 2023M 可用空间: 164G 安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):y
然后就是 1-2 分钟的自动安装,最后你会看到:
2026-06-09 14:38:30 [INFO] 安装达梦数据库完成。 请以root系统用户执行命令: /home/dmdba/dmdbms/script/root/root_installer.sh 安装结束

不跑这个脚本,后面无法备份(DmAPService 没启动)。
[root@bogon soft]# /home/dmdba/dmdbms/script/root/root_installer.sh移动 /home/dmdba/dmdbms/bin/dm_svc.conf 到/etc目录 创建DmAPService服务 Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service → /usr/lib/systemd/system/DmAPService.service. 创建服务(DmAPService)完成 启动DmAPService服务

[root@bogon soft]# cd /home/dmdba/[root@bogon dmdba]# vim .bash_profile

在文件末尾添加:
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

然后切换回 dmdba 用户并使之生效:
[root@bogon dmdba]# su - dmdba上一次登录: 二 6月 9 14:07:32 CST 2026 pts/0 上 [dmdba@bogon ~]$ source .bash_profile

💡 如果你日后想用图形化工具(比如
./dbca.sh),记得先执行xhost +并设置DISPLAY。不过我们这次全程命令行,跳过图形部分。
进入 bin 目录:
[dmdba@bogon ~]$ cd /home/dmdba/dmdbms/bin

先看看有哪些参数(不用全记住,但关键的几个要懂):
[dmdba@bogon bin]$ ./dminit help

重要参数说明(初始化后无法更改,谨慎选择):
| 参数 | 说明 | 我的选择 |
|---|---|---|
PAGE_SIZE |
页大小(4/8/16/32 KB),越大单行长度上限越大 | 32 KB |
EXTENT_SIZE |
簇大小(16/32/64 页) | 32 |
CASE_SENSITIVE |
大小写敏感(Y/N) | N(不敏感,方便迁移) |
CHARSET |
字符集(0=GB18030,1=UTF-8,2=EUC-KR) | 1(UTF-8) |
BLANK_PAD_MODE |
是否兼容 Oracle 空格填充 | 0 |
PAGE_CHECK |
页校验模式(默认 3) | 3 |
我的完整初始化命令(数据目录
/data/dmdata/data,实例名
DBSERVER,端口
5237):
./dminit path=/data/dmdata/data \ PAGE_SIZE=32 \ EXTENT_SIZE=32 \ CHARSET=1 \ DB_NAME=DMTEST \ INSTANCE_NAME=DBSERVER \ CASE_SENSITIVE=0 \ PORT_NUM=5237 \ SYSDBA_PWD=Rootcaip#2019 \ SYSAUDITOR_PWD=Rootcaip#2019
🔐 生产环境密码一定要复杂,我这里只是演示。

切换到 root,进入服务脚本目录:
[dmdba@bogon bin]$ exitlogout[root@bogon dmdba]# cd /home/dmdba/dmdbms/script/root/
注册服务:
[root@bogon root]# ./dm_service_installer.sh -t dmserver -dm_ini /data/dmdata/data/DMTEST/dm.ini -p DMTESTCreated symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMTEST.service → /usr/lib/systemd/system/DmServiceDMTEST.service. 创建服务(DmServiceDMTEST)完成

注册完成后,在
/home/dmdba/dmdbms/bin 下会出现
DmServiceDMTEST 脚本。

[dmdba@bogon ~]$ cd /home/dmdba/dmdbms/bin [dmdba@bogon bin]$ ./DmServiceDMTEST start Starting DmServiceDMTEST: [ OK ] [dmdba@bogon bin]$

[dmdba@bogon bin]$ ./DmServiceDMTEST stop Stopping DmServiceDMTEST: [ OK ] [dmdba@bogon bin]$

[dmdba@bogon bin]$ ./DmServiceDMTEST restart DmServiceDMTEST service is stopped. Starting DmServiceDMTEST: [ OK ] [dmdba@bogon bin]$

[dmdba@bogon bin]$ ./DmServiceDMTEST status DmServiceDMTEST (pid 801808) is running. [dmdba@bogon bin]$

[dmdba@bogon ~]$ cd /home/dmdba/dmdbms/bin [dmdba@bogon bin]$ ./disql SYSDBA@localhost:5237 密码: # 输入你设置的 SYSDBA_PWD服务器[localhost:5237]:处于普通打开状态 登录使用时间 : 4.159(ms) disql V8 SQL>

如果密码包含特殊字符,可以用单引号包双引号的写法:
'*****'。
| 操作 | 命令 |
|---|---|
| 查看数据库状态 |
SELECT STATUS$ FROM V$INSTANCE; |
| 查看归档配置 |
SELECT ARCH_DEST, ARCH_TYPE FROM V$DM_ARCH_INI; |
| 创建表空间 |
CREATE TABLESPACE TBS_DATA DATAFILE '/data/dmdata/data/DMTEST/tbs01.dbf' SIZE 128; |
| 创建用户 |
CREATE USER TEST IDENTIFIED BY "Test123" DEFAULT TABLESPACE TBS_DATA; |
| 授予 DBA 权限 |
GRANT DBA TO TEST; |
| 全库备份 |
BACKUP DATABASE FULL TO "fullbak" BACKUPSET '/data/dmdata/dmbak/full_bak'; |
| 查看备份历史 |
SELECT * FROM V$BACKUPSET; |
| 退出 disql |
EXIT; |
这是从 MySQL 迁移到达梦时最容易踩的坑之一。
从 2024 年 Q2 的8.1.3.162版本开始,全局参数LENGTH_IN_CHAR被废弃了,默认 按字节 存储。
但你可以用VARCHAR(n CHAR)在字段级别强制 按字符 存储。
我用的这个补丁版本正好支持这个新特性。先确认字符集(UTF-8,一个中文 3 字节):
SQL> SELECT UNICODE(); 行号 UNICODE() ---------- -----------1 1 已用时间: 2.058(毫秒). 执行号:1011. SQL> ...

查询版本
SQL> SELECT * FROM V$VERSION; 行号 BANNER ---------- --------------------------------- 1 DM Database Server 64 V8 2 DB Version: 0x7000d 3 03134284368-20260430-325233-20149 4 Msg Version: 44 5 Gsu level(5) cnt: 0 已用时间: 2.889(毫秒). 执行号:1010. SQL>

这是新版本数据库的默认行为,varchar(3) 只能存储最多3个字节的数据。
SQL> CREATE TABLE TEST_BYTE ( C1 VARCHAR(3) ); 操作已执行 已用时间: 9.274(毫秒). 执行号:1001. SQL>

(按字符)2个字符
SQL> INSERT INTO TEST_BYTE (C1) VALUES ('ABC');
影响行数 1
已用时间: 2.604(毫秒). 执行号:1002.
SQL>

SQL> CREATE TABLE TEST_CHAR ( C1 VARCHAR(3 CHAR) );
操作已执行
SQL> INSERT INTO TEST_CHAR (C1) VALUES ('一二'); -- 3个字符容量,两个汉字轻松影响行数 1
SQL> INSERT INTO T_OLD (C1) VALUES ('一二');
影响行数 1
已用时间: 5.919(毫秒). 执行号:1006.
SQL>
SQL> INSERT INTO T_OLD (C1) VALUES ('一二三四五');INSERT INTO T_OLD (C1) VALUES ('一二三四五');
[-6169]:列[C1]长度超出定义.
已用时间: 3.117(毫秒). 执行号:0.
SQL>

-- 模拟旧方式(依赖已废弃的全局参数,不推荐)SQL> CREATE TABLE T_OLD ( C1 VARCHAR(10) );-- 推荐的新写法SQL> CREATE TABLE T_NEW ( C1 VARCHAR(10 CHAR) ); SQL> CREATE TABLE T_OLD ( C1 VARCHAR(10) ); 操作已执行 已用时间: 9.623(毫秒). 执行号:1004. SQL> SQL> SQL> CREATE TABLE T_NEW ( C1 VARCHAR(10 CHAR) ); 操作已执行 已用时间: 8.149(毫秒). 执行号:1005. SQL>

插入数据测试:
-- T_OLD 最多只能放 3 个汉字(10字节 ÷3 ≈ 3.3)SQL> INSERT INTO T_OLD (C1) VALUES ('一二三'); -- 成功SQL> INSERT INTO T_OLD (C1) VALUES ('一二三四'); -- 失败-- T_NEW 可以放 10 个汉字SQL> INSERT INTO T_NEW (C1) VALUES ('一二三四五六七八九十'); -- 成功SQL> INSERT INTO T_NEW (C1) VALUES ('一二三四五六七八九十壹'); -- 失败

| 场景 | 推荐写法 | 原因 |
|---|---|---|
| 新建表且希望按字符数限制(如用户名、地址) |
VARCHAR(30 CHAR) |
不依赖废弃参数,行为清晰 |
| 严格控制存储字节数(如固定长度编码) |
VARCHAR(30) |
按字节存,省空间 |
| 从旧版本迁移 | 用
VARCHAR(N CHAR) 改造旧字段 |
避免被已废弃的
LENGTH_IN_CHAR 影响 |
💡 批量改造脚本(在 disql 里执行,生成 ALTER 语句):
SELECT 'ALTER TABLE ' || OWNER || '.' || TABLE_NAME || ' MODIFY ' || COLUMN_NAME || ' VARCHAR2(' || DATA_LENGTH || ' CHAR);'FROM DBA_TAB_COLUMNSWHERE DATA_TYPE='VARCHAR' AND OWNER='YOUR_SCHEMA';
点击【新建连接】
创建连接数据库的对象导航,不进行保存,下次开启后需重新连接。

测试连接
输入主机名(IP 地址)、端口、用户名、密码,点击【测试】,测试是否连通,点击【确定】,连接数据库,如下图所示:

查看数据库链接信息

连接数据库
点击【新建连接】,输入主机名(IP 地址)、端口、用户名、密码,点击【确认】即可直接进行数据库连接,如下图所示:

【确认】后即可像 Navicat 一样使用
连接数据库后,左侧显示对象导航;右侧为新建查询窗口,通过窗口可编写 SQL 语句进行执行;顶部为工具栏;底部为消息和结果集。
查看数据库实例版本信息:

信创化这几年从“试点”慢慢变成“硬指标”,今年开始明显感觉项目都在往前赶。
很多朋友以前没碰过达梦,突然从 CentOS + MySQL 迁移到 麒麟 + DM8,确实容易慌。
其实没你想的那么复杂,你只要按顺序做完下面这几件事,一次就能成功:
./DMInstall.bin -i 命令行静默安装。DmServiceXXX start/stop 愉快启停。

最后再啰嗦一句:数据库的密码、备份策略、归档模式这些,一定要按生产环境的要求来设,别学我在演示里用弱密码。安全无小事,祝大家信创改造顺利!🍻
📋 作者注:
本文围绕达梦 DM8(新版补丁包)在银河麒麟 V10 SP2 环境下的部署全流程,均基于 x86_64 物理机 / 虚拟机实测整理。文中涉及的 dmdba 用户权限、limits.conf 文件句柄限制、dminit 初始化参数(大小写敏感、页大小、字符集)以及新版 VARCHAR 长度单位(字节 vs 字符)等配置要点,均为真实信创改造项目中反复踩坑后总结的案例。
操作系统版本、内核参数、存储 I/O 性能、安全加固策略等环境差异,可能导致部分操作表现不同,请以你实际环境为准。本文方案仅作技术参考,不代表唯一标准解法。以上内容为个人经验总结, 不构成线上生产环境落地建议。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70042915/viewspace-3173858/ ,如需转载,请注明出处,否则将追究法律责任。