注册
数据库DM8单机部署实战
培训园地/ 文章详情 /

数据库DM8单机部署实战

属猴的doge 2025/10/22 423 0 0

目录
一、环境配置

1.系统信息查看
2.查看GLIBC的版本
3.关闭防火墙
4.禁止selinux开机自启动
5.修改系统资源限制
6.关闭透明大页
7.关闭SWAP
8.关闭numa

二、数据库安装

1.创建达梦用户和组
2.创建目录
3.安装包镜像挂载
4.软件安装

三、初始化数据库

1.初始化实例
2.注册数据库服务
3.启动数据库服务

四、数据库配置

1.扩充redolog
2.设置数据库的归档
3.设置定时备份作业
4.做一次全库备份
5.开启SQL日志
6.创建DMDBA用户

五、重启服务器

1.查看防火墙策略开机自动关闭
2查看IP网卡开机自启,业务ip地址是否存在
3操作系统资源限制信息,查看dmdba用户下对应的资源限制是否生效
4查看数据库进程是否存在

一、环境配置

不同的系统环境要准备不同的包,否则安装时会提示不适配。
1.png

1.系统信息查看

本次测试系统为:CentOS-7-x86_64。
建议资源:至少2C4G,50G存储
一开始给的内存2G,实测中发现安装后内存不够导致服务起不来,创建完成后执行优化脚本建议4G以上,所以最后内存调整为4G。
磁盘空间一开始为25G,实际创建一个实例后使用资源已达18G,建议扩容为50G.
程序包:dm8_20250822_x86_centos7_64
查看位数

getconf LONG_BIT

2.png
查看操作系统信息

cat /etc/*lease*

3.png

2.查看GLIBC的版本

达梦数据库针对从操作系统申请的内存资源进行内存池管理,所有的数据库线程从自己的内存池中进行处理,但是若 glibc 版本大于 2.10,操作系统会给数据库线程再分配一个内存池,这个内存池数据库是无法管理和释放的。所以导致数据库进程的 VIRT(虚拟内存)占用过高,通过添加操作系统参数 MALLOC_ARENA_MAX 禁止操作系统额外为数据库线程分配内存,数据库相关线程只从数据库已申请的内存池中进行资源分配,从而有效控制内存资源使用大小。

ldd –version

image.png

3.关闭防火墙

systemctl stop firewalld  

禁止防火墙开机自启动

systemctl disable firewalld 

4.禁止selinux开机自启动

把selinux=enforcing修改成selinux=disabled
Enforcing:强制模式。代表 SELinux 在运行中,且已经开始限制domain/type 之间的验证关系;
Permissive:宽容模式。代表 SELinux 在运行中,不会限制 domain/type 之间的验证关系,即使验证不正确,进程仍可以对文件进行操作,但会发出警告。
Disabled:关闭模式。SELinux 并没有实际运行。

vim /etc/sysconfig/selinux

image.png

5.修改系统资源限制

limits.conf可配置限制文件打开数,操作系统默认会对程序使用资源进行限制。如果不取消对应的限制,则数据库的性能将会受到影响。

vi /etc/security/limits.conf

#增加如下内容
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
image.png

nproc: 用户可创建的最大进程数
soft: 软限制,可自行调整,但不能超过硬限制
hard: 硬限制,系统强制执行的上限
nofile: 用户可同时打开的最大文件描述符数量
core: 核心转储文件大小限制
unlimited: 无限制

更改后使用ulimit命令验证

ulimit -a

image.png
system.conf为系统和服务管理的配置文件,当运行系统实例时,systemd 将读取这个配置文件system.conf,相反读取user.conf。
达梦数据库服务注册为系统服务的进程,如通过systemctl或者service方式设定随机自启动的数据库服务,其能打开的最大文件描述符、proc数量等不受limits.conf控制,需要修改/etc/systemd/system.conf文件。

添加配置

vim /etc/systemd/system.conf

#增加如下内容
DefaultLimitCORE=infinity
DefaultLimitNOFILE=65536
DefaultLimitNPROC=65536
image.png
sysctl.conf是一个允许改变正在运行中的 Linux 系统接口,它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项,修改内核参数永久生效。

修改配置vm.overcommit_memory=0

vim /etc/sysctl.conf

image.png
nproc是操作系统级别对每个用户创建的进程数的限制。文件路径为/etc/security/limits.d/nproc。不同操作系统文件名略有不同,其中麒麟10中是nproc.conf;centos6中是90-nproccentos,centos7中是20-nproc.conf。系统进程等资源在该文件配置中写的最大用户进程数是受/etc/security/limits.d/proc.conf配置上限影响的。

编辑配置文件添加配置

vi /etc/security/limits.d/20-nproc.conf

image.png
profile文件为全局环境变量配置,修改后对所有用户起作用。登录Linux时,会首先启动/etc/profile文件,然后再启动用户目录下的/.bash_profile、/.bash_login或/.profile文件中的其中一个。./.profile若bash是以login方式执行时,读取/.bash_profile,若它不存在,则读取/.bash_login,若前两者不存在,则读取~/.profile。

切换至用户 dmdba
调整 dmdba 用户下的环境变量文件 .bash_profile

su - dmdba
vim .bash_profile
export LD_LIBRARY_PATH="'$'LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin"
export DM_HOME="/home/dmdba/dmdbms"
export PATH=$PATH:$DM_HOME/bin

修改完成后执行source .bash_profile生效

image.png

6.关闭透明大页

Transparent HugePages (透明大页)对系统的性能产生影响的原因:
在 khugepaged 进行扫描进程占用内存,并将 4k Page 交换为 Huge Pages 的这个过程中,对于操作的内存的各种分配活动都需要各种内存锁,直接影响程序的内存访问性能。并且,这个过程对于应用是透明的,在应用层面不可控制,对于专门为 4k page 优化的程序来说,可能会造成随机的性能下降现象。
查看是否启用透明大页

cat /sys/kernel/mm/transparent_hugepage/enabled

image.png
永久关闭透明大页,编辑grub文件在GRUB_CMDLINE_LINUX=配置参数结尾加入 “transparent_hugepage=never”

vi /etc/default/grub

image.png
重新生成 /etc/grub2.cfg 配置文件:
grub2-mkconfig -o /etc/grub2.cfg
image.png
注:重启生效
重启后查看修改是否成功

7.关闭SWAP

swap类似虚拟内存,内存不足时会使用磁盘空间当内存使用。但使用swap会影响数据库服务性能。

vi /etc/fstab

注释掉swap并保存
image.png

8.关闭numa

NUMA(Non-Uniform Memory Access,非统一内存访问)是一种用于多处理器系统的内存架构,它解决了多CPU竞争同一内存总线所带来的性能瓶颈问题。其核心特点是:CPU访问自身本地内存的速度,远快于访问其他CPU所属内存的速度。内核将要求多路 CPU 尽量从距离较近的系统内存节点(服务器的整体内存在 numa 架构下将被分成若干个节点)分配内存,而不是在整个服务器可访问内存的范围内进行内存分配。在较高内存占用压力下,内存申请会触发内存频繁回收整理的机制,严重影响系统整体性能,从而可能导致 SQL 卡顿问题的发生。
查看是否支持numa

lscpu | grep -i numa

image.png
关闭 numa

vi /etc/default/grub

image.png

二、数据库安装

1.创建达梦用户和组

新建数据库用户是因为普通用户不能修改系统关键配置文件,若要查看其他用户的文件则需要相应的权限。
防止使用 root 权限过大导致误操作及一些纠纷。

groupadd dinstall  #添加用户组
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba  #添加用户
passwd dmdba  #设置dmdba用户的密码

2.创建目录

安装数据库前,需要提前规划数据库的数据目录、归档目录、备份目录、日志目录等,并在安装过程中选择对应的目录;并更新用户组

mkdir -p /dmdata/dmdb         #数据目录
mkdir -p /dmdata/dmarch/arch  #归档目录
mkdir -p /dmdata/dmbak/bak    #备份目录
mkdir -p /dmdata/dmlog/log    #日志目录
chown -R dmdba:dinstall /dmdata  #变更所属用户组

image.png

3.安装包镜像挂载

将 dm8的镜像文件包上传到服务器上。

3.1创建挂载目录;

mkdir /home/dmdba/mnt

3.2执行挂载操作;

mount /home/dmdba/dm8Iso/dm8_20250822_x86_centos7_64.iso /home/dmdba/mnt

备注:提示/dev/loop0 is write-protected, mounting read-only
这是因为/dev/loop0是写保护的,以只读的方式挂载
正常只读权限是足够的

3.3查看是否挂载成功,进入挂载目录查看是否挂载成功;

ll mnt/

如图下所示,挂载成功。
image.png

4.软件安装

4.1 切换用户,使用root用户会出现各种权限问题

su - dmdba

4.2 执行安全安装,在可执行文件后面加“-i”;不加-i会以图形化展示

./DMInstall.bin -i
1为简体中文。2为英文
image.png

4.3按照提示,选择安装语言,输入 Key 文件地址;

备注:可以暂时先不输入 Key 文件地址,后续再将 dm.key 文件放到安装目录的 bin 目录下。
image.png

4.4选择时区(21为中国标准时间)

image.png

4.5安装类型(典型安装,即同时安装客户端以及服务器端),安装目录,确认空间,安装小结

image.png

4.6安装过程

image.png

4.7安装完根据提示,使用root用户执行脚本

忘记切换,脚本里也会有验证信息
非root用户会提示:必须以 root身份执行此脚本!

su - root
cd /home/dmdba/dmdbms/script/root/
./root_installer.sh

image.png

4.8脚本详解:

image.png
RUID=/usr/bin/id|awk -F\( '{print $1}'|awk -F\= '{print $2}'
id命令是为了验证是否为root用户
使用awk命令用“(”为分隔符进行查询, -F /分隔符,同--field-separator
/( 使用“(”为分隔符进行查询,特殊字符需要使用反斜杠,否则会有如下报错
{print $1} 输出指定列
至此,数据库安装完成。

三、初始化数据库

1.初始化实例

1.1根据用户实际的需求创建数据库的建库参数,常用参数如下

PATH:初始数据库存放的路径。默认路径为 dminit 当前所在的工作目录。文件路径长度最大为 256 个字符,PATH 为可选参数。生产环境中,该路径可根据前期规划的路径进行修改,一般为最大空间路径。
EXTENT_SIZE:数据文件使用的簇大小,即每次分配新的段空间时连续的页数。取值:16、32、64。单位:页数。缺省值 16。EXTENT_SIZE 为可选参数。生产环境中该参数建议设置为 32,或依据用户实际需求进行指定。
PAGE_SIZE:数据文件使用的页大小。取值:8、16、32,单位:K。默认值为 8。可选参数。选择的页大小越大,则支持的元组长度也越大,但同时空间利用率可能下降。
CASE_SENSITIVE:1代表大小写敏感(默认敏感),0代表大小写不敏感
CHARSET/UNICODE_FLAG:字符集(默认是0代表GB18030,1为UTF-8)
LENGTH_IN_CHAR:VARCHAR类型长度是否以字符为单位(N),0表示以字节为单位,1表示以字符为单位,默认值为0.
在达梦数据库中,页大小可以为 8 KB、16 KB 或者 32 KB,一旦创建好了数据库,在该库的整个生命周期内,页大小都不能够改变。如果系统中存在或者以后可能存在含有较长的字符串类型的表,建议该参数设置为 16 或者 32。页大小设置越大,最后数据文件的物理大小就会越大,系统运行时,每次从磁盘调入内存的数据单位也就越大。除了每个字段的最大长度限制外,每条记录总长度不能大于页面大小的一半。如下表所示:
注意:即使这些参数初始化的时候没有手动设置,初始化的时候系统也会给定一个默认的值,具体的可以通过命令./dminit help查看。

1.2进入达梦安装bin目录下,使用 dminit 工具初始化数据库;

注:切换至dmdba用户,安装路径为dmdbms,使用工具在bin下
image.png
1.2 查看 dminit 关键字
image.png

1.3 创建实例

创建一个数据库实例为页大小32、簇大小32、大小写敏感、字符集UTF-8的库,数据库名DMCS,实例名DMCS 方法如下:
./dminit 参数名=参数值 参数名=参数值....

cd /home/dmdba/dmdbms/bin
./dminit path=/dmdata/dmdb page_size=32 extent_size=32 case_sensitive=1 charset=1 db_name=DMCS instance_name=DMCS

实际实行初始化失败,报错内容如下图
image.png
file dm.key not found, use default license!
没找到dm.key,因为安装时没有没有输入key。这个不影响使用。

please set [SYSDBA_PWD] value. Passwords length [8, 48], contain uppercase and lowercase characters combined with numbers。
是因为创建实例时必须设置数据库系统用户初始密码,并保证一定的密码强度,以保障数据安全性。
我们根据报错重新创建实例。

./dminit path=/dmdata/dmdb page_size=32 extent_size=32 case_sensitive=1 charset=1 db_name=DMCS instance_name=DMCS SYSDBA_PWD=DMcs12345 SYSAUDITOR_PWD=DMcs12345
![image.png](https://download.dameng.com/eco-file-server/file/eco/preview/20251017231318TIRYUXS424MCZWDWAH)

1.4启动实例;

第一次创建完的数据库,需要前台启动一次数据库实例,否则无法正常运行;

./dmserver /dmdata/dmdb/DMDB/dm.ini

当看到前台页面出现类似SYSTEM IS READY字样后,表示数据库启动成功,然后直接输入exit退出前台启动,此步骤是为了验证数据库服务是否正常
image.png

2.注册数据库服务

初始化实例后使用root用户实例服务脚本为dm_service_installer.sh,用户可以使用注册服务脚 本将服务脚本注册成为操作系统服务。

su - root
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/dmdb/DMOA/dm.ini -p _DMOA

注:意思是注册类型为dmsever ,后缀名为DMSERVER的服务。
-t 为服务类型,注册服务类型,支持以下服务类型:dmap、dmamon 、dmserver、dmwatcher、dmmonitor、dmasmsvr、dmcss、dmcssm 、dmdrs、dmdras、dmdcs、dmdss。
image.png
-p 为服务名后缀,指定服务名后缀,生成的操作系统服务名为“服务脚本模板名称+服务名后缀”。
image.png
-dm_ini 指定服务所需要的 dm.ini 文件路径。
image.png

这样在/home/dmdba/dmdbms/bin路径下,生成一个DmService_dmcs的文件。
通过 ./DmService_dmcs start/stop的方式启动/停止数据库
等同于 ./dmserver /dmdata/dmdb/DMCS/dm.ini

3.启动数据库服务

注册数据库服务后,进入安装目录的 bin 文件下,通过服务脚本的方式启动达梦数据库服务。

3.1进入安装目录的 bin 文件;启动服务

cd /home/dmdba/dmdbms/bin
./DmService_dmcs start  

image.png

3.2查看数据库服务状态;

./ DmService_dmcs status

image.png

3.3停止数据库服务;

./DmService_dmcs stop

image.png

四、数据库配置

1.扩充redolog

达梦数据库服务启动后,disql或者manager图形化工具连接,然后执行以下命令扩充redolog,注意根据实际情况修改SQL中的log名,如果不确认,先进入数据目录查看,比如初始化的实例数据目录为/dmdata/dmdb/DMDB/,则此目录下默认会有xx01.log和xx02.log的两个文件,这两个文件就是需要操作的redolog文件。
通过管理工具登录到SYSDBA用户下执行:
image.png
1.扩充当前日志,根据专家建议扩为4G;

ALTER DATABASE RESIZE LOGFILE 'DMCS01.log ' TO 4096;
ALTER DATABASE RESIZE LOGFILE 'DMCS02.log' TO 4096;

image.png
3.增加2个4G的日志文件

ALTER DATABASE ADD LOGFILE 'DMCS03.log' SIZE 2048;
ALTER DATABASE ADD LOGFILE 'DMCS04.log' SIZE 2048;
##暂时不支持直接增加4G的
ALTER DATABASE RESIZE LOGFILE 'DMCS03.log' TO 4096;
ALTER DATABASE RESIZE LOGFILE 'DMCS04.log' TO 4096;

image.png
image.png

2.设置数据库的归档

设置数据库的归档,可以在数据丢失的情况下,通过备份文件和归档文件去基于指定时间还原数据库,并找回数库,这一步在生产上面一定要开启。
通过disql或者管理工具连接数据库,然后执行以下命令:
示例:配置单个归档文件大小为512M,归档日志空间上限上500G(512000M),归档文件存放目录为/dmdata/dmarch/arch,这些都可根据自己实际规划的大小和路径进行自定义修改。
备注:必须按照顺序执行

先将数据库改为mount状态;
alter database mount;
添加归档日志配置
alter database archivelog;
配置数据库的归档日志设置
alter database add archivelog 'dest=/dmdata/dmarch/arch,TYPE=local,FILE_SIZE=512,SPACE_LIMIT=512000';
将数据库改为打开状态
alter database open;

3.设置定时备份作业

设置每周六凌晨12点全量备份,每周除周六外,其他时间每天凌晨12点增量备份,每天凌晨12点定时运行删除30天前的全量和增量备份,注意修改脚本中的路径为实际规划好的备份文件的路径
方法一:如果能打开manager图形化管理工具,则直接复制框中的内容,执行;
注:使用sysdba执行,或者授予普通用户DBA权限

GRANT ADMIN JOB TO 用户名;

3.1创建作业系统表;

SP_INIT_JOB_SYS(1);

image.png

3.2定时每周六运行,进行全量备份;

--创建作业JOB_FULL_BAK_TIMELY
call SP_CREATE_JOB('JOB_FULL_BAK_TIMELY',1,0,'',0,0,'',0,'每周六全量');
--开始作业配置
call SP_JOB_CONFIG_START('JOB_FULL_BAK_TIMELY');
--添加作业步骤-备份操作
call SP_ADD_JOB_STEP('JOB_FULL_BAK_TIMELY', '定时全量备份', 6, '01000000/dmdata/dmbak/bak', 1, 2, 0, 0, NULL, 0);
--设置作业调度计划
call SP_ADD_JOB_SCHEDULE('JOB_FULL_BAK_TIMELY', 'JOB_FULL_BAK_TIMELY', 1, 1, 1, 64, 0, '02:00:00', NULL, '2025-09-25 00:00:00', NULL, '');
--COMMIT提交作业
call SP_JOB_CONFIG_COMMIT('JOB_FULL_BAK_TIMELY');

image.png
image.png

4.做一次全库备份

达梦数据库的增量备份是基于全量备份进行执行,所以我们在第一搭建完成数据库之后,可以手动对数据库做一个物理的全库备份,这样可以确保第二天的增量备份文件顺利生成。
通过disql或者管理工具登录到SYSDBA系统管理员用户下,联机状态下做一个物理备份;

backup database backupset ‘/dmdata/dmbak/bak’

常见报错,没有添加分号作为结尾,引号没有用英文
image.png
常见报错,备份路径没权限,需要查看当前用户是否哦有备份权限,以及配置路径是否存在
image.png

5.开启SQL日志

开启数据库的SQL日志,可以记录应用层面或者数据库层面执行的sql语句,如果空间足够可以设置打开SQL日志,若不需要则可以跳过此步。

5.1通过修改sqllog.ini设置SQL日志的相关策略;

操作方法为修改sqllog.ini文件,里面没有的参数可以去掉,此处日志文件上限配置的是500G,即switch_limit * file_num / 1024 =500G,注意修改配置文件中的路径.

cd /dmdata/dmdb/DMCS/
vi sqllog.ini

image.png

BUF_TOTAL_SIZE  = 65536
BUF_SIZE = 1024 
BUF_KEEP_CNT = 6
[SLOG_ALL]
        FILE_PATH  =  /dmdata/dmlog/log
        PART_STOR  =  0
        SWITCH_MODE  =  2
        SWITCH_LIMIT  =  2000
        ASYNC_FLUSH  = 1
        FILE_NUM  =  256

5.2 sqllog.ini文件配置完成后,在命令行中调用存储过程开启监控;

CALL SP_REFRESH_SVR_LOG_CONFIG();
image.png
SP_SET_PARA_VALUE(1,'SVR_LOG',2);
image.png

通过查询日志 也可以看到刚刚执行的语句
image.png

5.3若已配置,再次修改sqllog.ini文件后,则需要重新打开;

SP_SET_PARA_VALUE(1,'SVR_LOG',0);
CALL SP_REFRESH_SVR_LOG_CONFIG();
SP_SET_PARA_VALUE(1,'SVR_LOG',2);

6.创建DMDBA用户

为了防止SYSDBA系统管理员用户的密码被修改次数过多忘记,则可以考虑创建一个DMDBA的备份管理员账户,并赋予DBA角色;当SYSDBA系统管理员密码忘记后,可以通过此DMDBA备份管理员找回SYSDBA系统管理员的密码,若不需要可跳过此步骤。
方法一:若能打开manager图形化管理界面,则可以用此工具连接数据库后在用户对象那里直接创建;
方法二:若无法打开manager图形化管理界面,则可以用disql连接数据库,然后通过SQL命令创建;
create user DMDBA identified by “DMdba12345”;
grant DBA to DMDBA;

image.png

五、重启服务器

数据库全部调整部署完成后,可以通过对数据库服务器执行一次reboot服务器重启的操作,主要是检查前面设置的相关配置是否生效,防火墙开机是否自动关闭、数据盘开启是否开机自动挂载、IP网卡是否自动开启、操作系统资源限制是否生效、数据库服务是否开机自动启动,数据库优化参数是否生效等。

1.查看防火墙策略开机自动关闭;

执行命令:systemctl status firewalld
image.png

2.查看IP网卡开机自启,业务ip地址是否存在;

执行命令:ifconfig或者ip r
image.png

3.操作系统资源限制信息,查看dmdba用户下对应的资源限制是否生效

执行linux命令:ulimit -a
image.png

4.查看数据库进程是否存在;

执行ps -ef| grep dmdba
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服