闲话不说直接安排上脚本,有问题大家一起交流
#================================================================
# 脚本名称: dm8_install.sh
# 描述: 达梦数据库8单库一键自动化安装脚本
# 使用方式: 请使用 root 用户执行 chmod +x dm8_install.sh && ./dm8_install.sh
#================================================================
# ================= 1. 参数定义及默认值 =================
install_dir="/home/dmdba/dmdbms"
iso_dir="/data/dm8_20250704_x86_rh7_64-v8.4.iso"
key_dir="/data/dm.key"
instance_dir="/data/dmdata"
PAGE_SIZE_PARA=32
EXTENT_SIZE_PARA=32
LOG_SIZE_PARA=4096
CHARSET_PARA=0
CASE_SENSITIVE_PARA="Y"
# LENGTH_IN_CHAR_PARA=1
DB_NAME_PARA="DAMENG"
INSTANCE_NAME_PARA="DMSERVER"
PORT_NUM_PARA=5236
SYSDBA_PWD_PARA="Sysdba@123"
SYSAUDITOR_PWD_PARA="Sysauditor@123"
# ================= 2. 前置环境检查与系统配置 =================
echo "====== [1/8] 开始前置环境检查与系统配置 ======"
# 检查是否以 root 用户运行
if [ "$(id -u)" -ne 0 ]; then
echo "[Error] 请使用 root 用户执行此脚本!"
exit 1
fi
# 检查 ISO 镜像是否存在
if [ ! -f "$iso_dir" ]; then
echo "[Error] 达梦安装镜像 $iso_dir 不存在,请检查路径并退出!"
exit 1
fi
# ================= 3. 挂载镜像并安装数据库 =================
echo "====== [2/8] 挂载镜像并安装数据库 ======"
# 挂载 ISO 到 /mnt
mount -o loop "$iso_dir" /mnt
if [ $? -ne 0 ]; then
echo "[Error] 镜像挂载失败,请检查镜像文件是否完整!"
exit 1
fi
# 处理 Key 文件权限
if [ -f "$key_dir" ]; then
echo "检测到 Key 文件,正在调整权限..."
chown -R dmdba:dinstall "$key_dir"
chmod 775 "$key_dir"
KEY_ARG="-q /home/dmdba/dm8_install.xml" # 若有静默安装XML可在此引用,此处采用交互安装
else
echo "[Warning] 未检测到 Key 文件,将使用默认开发版授权安装。"
fi
# 切换至 dmdba 用户执行安装
su - dmdba -c "
export DM_INSTALL_TMPDIR=/data/dmtemp
cd /mnt
# 使用交互式安装 (-i),按提示选择:语言(1)、Key(无则N)、时区(21)、安装类型(1)
./DMInstall.bin -i <<EOF
1
y
${key_dir}
y
21
1
$install_dir
y
y
EOF
"
# 【检测点】检查数据库安装是否成功
if [ $? -ne 0 ]; then
echo "[Error] 达梦数据库软件安装失败,脚本终止!"
umount /mnt &>/dev/null
exit 1
fi
echo "[Success] 达梦数据库软件安装成功。"
# 卸载镜像
umount /mnt
# ================= 4. 注册 DmAPService 服务 =================
echo "====== [3/8] 注册 DmAPService 服务 ======"
# 【检测点】检查安装目录是否存在,作为执行后续脚本的前提
if [ ! -d "$install_dir/script/root" ]; then
echo "[Error] 安装目录结构异常,未找到 $install_dir/script/root,脚本终止!"
exit 1
fi
if [ -f "${install_dir}/script/root/root_installer.sh" ]; then
"${install_dir}/script/root/root_installer.sh"
# 【检测点】检查 DmAPService 注册是否成功
if [ $? -ne 0 ]; then
echo "[Error] DmAPService 服务注册失败,脚本终止!"
exit 1
fi
echo "[Success] DmAPService 服务注册成功。"
else
echo "[Error] 未找到 root_installer.sh,无法注册服务,脚本终止!"
exit 1
fi
# ================= 5. 初始化数据库实例 =================
echo "====== [4/8] 初始化数据库实例 ======"
su - dmdba -c "
cd ${install_dir}/bin
./dminit PATH=${instance_dir} \
PAGE_SIZE=${PAGE_SIZE_PARA} \
EXTENT_SIZE=${EXTENT_SIZE_PARA} \
LOG_SIZE=${LOG_SIZE_PARA} \
CHARSET=${CHARSET_PARA} \
CASE_SENSITIVE=${CASE_SENSITIVE_PARA} \
DB_NAME=${DB_NAME_PARA} \
INSTANCE_NAME=${INSTANCE_NAME_PARA} \
PORT_NUM=${PORT_NUM_PARA} \
SYSDBA_PWD='${SYSDBA_PWD_PARA}' \
SYSAUDITOR_PWD='${SYSAUDITOR_PWD_PARA}'
"
if [ $? -ne 0 ]; then
echo "[Error] 数据库实例初始化失败,请检查日志!"
exit 1
fi
# ================= 6. 注册并启动数据库服务 =================
echo "====== [5/8] 注册并启动数据库服务 ======"
su - root -c "
cd ${install_dir}/script/root
./dm_service_installer.sh -t dmserver -dm_ini ${instance_dir}/${DB_NAME_PARA}/dm.ini -p ${INSTANCE_NAME_PARA}
systemctl start DmService${INSTANCE_NAME_PARA}
systemctl enable DmService${INSTANCE_NAME_PARA}
"
echo "====== 达梦数据库安装及初始化全部完成! ======"
echo "请使用 dmdba 用户登录验证: su - dmdba && disql SYSDBA/'\"${SYSDBA_PWD_PARA}\"'"
文章
阅读量
获赞
