注册
达梦数据库单机部署
专栏/技术分享/ 文章详情 /

达梦数据库单机部署

🌌 2026/07/23 90 0 0
摘要

文章目录


前言

在敲命令之前,我们需要先做好目录规划。需要规划以下目录:
/dmdbms 数据库软件安装目录 用来存放达梦二进制程序、工具包
/dmdata 数据文件目录 用来存放数据库实例的实际数据
/dmarch 归档日志目录 用于数据库恢复
/dmbak 备份文件目录 用来定时备份文件
/dmcore CORE文件目录 用于存放系统崩溃时的诊断信息


一、操作系统环境准备

创建专用用户

禁止使用root用户安装和运行数据库。

# 创建用户组(-g 2001 指定组ID,便于统一管理) groupadd dinstall -g 2001 # 创建用户(-u 1001 指定用户ID,-g 指定所属组) useradd -g dinstall dmdba -u 1001 # 设置密码(生产环境建议使用复杂密码) passwd dmdba

创建专用用户,可以只负责数据库相关的事情,即使出问题也不会影响整个的安全

修改主机名、关闭防火墙

修改主机名是为了单机环境方便识别管理
关闭防火墙可以减少网络层面的复杂性

hostnamectl set-hostname dm
systemctl stop firewalld systemctl disable firewalld systemctl status firewalld # 确认已关闭

创建目录并授权

chown将目录所有者改为dmdba用户,chmod 777赋予读写执行权限。

mkdir /dmdbms /dmdata /dmarch /dmbak /dmcore chown dmdba.dinstall /dmdbms /dmdata /dmarch /dmbak /dmcore -R chmod 777 /dmdbms /dmdata /dmarch /dmbak /dmcore -R

二、操作系统参数调优

调整sysctl.conf(内核参数)

vm.swappiness=10:告诉内核尽量少用swap分区。数据库追求的是速度,用swap会严重拖慢性能。

kernel.core_pattern:当数据库崩溃时,会在/dmcore目录生成core文件,方便事后分析原因

echo "vm.overcommit_memory = 0" >> /etc/sysctl.conf echo "vm.swappiness = 10" >> /etc/sysctl.conf echo "kernel.core_pattern=/dmcore/core-%e-%t-%p-%u.core" >> /etc/sysctl.conf sysctl -p

调整limits.conf(资源限制)

操作系统默认会对进程能打开的文件数、能创建的进程数做限制。
数据库需要同时处理大量连接和文件,必须解除这些限制

cat >> /etc/security/limits.conf << EOF * soft nofile 65536 * hard nofile 65536 * soft nproc 10240 * hard nproc 10240 dmdba soft core unlimited dmdba hard core unlimited EOF

关闭SELinux

SELinux是Linux的安全模块,但它的严格限制经常导致数据库无法正常读写文件

sed -i "s/=enforcing/=disabled/g" /etc/sysconfig/selinux sed -i "s/=enforcing/=disabled/g" /etc/selinux/config

禁用透明大页

透明大页是Linux内核的一个特性,它会自动将内存页合并成大页。
对数据库来说,这种"自动合并"会导致性能波动和内存管理问题。

# 编辑grub配置文件 vi /etc/default/grub # 在 GRUB_CMDLINE_LINUX 后添加:transparent_hugepage=never # 重新生成grub配置 grub2-mkconfig -o /boot/grub2/grub.cfg reboot # 重启后确认(显示 [never] 表示成功) cat /sys/kernel/mm/transparent_hugepage/enabled

调整磁盘调度算法

机械硬盘推荐mq-deadline,固态硬盘推荐none

三、安装数据库软件

挂载安装包

# 切换为dmdba用户(重要!) su - dmdba # 挂载ISO文件 mount -o loop dm8_xxx.iso /mnt cd /mnt

执行安装

./DMInstall.bin -i

-i参数表示命令行安装模式(无图形界面)。安装过程中需要选择:

语言:选择中文

Key文件:开发版可以直接跳过

时区:选择 Asia/China

安装类型:选择 典型安装(Typical)

安装目录:/dmdbms

安装完成后,必须切换回root用户执行一个脚本:

su - root /dmdbms/script/root/root_installer.sh

这个脚本会注册dmap服务(达梦的辅助进程,用于备份等操作)


四、初始化数据库实例

使用dminit工具初始化

su - dmdba cd /dmdbms/bin ./dminit PATH=/dmdata \ PORT_NUM=15236 \ PAGE_SIZE=32 \ EXTENT_SIZE=32 \ LOG_SIZE=2048 \ CHARSET=0 \ CASE_SENSITIVE=Y \ SYSDBA_PWD=Dameng@1234 \ SYSAUDITOR_PWD=Dameng@1234

参数

PAGE_SIZE、CASE_SENSITIVE、CHARSET这三个参数一旦初始化完成就无法修改!如果选错,只能删除实例重新初始化。所以在执行之前一定要和业务方确认清楚。

注册数据库服务

为了让数据库能够开机自启,需要注册为系统服务:

su - root /dmdbms/script/root/dm_service_installer.sh -t dmserver \ -dm_ini /dmdata/DAMENG/dm.ini -p DMSERVER

这个命令会在/etc/systemd/system/下生成DmServiceDMSERVER.service文件

启动数据库

su - dmdba /dmdbms/bin/DmServiceDMSERVER start

五、部署后配置

实例启动只是"能用",要"好用"还需要一系列配置。

调整MALLOC_ARENA_MAX

# 添加到系统profile echo "export MALLOC_ARENA_MAX=1" >> /etc/profile # 添加到dmdba用户profile echo "export MALLOC_ARENA_MAX=1" >> /home/dmdba/.bash_profile # 修改服务启动脚本 sed -i "s/ARENA_MAX=4/ARENA_MAX=1/g" /dmdbms/bin/DmServiceDMSERVER

可以理解为每个线程都想要自己的"小仓库",结果仓库太多反而浪费。设置MALLOC_ARENA_MAX=1就是告诉大家"只有一个仓库,都来这里取"。

开启归档日志

归档日志是数据库恢复的生命线。没有归档,一旦数据损坏就无法恢复到故障前的状态。

# 使用disql连接数据库 cd /dmdbms/bin ./disql SYSDBA/Dameng@1234 SQL> ALTER DATABASE MOUNT; SQL> ALTER DATABASE ARCHIVELOG; SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=51200'; SQL> ALTER DATABASE OPEN;

MOUNT:将数据库置于装载状态(不允许读写)
ARCHIVELOG:开启归档模式
ADD ARCHIVELOG:添加归档配置,SPACE_LIMIT=51200表示归档空间上限约50GB

开启异步SQL日志(sqllog)

SQL日志记录了所有执行的SQL语句,是性能分析和问题排查的利器。

SQL> SP_SET_PARA_VALUE(1,'SVR_LOG',1);

然后编辑/dmdata/DAMENG/sqllog.ini:

BUF_TOTAL_SIZE = 20480 # 总缓冲区大小 BUF_SIZE = 2048 # 单块缓冲区大小 ASYNC_FLUSH = 1 # 异步写入,不阻塞业务 SQL_TRACE_MASK = 2:3:25:28 # 只记录关键操作 MIN_EXEC_TIME = 1000 # 只记录超过1秒的慢SQL

配置完成后刷新:
SQL> SP_REFRESH_SVR_LOG_CONFIG();

配置定时备份

这一步是重中之重
达梦提供了内置的定时作业系统。以下配置每天23:00全量备份,自动删除30天前的备份:

-- 初始化作业系统 CALL SP_INIT_JOB_SYS(1); -- 创建备份作业 CALL SP_CREATE_JOB('bakall_delall',1,0,'',0,0,'',0, '每天23:00全量备份、删除30天前的全量备份'); CALL SP_JOB_CONFIG_START('bakall_delall'); -- 备份步骤 CALL SP_ADD_JOB_STEP('bakall_delall', 'bakall', 6, '01020000/dmbak', 3, 1, 0, 0, null, 0); -- 删除步骤(30天前的备份) CALL SP_ADD_JOB_STEP('bakall_delall', 'delall', 0, 'SF_BAKSET_BACKUP_DIR_ADD(''disk'',''/dmbak''); CALL SP_DB_BAKSET_REMOVE_BATCH(''disk'',SYSDATE-30);', 1, 1, 0, 0, null, 0); -- 定时调度:每天23:00 CALL SP_ADD_JOB_SCHEDULE('bakall_delall', 'bakall_delall_time01', 1, 1, 1, 0, 0, '23:00:00', null, '2019-01-01 01:01:01', null, ''); CALL SP_JOB_CONFIG_COMMIT('bakall_delall');

对于大多数业务场景,每天一次全量备份+归档日志的组合,可以在30天内恢复到任意时间点。增量备份虽然节省空间,但恢复时需要"全量+所有增量"依次应用,恢复时间更长

六、收尾工作

所有配置完成后,最后一步是重启服务器验证一切正常

# 停止服务 su - dmdba /dmdbms/bin/DmAPService stop /dmdbms/bin/DmServiceDMSERVER stop # 重启服务器 su - root reboot

重启后需要检查:

数据库服务是否自动启动:ps -ef | grep dmdba
透明大页是否禁用:cat /sys/kernel/mm/transparent_hugepage/enabled(应显示[never])
磁盘调度是否正确:cat /sys/block/vdb/queue/scheduler
备份文件是否生成:检查/dmbak目录

总结

阶段 关键检查项
环境准备 创建dmdba用户、关闭防火墙
系统调优 禁用透明大页、调整limits
软件安装 使用dmdba用户、执行root脚本
实例初始化 PAGE_SIZE/CHARSET/CASE_SENSITIVE确认
部署后配置 MALLOC_ARENA_MAX、归档、备份
收尾验证 重启后检查服务、参数生效

上述为部署检查清单。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服