目录
一、简介
使用三个脚本进行dm8数据库的安装、初始化实例、卸载
- setVar.sh脚本用来定义变量以及创建静默安装配置文件。
- Silent_Install.sh脚本用来安装、初始化数据库以及注册系统服务,创建用户与用户组、挂载iso镜像、创建安装目录还有配置环境变量方便使用disql工具。
- Silent_UnIstall.sh脚本用来彻底卸载数据库以及系统服务,删除用户和用户组。
二、自定义变量
注意事项:需要使用root用户运行
vim /opt/setVar.sh
根据需要自定义变量,设置ISO_PATH变量为你的iso存放路径
#!/bin/bash
# =============================== 环境变量配置及初始化参数设置 ============================== #
# 用户名
export USER=dmdba
# 用户组
export GROUP=dinstall
# 用户密码
export PASSWD=${USER}123
# 静默安装配置
export SILENT_PROR_PATH=/opt/dminstall.xml
# 挂载路径
export MOUNT_PATH=/dmiso
# 指定安装镜像
export ISO_PATH=/opt/dm8_20220525_x86_rh6_64.iso
# 安装目录
export DM_HOME=/dm8
# 指定实例路径
export INSTANCE_PATH=/dm8/data
# 数据库名字,默认是 DAMENG,不超过 128 个字符
export DB_NAME=DAMENG
# 是否初始化库,取值 Y/N、y/n,不允许为空
export INIT_DB=Y
# 初始化数据库实例名字,默认是 DMSERVER,不超过 128 个字符
export INSTANCE_NAME=DMSERVER
# 是否创建数据库系统服务
export CREATE_DB_SERVICE=y
# 是否启动系统服务开机自启
export DB_SERVICE_STATUS=n
# 初始化时设置 dm.ini 中的 PORT_NUM,默认 5236,取值范围:1024~65534
PORT_NUM=5236
# 数据文件使用的簇大小,只能是 16 页或 32 页之一,缺省使用 16 页
EXTENT_SIZE=16
# 数据文件使用的页大小,缺省使用 8K,只能是 4K、8K、16K 或 32K 之一
PAGE_SIZE=32
# 日志文件使用的簇大小,默认是 256,取值范围 64 和 2048 之间的整数
LOG_SIZE=2048
# 标识符大小写敏感,默认值为 Y。只能是’Y’, ’y’, ’N’, ’n’, ’1’, ’0’之一
CASE_SENSITIVE=Y
# 设置空格填充模式,取值 0 或 1,默认为 0
BLANK_PAD_MODE=1
# 字符集选项,默认值为 0。0 代表 GB18030(中文),1 代表 UTF-8,2 代表韩文字符集 EUC-KR
CHARSET=0
# ======================================= END ======================================== #
# 创建静默安装配置文件
cat>$SILENT_PROR_PATH <<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/>
<!--安装程序组件类型,取值 0、1、2,0 表示安装全部,1 表示安装服务器,2 表示安装客户端。默认为 0。 -->
<INSTALL_TYPE>0</INSTALL_TYPE>
<!--记得修改,安装路径,不允许为空。 -->
<INSTALL_PATH>$DM_HOME</INSTALL_PATH>
<!--是否初始化库,取值 Y/N、y/n,不允许为空。 -->
<INIT_DB>$INIT_DB</INIT_DB>
<!--数据库实例参数 -->
<DB_PARAMS>
<!--记得修改,初始数据库存放的路径,不允许为空 -->
<PATH>$INSTANCE_PATH</PATH>
<!--记得修改,初始化数据库名字,默认是 DAMENG,不超过 128 个字符 -->
<DB_NAME>$DB_NAME</DB_NAME>
<!--记得修改,初始化数据库实例名字,默认是 DMSERVER,不超过 128 个字符 -->
<INSTANCE_NAME>$INSTANCE_NAME</INSTANCE_NAME>
<!--记得修改,初始化时设置 dm.ini 中的 PORT_NUM,默认 5236,取值范围:1024~65534 -->
<PORT_NUM>$PORT_NUM</PORT_NUM>
<!--记得修改,初始数据库控制文件的路径,文件路径长度最大为 256 -->
<CTL_PATH>$INSTANCE_PATH/$DB_NAME/dm.ctl</CTL_PATH>
<!--记得修改,初始化数据库日志文件的路径,文件路径长度最大为 256,LOG_PATH 值为空则使用默认值,如果使用非默认值 LOG_PATH 节点数不能少于 2 个 -->
<LOG_PATHS>
<LOG_PATH>$INSTANCE_PATH/$DB_NAME/${DB_NAME}01.log</LOG_PATH>
<LOG_PATH>$INSTANCE_PATH/$DB_NAME/${DB_NAME}02.log</LOG_PATH>
</LOG_PATHS>
<!--数据文件使用的簇大小,只能是 16 页或 32 页之一,缺省使用 16 页 -->
<EXTENT_SIZE>$EXTENT_SIZE</EXTENT_SIZE>
<!--数据文件使用的页大小,缺省使用 8K,只能是 4K、8K、16K 或 32K 之一 -->
<PAGE_SIZE>$PAGE_SIZE</PAGE_SIZE>
<!--日志文件使用的簇大小,默认是 256,取值范围 64 和 2048 之间的整数 -->
<LOG_SIZE>$LOG_SIZE</LOG_SIZE>
<!--标识符大小写敏感,默认值为 Y。只能是’Y’, ’y’, ’N’, ’n’, ’1’, ’0’之一 -->
<CASE_SENSITIVE>$CASE_SENSITIVE</CASE_SENSITIVE>
<!--字符集选项,默认值为 0。0 代表 GB18030(中文),1 代表 UTF-8,2 代表韩文字符集 EUC-KR -->
<CHARSET>$CHARSET</CHARSET>
<!--设置为 1 时,所有 VARCHAR 类型对象的长度以字符为单位,否则以字节为单位。默认值为 0。 -->
<LENGTH_IN_CHAR>0</LENGTH_IN_CHAR>
<!--字符类型在计算 HASH 值时所采用的 HASH 算法类别。0:原始 HASH 算法;1:改进的HASH 算法。默认值为 1。 -->
<USE_NEW_HASH>1</USE_NEW_HASH>
<!--初始化时设置 SYSDBA 的密码,默认为 SYSDBA,长度在 9 到 48 个字符之间 -->
<SYSDBA_PWD/>
<!--初始化时设置 SYSAUDITOR 的密码,默认为 SYSAUDITOR,长度在 9 到 48 个字符之间 -->
<SYSAUDITOR_PWD/>
<!--初始化时设置 SYSSSO 的密码,默认为 SYSSSO,长度在 9 到 48 个字符之间,仅在安全版本下可见和可设置 -->
<SYSSSO_PWD/>
<!--初始化时设置 SYSDBO 的密码,默认为 SYSDBO,长度在 9 到 48 个字符之间,仅在安全版本下可见和可设置 -->
<SYSDBO_PWD/>
<!--初始化时区,默认是东八区。格式为:正负号小时:分钟,范围:-12:59 ~ +14:00 -->
<TIME_ZONE>+08:00</TIME_ZONE>
<!--是否启用页面内容校验,0:不启用;1:简单校验;2:严格校验(使用 CRC16 算法生成校验码)。默认 0 -->
<PAGE_CHECK>0</PAGE_CHECK>
<!--设置默认加密算法,不超过 128 个字符 -->
<EXTERNAL_CIPHER_NAME/>
<!--设置默认 HASH 算法,不超过 128 个字符 -->
<EXTERNAL_HASH_NAME/>
<!--设置根密钥加密引擎,不超过 128 个字符 -->
<EXTERNAL_CRYPTO_NAME/>
<!--全库加密密钥使用的算法名。算法可以是DM内部支持的加密算法,或者是第三方的加密算法。默认使用"AES256_ECB"算法加密,最长为 128 个字节 -->
<ENCRYPT_NAME/>
<!--指定日志文件是否加密。默认值 N。取值 Y/N,y/n,1/0 -->
<RLOG_ENC_FLAG>N</RLOG_ENC_FLAG>
<!--用于加密服务器根密钥,最长为 48 个字节 -->
<USBKEY_PIN/>
<!--设置空格填充模式,取值 0 或 1,默认为 0 -->
<BLANK_PAD_MODE>$BLANK_PAD_MODE</BLANK_PAD_MODE>
<!--指定 system.dbf 文件的镜像路径,默认为空 -->
<SYSTEM_MIRROR_PATH/>
<!--指定 main.dbf 文件的镜像路径,默认为空 -->
<MAIN_MIRROR_PATH/>
<!--指定 roll.dbf 文件的镜像路径,默认为空 -->
<ROLL_MIRROR_PATH/>
<!--是否是四权分立,默认值为 0(不使用)。仅在安全版本下可见和可设置。只能是 0 或 1 -->
<PRIV_FLAG>0</PRIV_FLAG>
<!--指定初始化过程中生成的日志文件所在路径。合法的路径,文件路径长度最大为 257(含结束符),不包括文件名-->
<ELOG_PATH>$INSTANCE_PATH/$DB_NAME</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
执行前需要给x权限,执行该脚本,建议使用source执行脚本,不然可能环境变量无法应用到导致安装失败
chmod +x /opt/setVar.sh
source /opt/setVar.sh
三、安装及初始化数据库
vim /opt/Silent_Install.sh
#!/bin/bash
# 关闭防火墙
systemctl --now disable firewalld
# 关闭selinux
setenforce 0 >& /dev/null
# 判断挂载目录是否存在,不存在则创建
if [ ! -d "$MOUNT_PATH" ]; then
mkdir -p $MOUNT_PATH
echo "创建挂载目录$MOUNT_PATH"
fi
# 判断目录是否挂载
mountpoint -q $MOUNT_PATH
if [ $? -ne 0 ]; then
mount -o loop $ISO_PATH $MOUNT_PATH
echo "挂载到$MOUNT_PATH"
fi
# 判断安装目录是否存在
if [ ! -d "$DM_HOME" ]; then
mkdir -p $DM_HOME
echo "创建安装目录$DM_HOME"
fi
# 判断用户是否存在
id $USER >& /dev/null
if [ $? -ne 0 ]; then
# 判断用户组是否存在
egrep "^$GROUP" /etc/group >& /dev/null
if [ $? -ne 0 ]; then
sudo groupadd $GROUP
echo "创建用户组$GROUP"
fi
sudo useradd -g $GROUP -m -d /home/$USER $USER
echo "创建用户$USER"
echo $PASSWD| passwd --stdin $USER &> /dev/null
fi
# 修改系统文件最大打开数
egrep "^$USER" /etc/security/limits.conf >& /dev/null
if [ $? -ne 0 ]; then
echo >> /etc/security/limits.conf "$USER soft nofile 102400"
echo >> /etc/security/limits.conf "$USER hard nofile 102400"
fi
# 修改安装目录权限
chown -R $USER:$GROUP $DM_HOME
chmod +x $DM_HOME
# 开始安装、初始化数据库和注册系统服务
if [ ! -d $DM_HOME/bin ]; then
su - $USER <<EOF
$MOUNT_PATH/DMInstall.bin -q $SILENT_PROR_PATH
exit
EOF
# 创建DmAP服务
$DM_HOME/script/root/root_installer.sh
# 根据参数判断是否创建数据库系统服务
if [ $CREATE_DB_SERVICE = 'Y' ] || [ $CREATE_DB_SERVICE = 'y' ] && [ -d $INSTANCE_PATH ]; then
$DM_HOME/script/root/dm_service_installer.sh -t dmserver -dm_ini $INSTANCE_PATH/$DB_NAME/dm.ini -p $INSTANCE_NAME
# 根据参数判断是否启动开机自启
if [ $DB_SERVICE_STATUS = 'Y' ] || [ $DB_SERVICE_STATUS = 'y' ]; then
systemctl --now enable DmService$INSTANCE_NAME
echo "启动开机自启"
fi
fi
# 用户配置文件添加数据库环境配置
grep -c "DM_HOME/" /home/$USER/.bash_profile >& /dev/null
if [ $? -ne 0 ]; then
echo >> /home/$USER/.bash_profile 'export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool'
fi
fi
执行此脚本开始安装及初始化
chmod +x /opt/Silent_Install.sh
source /opt/Silent_Install.sh
效果如下图
四、卸载数据库以及实例
vim /opt/Silent_UnInstall.sh
#!/bin/bash
# 卸载服务
systemctl status DmService$INSTANCE_NAME >& /dev/null
if [ $? -eq 0 ]; then
$DM_HOME/script/root/dm_service_uninstaller.sh -n DmService$INSTANCE_NAME
fi
# 卸载数据库
if [ -e $DM_HOME/uninstall.sh ]; then
$DM_HOME/uninstall.sh -i
fi
# 删除实例
rm -rf /dm8/
rm -rf /etc/dm_svc.conf
# 删除用户以及用户组
id $USER >& /dev/null
if [ $? -eq 0 ]; then
userdel -rf $USER >& /dev/null
fi
egrep "^$GROUP" /etc/group >& /dev/null
if [ $? -eq 0 ]; then
groupdel $GROUP
fi
mountpoint -q $MOUNT_PATH
if [ $? -eq 0 ]; then
umount $MOUNT_PATH
fi
chmod +x /opt/Silent_UnInstall.sh
source /opt/Silent_UnInstall.sh
查看效果
更多资讯请到达梦社区地址了解: