CentOS7.9命令行安装国产化达梦数据库8.0过程

前言

近期,由于越来越多的国有企业都有国产化的需要,所以使用国产服务器系统和国产化的数据库的国有企业也越来越多了,其中国产达梦DM数据库就是其中用于替代Oracle或MySQL的主要产品。

恰逢此时,有国有企业项目其中之一的需求就是将Oracle数据库迁移到国产达梦DM数据库中。要验证迁移Oracle数据库到国产达梦DM数据库就必须要有国产达梦DM数据库环境,故而在这篇文章里我们研究为记录下在CentOS7.9这个系统下静默安装(非图形界面)达梦DM数据库8.0的过程。之后有时间再补充一些达梦的安装和迁移过程。

在阅读本文前,我默认你熟悉Linux系统,并知道一些简单的命令,同时也知道如何使用shell客户端工具连接到Linux系统中进行操作,本文就不再做额外的说明了。

一、安装前准备

1、本文适用范围与环境、软件

[root@alye1 ~]# uname -a
Linux alye1 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
[root@alye1 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
[root@alye1 ~]# free -m
total used free shared buff/cache available
Mem: 1756 389 327 0 1039 1195
Swap: 0 0 0

提示:本文使用了阿里云的ECS云服务器,配置为:2个X86架构CPU核心、2G内存、3M带宽、40G系统盘。

达梦数据库8.0版本与下载(建议使用迅雷等P2P下载工具下载)

Linux X64:https://download.dameng.com/eco/adapter/DM8/202407/dm8_20240712_x86_rh7_64.zip

Windows X64:https://download.dameng.com/eco/adapter/DM8/202407/dm8_20240710_x86_win_64.zip

如有需要可到达梦的官网中查看:产品下载-达梦数据 (dameng.com)

注意:需要下载的是 DM8开发版

2、新建 dmdba 用户

安装前必须创建 dmdba 用户,禁止使用 root 用户安装数据库。在root身份下,按以下命令操作即可。

## 创建 dmdba 用户所在的组
[root@alye1 ~]# groupadd dminstall
## 创建 dmdba 用户并指向所在的组
[root@alye1 ~]# useradd -g dminstall dmdba
## 给 dmdba 用户设置密码,注意密码需要输入两次最好是8位或以上的长度,输入过程不会显示内容
[root@alye1 ~]# passwd dmdba
Changing password for user dmdba.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

3、修改文件打开最大数

在 Linux、Solaris、AIX 和 HP-UNIX 等系统中,操作系统默认会对程序使用资源进行限制。如果不取消对应的限制,则数据库的性能将会受到影响。继续在root身份下,按以下命令操作即可。

[root@alye1 ~]# vi /etc/security/limits.conf

# 按i键进入编辑,移动到最下方,添加以下内容后按 Esc 后再输入 :qw! 回车保存
dmdba soft nofile 65536
dmdba hard nofile 65536

image-20240831110512385

注意:我这里截图的内容可能会与你的有出入,可自行找地方插入内容,也可将内容放到最后亦可。修改保存后需要生效可重新切换身份用户,或使用 reboot 命令重启操作系统。

4、目录规划与权限

可根据实际需求规划安装目录,本示例使用默认配置 DM 数据库安装在 /app/dmdb8/appData/ 文件夹下,数据库实例安装在 /app/dmdb8/dbData/ 文件夹下。继续在root身份下,按以下命令操作。

## 新建 DM 数据库程序安装目录
[root@alye1 ~]# mkdir -p /app/dmdb8/appData/
## 新建 DM 数据库实例安装目录
[root@alye1 ~]# mkdir /app/dmdb8/dbData/
## 将新建的路径目录权限的用户修改为 dmdba,用户组修改为 dminstall
[root@alye1 ~]# chown -R dmdba:dminstall /app/dmdb8/

5、 防火墙开放对应的端口

继续在root身份下,按以下命令操作。

## 先重启防火墙
[root@alye1 ~]# systemctl restart firewalld.service
## 开放5236的TCP端口
[root@alye1 ~]# firewall-cmd --zone=public --add-port=5236/tcp --permanent
success
## 再次重启重启防火墙使配置生效
[root@alye1 ~]# systemctl restart firewalld.service
## 列出当前开放的端口,已经可以看到5236已在列表中了
[root@alye1 ~]# firewall-cmd --list-port
80/tcp 443/tcp 8080/tcp 8081/tcp 3306/tcp 22/tcp 5236/tcp

二、数据库命令行安装

1、挂载镜像

继续 root 用户身份下,将1.1中下载的 DM 数据库的安装文件:dm8_20240712_x86_rh7_64.zip 安装包保存在任意位置,例如 /root 目录下,执行如下命令挂载镜像:

[root@alye1 ~]# cd /root/
[root@alye1 ~]# ll
total 1713912
-rw-r--r-- 1 root root 1086108981 Aug 31 09:49 dm8_20240712_x86_rh7_64.zip
## 使用unzip解压文件,如果提示没有这个命令则使用 yum -y install unzip 命令安装 unzip 包。
[root@alye1 ~]# unzip dm8_20240712_x86_rh7_64.zip
Archive: dm8_20240712_x86_rh7_64.zip
inflating: dm8_20240712_x86_rh7_64.README
inflating: dm8_20240712_x86_rh7_64.iso
inflating: dm8_20240712_x86_rh7_64.iso_SHA256.txt
[root@alye1 ~]# ll
total 2791872
-rw-r--r-- 1 root root 1103818752 Jul 26 17:36 dm8_20240712_x86_rh7_64.iso
-rw-r--r-- 1 root root 100 Jul 26 17:37 dm8_20240712_x86_rh7_64.iso_SHA256.txt
-rw-r--r-- 1 root root 240 Jul 26 17:36 dm8_20240712_x86_rh7_64.README
-rw-r--r-- 1 root root 1086108981 Aug 31 09:49 dm8_20240712_x86_rh7_64.zip
## 新建 /mnt/iso 目录用于挂载上一步解压出来的iso文件
[root@alye1 ~]# mkdir -p /mnt/iso
## 挂载iso镜像到 /mnt/iso 目录
[root@alye1 ~]# mount -o loop dm8_20240712_x86_rh7_64.iso /mnt/iso
mount: /dev/loop0 is write-protected, mounting read-only
[root@alye1 ~]#

此时使用 root 身份的前期所有准备工作已完成。

2、命令行安装数据库

切换至 dmdba 用户下,在 /mnt/iso 目录下使用命令行安装数据库程序,依次执行以下命令安装 DM 数据库。

## 切换到dmdba用户
[root@alye1 ~]# su - dmdba
[dmdba@alye1 ~]$ cd /mnt/iso
[dmdba@alye1 iso]$ ll
total 1077886
-r-xr-xr-x 1 root root 2853242 Jun 17 14:26 DM8 Install.pdf
-r-xr-xr-x 1 root root 1100901663 Jul 12 13:28 DMInstall.bin
## 执行安装命令
[dmdba@alye1 iso]$ ./DMInstall.bin -i
Installer Language:
[1]: 简体中文
[2]: English
## 提示选择语言,这里选择1简体中文,直接回车表示默认选择2English
Please select the installer's language [2]:1
解压安装程序.........
硬件架构校验通过!
欢迎使用达梦数据库安装程序

## 我们暂时没有key,所以这里选择n先试用1年
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n

## 输入y需要设置时区,默认直接回车亦可
是否设置时区? (Y/y:是 N/n:否) [Y/y]:y
设置时区:
[ 1]: (GTM-12:00) 日界线西
[ 2]: (GTM-11:00) 萨摩亚群岛
[ 3]: (GTM-10:00) 夏威夷
[ 4]: (GTM-09:00) 阿拉斯加
[ 5]: (GTM-08:00) 太平洋时间(美国和加拿大)
[ 6]: (GTM-07:00) 亚利桑那
[ 7]: (GTM-06:00) 中部时间(美国和加拿大)
[ 8]: (GTM-05:00) 东部部时间(美国和加拿大)
[ 9]: (GTM-04:00) 大西洋时间(美国和加拿大)
[10]: (GTM-03:00) 巴西利亚
[11]: (GTM-02:00) 中大西洋
[12]: (GTM-01:00) 亚速尔群岛
[13]: (GTM) 格林威治标准时间
[14]: (GTM+01:00) 萨拉热窝
[15]: (GTM+02:00) 开罗
[16]: (GTM+03:00) 莫斯科
[17]: (GTM+04:00) 阿布扎比
[18]: (GTM+05:00) 伊斯兰堡
[19]: (GTM+06:00) 达卡
[20]: (GTM+07:00) 曼谷,河内
[21]: (GTM+08:00) 中国标准时间
[22]: (GTM+09:00) 首尔
[23]: (GTM+10:00) 关岛
[24]: (GTM+11:00) 所罗门群岛
[25]: (GTM+12:00) 斐济
[26]: (GTM+13:00) 努库阿勒法
[27]: (GTM+14:00) 基里巴斯
## 选择 [21]: (GTM+08:00) 中国标准时间
请选择时区 [21]:21

安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
## 这里选择 典型安装,默认回车即可
请选择安装类型的数字序号 [1 典型安装]:
所需空间: 2284M
## 这里选择安装目录,我们更改为我们的规划的目录:/app/dmdb8/appData
请选择安装目录 [/home/dmdba/dmdbms]:/app/dmdb8/appData
可用空间: 27G
是否确认安装路径(/app/dmdb8/appData)? (Y/y:是 N/n:否) [Y/y]:

安装前小结
安装位置: /app/dmdb8/appData
所需空间: 2284M
可用空间: 27G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2024-08-31 11:35:05
[INFO] 安装达梦数据库...
2024-08-31 11:35:05
[INFO] 安装 基础 模块...
2024-08-31 11:35:40
[INFO] 安装 服务器 模块...
2024-08-31 11:35:45
[INFO] 安装 客户端 模块...
2024-08-31 11:36:03
[INFO] 安装 驱动 模块...
2024-08-31 11:36:08
[INFO] 安装 手册 模块...
2024-08-31 11:36:09
[INFO] 安装 服务 模块...
2024-08-31 11:36:10
[INFO] 移动日志文件。
2024-08-31 11:36:10
[INFO] 安装达梦数据库完成。

请以root系统用户执行命令:
/app/dmdb8/appData/script/root/root_installer.sh

安装结束

[dmdba@alye1 iso]$

数据库安装完成后,需要切换至 root 用户执行上图中的命令 /app/dmdb8/appData/script/root/root_installer.sh 创建 DmAPService,否则会影响数据库备份。

## 切换到root身份并输入root的密码
[dmdba@alye1 iso]$ su root
Password:
## 执行上面提示的命令完成DmAPService服务的注册
[root@alye1 iso]# /app/dmdb8/appData/script/root/root_installer.sh
移动 /app/dmdb8/appData/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服务
[root@alye1 iso]#

另外数据库安装完成后还需注册实例才能使用数据库,本步骤完成后仅完成了达梦8数据库程序的安装。

3、静默方式初始化实例

DM 数据库在 Linux 环境支持命令行配置实例以及图形化配置实例,但需要使用 dmdba 用户配置实例,进入到 DM 数据库安装目录下的 bin 目录中。

## 切换到 dmdba 用户下
[root@alye1 iso]# su dmdba
[dmdba@alye1 ~]$ cd /app/dmdb8/appData/bin
## 以下命令设置,DB路径为=/app/dmdb8/dbData,页大小为 32 KB,簇大小为 32 KB,大小写不敏感,字符集为 utf_8,数据库名为 DMDB,实例名为 DMDBINS,端口为 5236,SYSDBA和SYSAUDITOR的密码均为30hwHyKi。
[dmdba@alye1 bin]$ ./dminit path=/app/dmdb8/dbData SYSDBA_PWD=30hwHyKi SYSAUDITOR_PWD=30hwHyKi PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=n CHARSET=1 DB_NAME=DMDB INSTANCE_NAME=DMDBINS PORT_NUM=5236
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: /app/dmdb8/dbData/DMDB/DMDB01.log


log file path: /app/dmdb8/dbData/DMDB/DMDB02.log

write to dir [/app/dmdb8/dbData/DMDB].
create dm database success. 2024-08-31 11:48:07
[dmdba@alye1 bin]$

至此服务器中的数据库程序和实例均已安装完成,但由于数据库服务尚未启动我们暂时不能从其它系统中访问服务器的数据库。使用以上命令安装后置,服务器中的达梦数据库连接用户与密码信息如下表:

用户名 用户密码
SYSDBA 30hwHyKi
SYSAUDITOR 30hwHyKi

提示1:如果您对 dminit 命令需要更多的参数与应用可以参考其帮助命令:

[dmdba@alye1 bin]$ ./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 打印帮助信息
[dmdba@alye1 bin]$

提示2:若使用dminit命令中没有设置SYSDBA_PWD和SYSAUDITOR_PWD两个参数,则数据库实例安装后,默认初始密码如下表所示。

用户名 用户密码
SYSDBA SYSDBA
SYSAUDITOR SYSAUDITOR

三、注册服务及开机自启动

DM 提供了将 DM 服务脚本注册成操作系统服务的脚本,同时也提供了卸载操作系统服务的脚本。注册和卸载脚本文件所在目录为安装目录的“/script/root”子目录下。

注册服务脚本为 dm_service_installer.sh,用户可以使用注册服务脚本将服务脚本注册成为操作系统服务。注册服务需使用 root 用户进行注册,使用 root 用户进入数据库安装目录的 /script/root 下,命令如下所示:

[dmdba@alye1 bin]$ su root
Password:
[root@alye1 bin]# cd /app/dmdb8/appData/script/root/
## 注册达梦数据库服务,并指定ini配置文件,以及服务名称为:DMDB
[root@alye1 root]# ./dm_service_installer.sh -t dmserver -dm_ini /app/dmdb8/dbData/DMDB/dm.ini -p DMDB
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMDB.service to /usr/lib/systemd/system/DmServiceDMDB.service.
创建服务(DmServiceDMDB)完成
## 启动服务。上一步指定的服务名称为:DMDB,所以生成了 DmServiceDMDB.service 的服务这里要注意
[root@alye1 root]# systemctl start DmServiceDMDB.service
## 将服务设置为开机自启动
[root@alye1 root]# systemctl enable DmServiceDMDB.service
## 查看当前服务的状态,这里可以看到当前是 running 的状态
[root@alye1 root]# systemctl status DmServiceDMDB.service
● DmServiceDMDB.service - DM Instance Service(DmServiceDMDB).
Loaded: loaded (/usr/lib/systemd/system/DmServiceDMDB.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2024-08-31 12:10:43 CST; 9s ago
Main PID: 16516 (dmserver)
CGroup: /system.slice/DmServiceDMDB.service
└─16516 /app/dmdb8/appData/bin/dmserver path=/app/dmdb8/dbData/DMDB/dm.ini -noconsole

Aug 31 12:10:28 alye1 systemd[1]: Starting DM Instance Service(DmServiceDMDB)....
Aug 31 12:10:43 alye1 DmServiceDMDB[16493]: [35B blob data]
Aug 31 12:10:43 alye1 systemd[1]: Started DM Instance Service(DmServiceDMDB)..
[root@alye1 root]#

因为我们在防火墙中提前开放了5236端口,至此已经可以在其它系统中使用达梦管理工具连接服务器中的数据库了,在服务器中的所有操作完成。

四、测试在Windows中连接达梦数据库

1、安装达梦客服端软件

本文中使用 Windows 11 64位操作系统。将在1.1中下载的 dm8_20240710_x86_win_64.zip 文件解压,双击打开 dm8_20240710_x86_win_64.iso 文件会自动挂载这个iso映像(Windows10操作系统也可自动挂载iso映像)。

image-20240831122017562

双击 setup.exe 安装程序,一步步进行安装程序。

image-20240831122131156

image-20240831122141211

我们没有key,直接进入下一步 >>>

image-20240831122158947

到这一步,我们在Windows中只做连接刚在CentOS7中安装的达梦数据库服务器使用,所以这里只需要安装客户端即可。当然如果你有需要,也可以在你本地Windows电脑中再安装一个服务器(选择典型安装)。

image-20240831122329310

这里设置安装目录后,直接一直下一步,直到安装完成。

image-20240831122608320

2、测试链接Centos7安装的达梦客服端器

按下Windows键,在弹出的菜单中选择应用,再输入 DM 搜索刚安装的 DM 程序,选择 DM管理工具 打开。

image-20240831122922605

按图上的步骤进行连接测试。

image-20240831124028765

测试已可以通信,可在右侧输入SQL语句执行了。总体的使用虽说不如ORA或MSSQL的客户端方便,但总体是可以使用了,其它的使用习惯问题估计要等待厂商在后续版本更进一步优化了。

image-20240831124239285

至此全部完工。