实战:Linux下静默安装DM达梦数据库

官方文档参考:安装前准备 | 达梦技术文档

静默安装DM达梦数据库,提前编写好安装脚本、下载好软件、配置好服务器的内核参数信息。

一、安装前的准备

1.操作系统环境检测

#查看服务器操作系统版本和型号
cat /etc/system-release 
cat /etc/os-release

#查询服务器cpu架构
lscpu 
uanme -a

#检查系统内存与存储空间
free -m
df -h

#关闭防火墙和selinux
systemctl stop firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config 
setenforce 0 

#建议关闭桌面启动
systemctl set-default multi-user.target

2.操作系统优化

        内核参数调整、打开文件数限制、关闭大页。

#配置数据盘
pvcreate /dev/vdb
vgcreate data /dev/vdb
lvcreate -n data -l +100%free data
mkfs.ext4 /dev/mapper/data-data
mkdir /data
echo "/dev/mapper/data-data /data ext4 defaults 0 0 " >> /etc/fstab
mount -a
df -h

#配置hostname 
hostnamectl set-hostname dmdb
echo "192.168.1.2 dmdb">>/etc/hosts

#服务器内核参数配置
cat >> /etc/sysctl.conf <<EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.swappiness = 0
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.overcommit_memory=0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
EOF
sysctl -p

#修改系统最大进程数和最大文件打开数
cat >> /etc/security/limits.conf <<EOF
dmdba soft nice 65536
dmdba hard nice 65536
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

#修改进程数据限制
vi /etc/security/limits.d/nproc.conf
* soft nproc 65536
* soft nproc 65536

#关闭Num.麒麟、欧拉等系统配置关闭内存大页特性
sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

3.创建安装用户、组、目录

groupadd -g 12349 dinstall
groupadd -g 12350 dmdba
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
usermod -g dinstall -G dmdba,dinstall dmdba
echo asdaASDQW12341@Aq | passwd --stdin dmdba
mkdir -p /data/dm /data/dminstall /data/dmbak /data/dmarch /data/dmdata
chown dmdba.dinstall -R /data/dm /data/dminstall /data/dmbak /data/dmarch /data/dmdata
chmod -R 755 /data/dm /data/dminstall /data/dmbak /data/dmarch /data/dmdata

4.配置环境变量

su - dmdba
cat <<EOF>>/home/dmdba/.bash_profile
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export DM_HOME="/data/dm"
export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH:\$DM_HOME/bin"
export PATH=/usr/sbin:\$DM_HOME/bin:\$PATH
export PATH=\$DM_HOME/bin:\$PATH
export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]\$ '
alias ds='disql sysdba'
EOF

二、数据库安装

1.下载指定安装介质

#基于上面查到操作系统类型和cpu架构进行安装截至下载,下载地址https://www.dameng.com/list_103.html

2.挂载介质

#使用root用户挂载介质
unzip dm8_20240408_x86_rh7_64.zip
mount -o loop dm8_20240408_x86_rh7_64.iso /data/dminstall

#配置授权
chown -R dmdba:dinstall /data/dminstall
cd /data/dminstall
chmod 755 ./DMInstall.bin

3.配置静默安装文件

#xml配置文件如下
<?xml version="1.0"?>
<DATABASE>
<LANGUAGE>zh</LANGUAGE>
<TIME_ZONE>+08:00</TIME_ZONE>
<KEY></KEY>
<INSTALL_TYPE>0</INSTALL_TYPE>
<!软件安装路径-->
<INSTALL_PATH>/data/dm</INSTALL_PATH>
<INIT_DB>Y</INIT_DB>
<DB_PARAMS>
<INI_FILE></INI_FILE>
<!数据库安装路径-->
<PATH>/data/dmdata</PATH>
<CTL_PATHS>
<CTL_PATH ></CTL_PATH>        
</CTL_PATHS>
<LOG_PATHS>
<LOG_PATH></LOG_PATH>
</LOG_PATHS>
<EXTENT_SIZE>16</EXTENT_SIZE>
<PAGE_SIZE>32</PAGE_SIZE>
<LOG_SIZE>2048</LOG_SIZE>
<CASE_SENSITIVE>N</CASE_SENSITIVE>
<!--字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]-->
<CHARSET>1</CHARSET>
<SEC_PRIV_MODE>0</SEC_PRIV_MODE>
<LENGTH_IN_CHAR></LENGTH_IN_CHAR>
<!数据库sysdba密码-->
<SYSDBA_PWD>DmTEst_1234@</SYSDBA_PWD>
<SYSAUDITOR_PWD>DmTEst_1234@</SYSAUDITOR_PWD>
<!数据库名、实例名、端口-->
<DB_NAME>DMDB</DB_NAME>
<INSTANCE_NAME>DMDB</INSTANCE_NAME>
<PORT_NUM>5236</PORT_NUM>
<TIME_ZONE></TIME_ZONE>
<PAGE_CHECK></PAGE_CHECK>
<EXTERNAL_CIPHER_NAME></EXTERNAL_CIPHER_NAME>
<EXTERNAL_HASH_NAME></EXTERNAL_HASH_NAME>
<EXTERNAL_CRYPTO_NAME></EXTERNAL_CRYPTO_NAME>
<RLOG_ENC_FLAG></RLOG_ENC_FLAG>
<USBKEY_PIN></USBKEY_PIN>
<ENCRYPT_NAME></ENCRYPT_NAME>
<BLANK_PAD_MODE></BLANK_PAD_MODE>
<SYSTEM_MIRROR_PATH></SYSTEM_MIRROR_PATH>
<MAIN_MIRROR_PATH></MAIN_MIRROR_PATH>
<ROLL_MIRROR_PATH></ROLL_MIRROR_PATH>
<MAL_FLAG></MAL_FLAG>
<ARCH_FLAG></ARCH_FLAG>
<MPP_FLAG></MPP_FLAG>
<CONTROL></CONTROL>
<AUTO_OVERWRITE></AUTO_OVERWRITE>
<USE_NEW_HASH></USE_NEW_HASH>
<DCP_MODE></DCP_MODE>
<DCP_PORT_NUM></DCP_PORT_NUM>
<ELOG_PATH></ELOG_PATH>
<AP_PORT_NUM></AP_PORT_NUM>
</DB_PARAMS>
<CREATE_DB_SERVICE>N</CREATE_DB_SERVICE>
<STARTUP_DB_SERVICE>N</STARTUP_DB_SERVICE>
</DATABASE>

4.安装数据库软件、执行脚本

#进行安装
export LANG=zh_CN.UTF-8
cd /data/dminstall/
./DMInstall.bin -q /home/dmdba/auto_install.xml
#安装输出如下
解压安装程序......... 
2024-07-06 11:02:43 
[INFO] 安装达梦数据库...
2024-07-06 11:02:43 
[INFO] 安装 基础 模块...
2024-07-06 11:02:45 
[INFO] 安装 服务器 模块...
2024-07-06 11:02:46 
[INFO] 安装 客户端 模块...
2024-07-06 11:02:54 
[INFO] 安装 驱动 模块...
2024-07-06 11:02:54 
[INFO] 安装 手册 模块...
2024-07-06 11:02:54 
[INFO] 安装 服务 模块...
2024-07-06 11:02:55 
[INFO] 移动日志文件。
2024-07-06 11:02:56 
[INFO] 安装达梦数据库完成。
请以root系统用户执行命令:
/data/dm/script/root/root_installer.sh
2024-07-06 11:03:00 
[INFO] 开始初始化数据库...
2024-07-06 11:03:05 
[INFO] 初始化数据库完成。
#备注:静默安装完成后,终端提示“请以 root 系统用户执行命令”。由于使用非 root 系统用户进行安装,所以部分安装步骤没有相应的系统权限,需要用户手动执行相关命令。
#用户可根据提示完成相关操作
/data/dm/script/root/root_installer.sh

#数据库安装完毕后需要手动注册实例,root用户执行
/data/dm/script/root/dm_service_installer.sh -t dmserver -dm_ini /data/dmdata/DMDB/dm.ini -p DMDB

#启动数据库实例(dmdba用户)
/data/dm/bin/DmServiceDMDB start
/data/dm/bin/DmServiceDMDB status

#验证登录
disql 
#输入账户密码 默认账户sysdba 密码DmTEst_1234@
#卸载
cd /data/dm
./uninstall.sh

5.手工建库

#dm8可以手动新建实例,具体命令如下(dmdba用户)
/data/dm/bin/dminit PATH=/data/dmdata/DMDB/ INSTANCE_NAME=DMDB PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048

#编辑配置文件后,注册服务(root 用户)
/data/dm/script/root/dm_service_installer.sh -t dmserver -p DMDB -dm_ini /data/dmdata/DMDB/DAMENG/dm.ini 

三、参数优化调

实例参数优化可通过手动方式和自动方式进行调整。
为增强参数优化的适用性,降低参数修改的过程风险,
建议使用达梦数据库提供的 AutoParaAdj.sql 脚本进行实例参数优化
脚本下载地址https://eco.dameng.com/eco-file-server/file/eco/download/20240402142929MAC9G6L98Z39KKXJLG
脚本详细内容和具体使用步骤见:参数自动优化脚本工具-DM8.zip

四、备份配置

1.linux定时任务脚本备份

#配置允许本地免密登录
SQL>SP_SET_PARA_VALUE(2,'ENABLE_LOCAL_OSAUTH',1);
SQL>COMMIT;

#停库
/data/dm/bin/DmServiceDMDB stop

#配置归档
vi /data/dmdata/DMDB/dm.ini
ARCH_INI = 1
vi /data/dmdata/DMDB/dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL 
ARCH_DEST = /data/dmarch/
ARCH_FILE_SIZE = 1024 
ARCH_SPACE_LIMIT = 40960

#启动数据库
/data/dm/bin/DmServiceDMDB start

#需要再次授权
usermod -g dinstall -G dmdba,dinstall dmdba

#配置定时备份脚本
#!/bin/bash
DATABASE_NAME="DMDB"  # 替换为您的数据库实例名
BACKUP_DIR="/data/dmbak" # 备份文件保存的目录,确保该目录存在且有写权限
DATE=$(date +%Y%m%d%H%M)
BACKUP_FILE="$BACKUP_DIR/db_backup_$DATE.bak"
ARCH_FILE="$BACKUP_DIR/arch_backup_$DATE.bak"
echo "开始备份数据库到 $BACKUP_FILE"
/data/dm/bin/disql   / as sysdba  <<EOF
select sf_bakset_backup_dir_add('disk','/data/dmbak');
call sp_db_bakset_remove_batch('disk',NOW()-5);
BACKUP DATABASE BACKUPSET '$BACKUP_FILE' MAXPIECESIZE 300  COMPRESSED LEVEL 3 PARALLEL 4;
backup archive log all backupset '$ARCH_FILE';
EXIT;
EOF

if [ $? -eq 0 ]; then
    echo "数据库备份成功"
else
    echo "备份失败"
fi

2.数据库自身配置备份任务

#直接调用数据库任务
SQL>call SP_INIT_JOB_SYS(1);
SQL>call SP_CREATE_JOB('bakall_delall',1,0,'',0,0,'',0,'每天 23:00 全量备份、删除 7 天前的全量备份');
SQL>call SP_JOB_CONFIG_START('bakall_delall');
SQL>call SP_ADD_JOB_STEP('bakall_delall', 'bakall', 6, '01020000/opt/dmdbms/data/DAMENG/bak', 3, 1, 0, 0, NULL, 0);
SQL>call SP_ADD_JOB_STEP('bakall_delall', 'delall', 0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/opt/dmdbms/data/DAMENG/bak'');
SQL>call SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-7);', 1, 1, 0, 0, NULL, 0);
SQL>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, '');
SQL>call SP_JOB_CONFIG_COMMIT('bakall_delall');

上一篇:解决 Vscode不支持c++11的语法


下一篇:《云原生安全攻防》-- 容器攻击案例:Docker容器逃逸