达梦数据库安装最详细教程

科技   2024-09-30 14:00   江苏  

大家好,这里是公众号 DBA学习之路,分享一些学习国产数据库路上的知识和经验。

前言

达梦是国产数据库中第一家上市的公司,在未来信创路上应该会越走越顺,所以对于国产数据库学习比较迷茫的同学,可以考虑先学习达梦数据库。

学习任何一种数据库之前,都需要先安装好数据库环境,所以安装是 DBA 的必备技能之一,本文分享一下达梦数据库的单机安装过程,希望可以帮助大家快速部署达梦数据库。

环境信息

本文的安装环境信息如下:

主机名IP地址操作系统版本达梦版本磁盘空间内存
dm8192.168.6.145rhel7.920240712100G8G

关于 Linux 主机安装,建议不要使用最小化安装,达梦安装对于一些命令是有要求的,最小化不包含这些命令,比如 tar 命令。

安装包下载

当前达梦官方提供的最新版本为 DM8_20240712,可以在 达梦官网[1] 直接下载:

达梦8的数据库安装介质下载地址: https://eco.dameng.com/download

安装前配置

在正式安装达梦数据库之前需要检查或修改操作系统的配置,以保证数据库能够正确安装和稳定运行。

检查系统信息

首先,参照官方文档进行一些系统信息方面的查询:

## 查看系统版本信息
[root@dm8:/root]# cat /etc/os-release 
NAME="Red Hat Enterprise Linux Server"
VERSION="7.9 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.9"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.9 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.9:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.9
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="7.9"

## 查看架构
[root@dm8:/root]# uname -m
x86_64

关闭防火墙

安装数据库建议关闭防火墙这是共识,达梦也一样:

[root@dm8:/root]# systemctl stop firewalld.service
[root@dm8:/root]# systemctl disable firewalld.service

关闭 SELINUX

建议关闭 SELNUX,防止造成一些不必要的问题:

[root@dm8:/root]# setenforce 0
[root@dm8:/root]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

关闭透明大页和numa

Transparent HugePages (透明大页)可能对系统的性能产生影响,所以建议关闭:

## 修改配置文件,禁用透明大页和numa
[root@dm8:/root]# sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub

## 生效配置
[root@dm8:/root]# grub2-mkconfig -o /boot/grub2/grub.cfg

创建安装用户

达梦数据库不建议使用 root 进行安装,所以需要创建一个 dmdba 用户来安装数据库:

## 创建 dinstall 组
[root@dm8:/root]# groupadd -g 56781 dinstall

## 创建 dmdba 用户
[root@dm8:/root]# useradd -u 56781 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

## 修改 dmdba 用户密码
[root@dm8:/root]# echo dmdba | passwd --stdin dmdba

## 查看用户
[root@dm8:/root]# id dmdba
uid=56781(dmdba) gid=56781(dinstall) 组=56781(dinstall)

创建安装目录及授权

提前创建达梦数据库的安装目录以及数据存放目录:

[root@dm8:/root]# mkdir /dm
[root@dm8:/root]# mkdir -p /dm{arch,bak,data}
[root@dm8:/root]# chown -R dmdba.dinstall /dm /soft /dmdata /dmarch /dmbak
[root@dm8:/root]# chmod -R 775 /dm{arch,bak,data} /dm

调整 sysctl.conf 参数

系统参数配置文件 /etc/sysctl.conf 是一个允许改变正在运行中的 Linux 系统接口,以下系统参数为达梦数据库最佳参数配置,其中包含 swap 禁用等必要性的配置:

[root@dm8:/root]# cat <<-EOF >>/etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
fs.nr_open = 20480000
kernel.core_pattern = /dmbak/dmcore/core.%e.%p.%t
kernel.panic_on_oops = 1
kernel.numa_balancing = 0
kernel.randomize_va_space = 2
kernel.shmall = 2097152
kernel.shmmax = 8369385471
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.tcp_retries2 = 3
net.ipv4.tcp_fin_timeout = 5
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.tcp_wmem = 8192 65536 16777216
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.swappiness = 10
vm.min_free_kbytes = 40866
vm.numa_stat = 0
vm.overcommit_memory = 0
vm.zone_reclaim_mode = 0
EOF

## 激活参数配置
[root@dm8:/root]# sysctl -p

调整 limits.conf 参数

在 Linux 系统中,操作系统默认会对程序使用资源进行限制。如果不取消对应的限制,则数据库的性能将会受到影响:

[root@dm8:/root]# cat <<-EOF>>/etc/security/limits.conf
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nproc 10240
dmdba hard nproc 10240
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba hard data unlimited
dmdba soft data unlimited
dmdba hard fsize unlimited
dmdba soft fsize unlimited
dmdba soft stack  65536
dmdba hard stack  65536
EOF

调整 login 参数

limits.conf 文件实际是 Linux PAM (插入式认证模块,Pluggable Authentication Modules 中 pam_limits.so 的配置文件),突破系统的默认限制,对系统访问资源有一定保护作用,建议配置如下:

## 配置 pam.d
[root@dm8:/root]# cat <<-EOF >>/etc/pam.d/login
session required pam_limits.so
session required /lib64/security/pam_limits.so
EOF

调整 system.conf 参数

达梦数据库服务注册为系统服务的进程,如通过 systemctl 或者 service 方式设定随机自启动的数据库服务,其能打开的最大文件描述符、proc 数量等不受 limits.conf 控制,需要修改 /etc/systemd/system.conf 文件:

[root@dm8:/root]# cat <<-EOF>>/etc/systemd/system.conf
DefaultLimitCORE=infinity
DefaultLimitNOFILE=65536
DefaultLimitNPROC=10240
EOF

调整 RemoveIPC 参数

RemoveIPC 参数会控制当前用户在完全注销时,是否删除属于用户自己的 Systemd V 和 POSIX IPC 对象,可能会引起一些问题,建议关闭:

[root@dm8:/root]# vi /etc/systemd/logind.conf
## 修改 RemoveIPC 的值为 no
RemoveIPC=no

调整 nproc.conf 参数

nproc 是操作系统级别对每个用户创建的进程数的限制,达梦数据库建议配置该文件来适配文件打开数,系统进程等资源:

[root@dm8:/root]# cat <<-EOF>>/etc/security/limits.d/dm_nproc.conf 
dmdba soft nproc 65536
dmdba hard nproc 65536
EOF

配置环境变量

配置 dmdba 用户的环境变量文件,用于达梦数据库的便捷使用:

## 配置 dmdba 环境变量
[dmdba@dm8:~]$ cat <<-\EOF>>/home/dmdba/.bash_profile
export DM_HOME="/dm"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DM_HOME/bin"
export PATH="$PATH:$DM_HOME/bin:$DM_HOME/tool"
export PS1="[\u@\h:\w]$ "
alias dmbin="cd $DM_HOME/bin"
alias dmlog="cd $DM_HOME/log"
EOF

安装达梦数据库

安装同时支持图形化安装,命令行安装,静默安装三种方式。本文使用 命令行安装 方式进行安装。

挂载达梦 ISO 安装镜像

将官网下载的安装包上传到安装主机上,并进行解压,会得到一个 dm8_20240712_x86_rh7_64.iso 镜像文件,也就是达梦安装镜像,需要挂载后进行安装:

## 挂载 DM iso 安装镜像
[root@dm8:~]$ unzip -q /soft/dm8_20240712_x86_rh7_64.zip -d /soft
[root@dm8:~]$ cd /soft/dm8_20240712_x86_rh7_64
[root@dm8:/root]# mount -o loop /soft/dm8_20240712_x86_rh7_64.iso /opt/
## 拷贝安装文件至 /soft
[root@dm8:/opt]$ cp /opt/DMInstall.bin /soft
## 取消挂载
[root@dm8:/root]# umount /opt
## 目录授权
[root@dm8:/root]# chown -R dmdba:dinstall /soft
[root@dm8:/root]# chmod -R 775 /soft

命令行安装

1、执行安装命令:

## 切换至 dmdba 用户
[root@dm8:/root]# su - dmdba
[dmdba@dm8:~]$ cd /soft/
## 执行命令行安装
[dmdba@dm8:/soft]$ ./DMInstall.bin -i

2、按需求选择安装语言,默认为中文。本地安装选择【不输入 Key 文件】,选择【默认时区 21】。

3、选择【1-典型安装】,按已规划的安装目录 /dm 完成数据库软件安装,不建议使用默认安装目录。

4、安装完成,提示使用 root 用户执行 root 脚本:

[root@dm8:/root]# /dm/script/root/root_installer.sh
移动 /dm/bin/dm_svc.conf 到/etc目录
创建DmAPService服务
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务

至此,达梦数据库软件已经安装完成。

命令行配置实例

接下来就需要使用 dmdba 用户创建达梦数据库,使用 dminit 命令初始化实例。

[dmdba@dm8:~]$ dminit PATH=/dmdata \
EXTENT_SIZE=32 \
PAGE_SIZE=32 \
CASE_SENSITIVE=Y \
CHARSET=1 \
LOG_SIZE=1024 \
DB_NAME=DAMENG \
INSTANCE_NAME=DMSERVER \
PORT_NUM=5236 \
BLANK_PAD_MODE=0

## 建库过程如下
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-07-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dmdata/DAMENG/DAMENG01.log


 log file path: /dmdata/DAMENG/DAMENG02.log

write to dir [/dmdata/DAMENG].
create dm database success. 2024-09-18 15:03:59

📢 注意:dminit 命令可设置多种参数,可执行如下命令查看可配置参数。

[dmdba@dm8:~]$ dminit help
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-07-03
version: 03134284194-20240703-234060-20108 Pack1
格式: ./dminit     KEYWORD=value

例程: ./dminit     PATH=/public/dmdb/dmData PAGE_SIZE=16

关键字                     说明(默认值)
--------------------------------------------------------------------------------
INI_FILE                   初始化文件dm.ini存放的路径
PATH                       初始数据库存放的路径
CTL_PATH                   控制文件路径
LOG_PATH                   日志文件路径
EXTENT_SIZE                数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页
PAGE_SIZE                  数据页大小(8),可选值:4, 8, 16, 32,单位:K
LOG_SIZE                   日志文件大小(2048),单位为:M,范围为:256M ~ 8G
CASE_SENSITIVE             大小敏感(Y),可选值:Y/N,1/0
CHARSET/UNICODE_FLAG       字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
SEC_PRIV_MODE              权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[EVAL],3[ZB]
SYSDBA_PWD                 设置SYSDBA密码(SYSDBA)
SYSAUDITOR_PWD             设置SYSAUDITOR密码(SYSAUDITOR)
DB_NAME                    数据库名(DAMENG)
INSTANCE_NAME              实例名(DMSERVER)
PORT_NUM                   监听端口号(5236)
BUFFER                     系统缓存大小(8000),单位M
TIME_ZONE                  设置时区(+08:00)
PAGE_CHECK                 页检查模式(3),可选值:0/1/2/3
PAGE_HASH_NAME             设置页检查HASH算法
EXTERNAL_CIPHER_NAME       设置默认加密算法
EXTERNAL_HASH_NAME         设置默认HASH算法
EXTERNAL_CRYPTO_NAME       设置根密钥加密引擎
RLOG_ENCRYPT_NAME          设置日志文件加密算法,若未设置,则不加密
RLOG_POSTFIX_NAME          设置日志文件后缀名,长度不超过10。默认为log,例如DAMENG01.log
USBKEY_PIN                 设置USBKEY PIN
PAGE_ENC_SLICE_SIZE        设置页加密分片大小,可选值:0、512、4096,单位:Byte
ENCRYPT_NAME               设置全库加密算法
BLANK_PAD_MODE             设置空格填充模式(0),可选值:0/1
SYSTEM_MIRROR_PATH         SYSTEM数据文件镜像路径
MAIN_MIRROR_PATH           MAIN数据文件镜像
ROLL_MIRROR_PATH           回滚文件镜像路径
MAL_FLAG                   初始化时设置dm.ini中的MAL_INI(0)
ARCH_FLAG                  初始化时设置dm.ini中的ARCH_INI(0)
MPP_FLAG                   Mpp系统内的库初始化时设置dm.ini中的mpp_ini(0)
CONTROL                    初始化配置文件(配置文件格式见系统管理员手册)
AUTO_OVERWRITE             是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖
USE_NEW_HASH               是否使用改进的字符类型HASH算法(1)
ELOG_PATH                  指定初始化过程中生成的日志文件所在路径
AP_PORT_NUM                分布式环境下协同工作的监听端口
HUGE_WITH_DELTA            是否仅支持创建事务型HUGE表(1) 1:是 0:否
RLOG_GEN_FOR_HUGE          是否生成HUGE表REDO日志(1) 1:是 0:否
PSEG_MGR_FLAG              是否仅使用管理段记录事务信息(0) 1:是 0:否
CHAR_FIX_STORAGE           CHAR是否按定长存储(N),可选值:Y/N,1/0
SQL_LOG_FORBID             是否禁止打开SQL日志(N),可选值:Y/N,1/0
DPC_MODE                   指定DPC集群中的实例角色(0) 0:无 1:MP 2:BP 3:SP,取值1/2/3时也可以用MP/BP/SP代替
USE_DB_NAME                路径是否拼接DB_NAME(1) 1:是 0:否
MAIN_DBF_PATH              MAIN数据文件存放路径
SYSTEM_DBF_PATH            SYSTEM数据文件存放路径
ROLL_DBF_PATH              ROLL数据文件存放路径
TEMP_DBF_PATH              TEMP数据文件存放路径
ENC_TYPE                   数据库内部加解密使用的加密接口类型(1), 可选值: 1: 优先使用EVP类型 0: 不启用EVP类型
HELP                       打印帮助信息

这里发现之前的一个参数 LENGTH_IN_CHAR 取消了,因为达梦增加了 varchar2(n char) 这种语法。

注册数据库服务

使用 root 用户进入数据库安装目录的 /script/root 下注册服务,注册服务是为了便于启动和关闭达梦数据库实例:

[root@dm8:/root]# cd /dm/script/root/
## 注册服务
[root@dm8:/dm/script/root]# ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/DAMENG/dm.ini -p DMSERVER
## 配置服务开机自启
[root@dm8:/dm/script/root]# systemctl enable DmServiceDMSERVER.service
## 开启服务
[root@dm8:/dm/script/root]# systemctl start DmServiceDMSERVER.service
## 查看服务状态
[root@dm8:/dm/script/root]# systemctl status DmServiceDMSERVER.service

命令行启停数据库

服务注册成功后,启停数据库,如下所示:

## 查看当前数据库服务状态
[root@dm8:/root]# systemctl status DmServiceDMSERVER.service
## 关闭数据库
[root@dm8:/root]# systemctl stop DmServiceDMSERVER.service
## 打开数据库
[root@dm8:/root]# systemctl start DmServiceDMSERVER.service
## 重启数据库
[root@dm8:/root]# systemctl restart DmServiceDMSERVER.service

开启数据库也可以使用命令:

[dmdba@dm8:~]$ dmserver /dmdata/DAMENG/dm.ini

也可以通过以下命令执行:

## 打开数据库
[dmdba@dm8:~]$ DmServiceDMSERVER start
## 关闭数据库
[dmdba@dm8:~]$ DmServiceDMSERVER stop
## 重启数据库
[dmdba@dm8:~]$ DmServiceDMSERVER restart
## 查看当前数据库服务状态
[dmdba@dm8:~]$ DmServiceDMSERVER status

连接访问数据库

使用 disql 命令连接达梦数据库:

## 达梦数据库默认的用户密码均为 SYSDBA
[dmdba@dm8:~]$ disql SYSDBA/SYSDBA

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 5.455(ms)
disql V8
SQL> select name from v$database;

行号     NAME  
---------- ------
1          DAMENG

已用时间: 1.825(毫秒). 执行号:64801.

至此,达梦数据库安装部署结束,可以愉快的玩耍了。

参考资料

[1]

达梦官网: https://eco.dameng.com

- END -

Lucifer三思而后行
不积跬步,无以至千里;不积小流,无以成江海。一位籍籍无名的数据库爱好者!
 最新文章