一.简介

达梦数据库管理系统DM8是一款国产数据库,有标准版、企业版、安全版,支持多种部署方式,如 X86 平台、信创平台和 Docker 镜像版本, 安装包下载地址,可单机部署,可集群部署,如常见实时主备和读写分离集群。

上一套达梦DM8数据库,如何规划部署?单机单实例_单机单节点部署

二.安装前准备 

0.资源和目录规划

DM8可在centos、redhat、银河麒麟v10、华为欧拉等X86操作系统安装,本次使用centos7.6操作系统,安装操作系统资源信息如下:

资源  2C 8G 100G+500G

centos7.6

192.168.77.168      master

安装前必须创建dmdba用户,禁止使用root用户安装数据库,默认安装在 /home/dmdba 文件。

#数据库安装目录 /dmdata/dbms/dm8
#实例保存目录   /dmdata/data  
#归档保存目录   /dmdata/arch
#备份保存目录   /dmdata/dmbak
  • 1.
  • 2.
  • 3.
  • 4.

1.安装前准备  参考官方文档

#master配置hosts
cat >>/etc/hosts<<'EOF'
192.168.77.168   master
EOF

#配置环境变量
cat >>~/.bash_profile<<'EOF'
export LANG=en_US.UTF8
EOF

#增加数据盘,LVM创建并挂载
pvcreate /dev/sdb
vgcreate datavg /dev/sdb
lvcreate -n datalv -L 500000M datavg
mkfs.xfs /dev/datavg/datalv 

#xfs ext4的挂载参数defaults,noatime,nodiratime,nobarrier或defaults 0 0
mkdir -p /dmdata
mount /dev/datavg/datalv /dmdata
cat >>/etc/fstab<<'EOF'
/dev/datavg/datalv /dmdata xfs defaults,noatime,nodiratime,nobarrier
EOF
mount -a

#优化部分 

#关闭SELINUX和防护墙
systemctl disable firewalld
systemctl stop firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0

#修改系统资源限制参数
cat >>/etc/security/limits.conf<<'EOF'
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
EOF
echo "* - nproc 65535" > /etc/security/limits.d/90-nproc.conf
#修改内核参数
cat >>/etc/sysctl.conf<<'EOF'
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
vm.min_free_kbytes=512000
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
vm.overcommit_memory=0
vm.swappiness=1
EOF
sysctl -p

#控制资源分配限制
echo "session required pam_limits.so" >> /etc/pam.d/login

#关闭内存大页和numa
sed -i '/^GRUB_CMDLINE_LINUX/d' /etc/default/grub
cat >> /etc/default/grub<<'EOF'
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off  transparent_hugepage=never elevator=deadline"
EOF
grub2-mkconfig -o /etc/grub2.cfg

#IO调度算法
#sas盘deadline;ssd盘NOOP
echo 'deadline' > /sys/block/sda/queue/scheduler

#设置时区
timedatectl set-timezone Asia/Shanghai

#使用系统镜像包 配置yum源
mount /dev/cdrom /mnt
cd /etc/yum.repos.d/
gzip CentOS-*

cat >centos.repo<<'EOF'
[centos7]
name=centos7
baseurl=file:///mnt
gpgcheck=0
enable=1
EOF
#安装依赖
yum install glib* vnc* -y

#创建用户 root用户执行
#创建用户和组
groupadd dinstall -g 2000
useradd  -G dinstall -m -d /home/dmdba -s /bin/bash -u 2000 dmdba
echo 123456 | passwd --stdin dmdba

#出现-bash-4.2$可执行
#cp /etc/skel/.bash* /home/dmdba/
#目录授权
#创建目录并授权
mkdir -p /dmdata/dbms/dm8
mkdir -p /dmdata/data  
mkdir -p /dmdata/arch
mkdir -p /dmdata/dmbak
chown -R dmdba:dinstall /dmdata/dbms/dm8
chown -R dmdba:dinstall /dmdata/data
chown -R dmdba:dinstall /dmdata/arch
chown -R dmdba:dinstall /dmdata/dmbak
chmod -R 755 /dmdata/dbms/dm8
chmod -R 755 /dmdata/data
chmod -R 755 /dmdata/arch
chmod -R 755 /dmdata/dmbak
#切换到dmdba用户
su - dmdba
#配置环境变量
cat >> ~/.bash_profile<<'EOF'
export LANG=zh_CN.UTF8
export DM_INSTALL_TMPDIR="/tmp"
export DM_HOME="/dmdata/dbms/dm8"
export PATH=$DM_HOME/bin:$PATH:$HOME/bin
EOF
source ~/.bash_profile
exit
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136.

三.DM8单机版安装

0.安装包下载,到官网下载。

1.这里使用的是虚拟机,所以先卸载掉镜像盘

#root用户挂载
su - root
#卸载掉镜像盘
umount /mnt
#上传安装包和授权文件到/home/dmdba
cd /home/dmdba
rz dm8_20240712_x86_rh7_64.iso
#挂载DM8安装包iso镜像,先把DM8安装包iso传到服务器上
mount -o loop /home/dmdba/dm8_20240712_x86_rh7_64.iso /mnt
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

2.静默安装

注意:数据库用户的密码不能带@ 正常数据库连接 disql SYSDBA/Alibaby@007@192.168.77.168:5236,会把@后面的当成IP,连接数据库会报错[-70028]:创建SOCKET连接失败.

#静默安装脚本 数据库和实例自定义为ALIDB,sysdba口令Alibaby007
su - dmdba
cd /home/dmdba
cat >auto_install.xml<<'EOF'
<?xml version="1.0"?>
<DATABASE>
<!--安装数据库的语言配置,安装中文版配置 ZH,英文版配置 EN,不区分大小写。不允许为空。-->
<LANGUAGE>zh</LANGUAGE>
<!--安装程序的时区配置,默认值为+08:00,范围:-12:59 ~ +14:00 -->
<TIME_ZONE>+08:00</TIME_ZONE>
<!-- key 文件路径-->
<KEY></KEY>
<!--安装程序组件类型,取值 0、1、2,0 表示安装全部,1 表示安装服务器,2 表示安装客户端。默认为 0。-->
<INSTALL_TYPE>0</INSTALL_TYPE>
<!--安装路径,不允许为空。-->
<INSTALL_PATH>/dmdata/dbms/dm8</INSTALL_PATH>
<!--是否初始化库,取值 Y/N、y/n,不允许为空。-->
<INIT_DB>y</INIT_DB>
<!--数据库实例参数-->
<DB_PARAMS>
<!--初始数据库存放的路径,不允许为空-->
<PATH>/dmdata/data</PATH>
<!--初始化数据库名字,默认是 DAMENG,不超过 128 个字符-->
<DB_NAME>ALIDB</DB_NAME>
<!--初始化数据库实例名字,默认是 DMSERVER,不超过 128 个字符-->
<INSTANCE_NAME>ALIDB</INSTANCE_NAME>
<!--初始化时设置 dm.ini 中的 PORT_NUM,默认 5236,取值范围:1024~65534 -->
<PORT_NUM>5236</PORT_NUM>
<!--初始数据库控制文件的路径,文件路径长度最大为 256 -->
<CTL_PATH></CTL_PATH>
<!--初始数据库日志文件的路径,文件路径长度最大为 256 -->
<LOG_PATHS>
<LOG_PATH>
</LOG_PATH>
</LOG_PATHS>
<!--数据文件使用的簇大小,只能是 16 页或 32 页之一,缺省使用 16 页-->
<EXTENT_SIZE>16</EXTENT_SIZE>
<!--数据文件使用的页大小,缺省使用 8K,只能是 4K、8K、16K 或 32K之一-->
<PAGE_SIZE>8</PAGE_SIZE>
<!--日志文件使用的簇大小,默认是 256,取值范围 64 和 2048 之间的整数-->
<LOG_SIZE>256</LOG_SIZE>
<!--标识符大小写敏感,默认值为 Y。只能是’Y’, ’y’, ’N’, ’n’, ’1’, ’0’之一-->
<CASE_SENSITIVE>N</CASE_SENSITIVE>
<!--字符集选项,默认值为 0。0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR -->
<CHARSET>1</CHARSET>
<!--设置为 1 时,所有 VARCHAR 类型对象的长度以字符为单位,否则以字节为单位。默认值为 0。-->
<LENGTH_IN_CHAR></LENGTH_IN_CHAR>
<!--字符类型在计算HASH值时所采用的HASH算法类别。0:原始HASH算法;1:改进的 HASH 算法。默认值为 1。-->
<USE_NEW_HASH>1</USE_NEW_HASH>
<!--初始化时设置 SYSDBA 的密码,默认为 SYSDBA,长度在 9 到 48个字符之间-->
<SYSDBA_PWD>Alibaby007</SYSDBA_PWD>
<!--初始化时设置 SYSAUDITOR 的密码,默认为 SYSAUDITOR,长度在 9 到 48 个字符之间-->
<SYSAUDITOR_PWD>Alibaby007</SYSAUDITOR_PWD>
<!--初始化时设置 SYSSSO 的密码,默认为 SYSSSO,长度在 9 到 48个字符之间,仅在安全版本下可见和可设置-->
<SYSSSO_PWD>Alibaby007</SYSSSO_PWD>
<!--初始化时设置 SYSDBO 的密码,默认为 SYSDBO,长度在 9 到 48个字符之间,仅在安全版本下可见和可设置-->
<SYSDBO_PWD>Alibaby007</SYSDBO_PWD>
<!--是否启用页面内容校验,0:不启用;1:简单校验;2:严格校验(使用 CRC16 算法生成校验码)。默认 0 -->
<PAGE_CHECK>0</PAGE_CHECK>
<!--设置默认加密算法,不超过 128 个字符-->
<EXTERNAL_CIPHER_NAME></EXTERNAL_CIPHER_NAME>
<!--设置默认 HASH 算法,不超过 128 个字符-->
<EXTERNAL_HASH_NAME></EXTERNAL_HASH_NAME>
<!--设置根密钥加密引擎,不超过 128 个字符-->
<EXTERNAL_CRYPTO_NAME></EXTERNAL_CRYPTO_NAME>
<!--全库加密密钥使用的算法名。算法可以是 DM 内部支持的加密算法,或者是第三方的加密算法。默认使用"AES256_ECB"算法加密,最长为 128个字节-->
<ENCRYPT_NAME></ENCRYPT_NAME>
<!--指定日志文件是否加密。默认值 N。取值 Y/N,y/n,1/0 -->
<RLOG_ENC_FLAG>N</RLOG_ENC_FLAG>
<!--用于加密服务器根密钥,最长为 48 个字节-->
<USBKEY_PIN></USBKEY_PIN>
<!--设置空格填充模式,取值 0 或 1,默认为 0 -->
<BLANK_PAD_MODE>0</BLANK_PAD_MODE>
<!--指定 system.dbf 文件的镜像路径,默认为空-->
<SYSTEM_MIRROR_PATH></SYSTEM_MIRROR_PATH>
<!--指定 main.dbf 文件的镜像路径,默认为空-->
<MAIN_MIRROR_PATH></MAIN_MIRROR_PATH>
<!--指定 roll.dbf 文件的镜像路径,默认为空-->
<ROLL_MIRROR_PATH></ROLL_MIRROR_PATH>
<!--是否是四权分立,默认值为 0(不使用)。仅在安全版本下可见和可设置。只能是 0 或 1 -->
<PRIV_FLAG>0</PRIV_FLAG>
<!--指定初始化过程中生成的日志文件所在路径。合法的路径,文件路径长度最大为 257(含结束符),不包括文件名-->
<ELOG_PATH></ELOG_PATH>
</DB_PARAMS>
<!--是否创建数据库实例的服务,值 Y/N y/n,不允许为空,不初始化数据库将忽略此节点。非 root 用户不能创建数据库服务。-->
<CREATE_DB_SERVICE>N</CREATE_DB_SERVICE>
<!--是否启动数据库,值 Y/N y/n,不允许为空,不创建数据库服务将忽略此节点。-->
<STARTUP_DB_SERVICE>N</STARTUP_DB_SERVICE>
</DATABASE>
EOF
#安装
cd /mnt/
./DMInstall.bin -q /home/dmdba/auto_install.xml
#安装完成提示:请以root系统用户执行命令:
su - root
/dmdata/dbms/dm8/script/root/root_installer.sh
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.

3.配置实例(一键部署不是指定了吗)


#dmdba用户
su - dmdba
cd /dmdata/dbms/dm8/bin
./dminit help
#自定义参数初始化实例
./dminit path=/dmdata/data db_name=ALIDB instance_name=ALIDB port_num=5236 LOG_SIZE=256 SYSDBA_PWD=Alibaby007 EXTENT_SIZE=16 PAGE_SIZE=8
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

4.注册服务与数据库启停

#root用户 注册服务-t服务类型 -p服务后缀 -dm_ini服务所需执行文件路径
cd /dmdata/dbms/dm8/script/root
./dm_service_installer.sh -t dmserver -p ALIDB -dm_ini /dmdata/data/ALIDB/dm.ini
#配置环境变量
su - dmdba
cat >>~/.bash_profile<<'EOF'
export PATH=$PATH:$DM_HOME/bin:$HOME/.local/bin:$HOME/bin
EOF
source ~/.bash_profile
#启动停止数据库实例
su - dmdba
DmServiceALIDB start
DmServiceALIDB status
DmServiceALIDB stop
#或者systemctl管理,不能交叉使用,首次使用需要输入root密码
systemctl status DmServiceALIDB
systemctl start DmServiceALIDB
systemctl stop DmServiceALIDB
#验证
disql  
sysdba
Alibaby007
#查看版本
select * from v$version;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

4.数据库基本操作-创建表空间-创建用户-创建数据库对象

#创建表空间
create tablespace ALI datafile '/dmdata/data/ALIDB/ALI01.dbf' size 128 autoextend on next 100 maxsize unlimited;
create tablespace ALI_idx datafile '/dmdata/data/ALIDB/ALI_idx01.dbf' size 128 autoextend on next 100 maxsize unlimited;
#创建用户
create user "ALI" identified by "Alibaby007" default tablespace ALI default index tablespace ALI_idx;
grant dba to ALI;
exit
disql
ALI
Alibaby007
#创建数据库对象
CREATE TABLE city(city_id CHAR(3) NOT NULL,city_name VARCHAR(40) NULL,region_id INT NULL);
INSERT INTO city(city_id,city_name,region_id) VALUES('BJ','北京',1);
INSERT INTO city(city_id,city_name,region_id) VALUES('SJZ','石家庄',1);
INSERT INTO city(city_id,city_name,region_id) VALUES('SH','上海',2);
INSERT INTO city(city_id,city_name,region_id) VALUES('NJ','南京',2);
commit;
select * from city;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

5.实例优化

为增强参数优化的适用性,降低参数修改的过程风险,建议使用达梦数据库提供的  AutoParaAdj.sql 脚本进行实例参数优化。sysdba登录客户端,sql脚本中exec_mode int:= 1;手动执行优化。

#dmdba用户
su - dmdba
disql
ALI
Alibaby007
#将输出的结果,放入执行
SQL>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

上一套达梦DM8数据库,如何规划部署?单机单实例_达梦DM8_02

6.数据库卸载并清除数据

#卸载
su - dmdba
DmServiceALIDB stop
cd /dmdata/dbms/dm8
./uninstall.sh -i
rm -rf /dmdata/dbms/dm8/*
rm -rf /dmdata/data/*
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.