注册
脚本安装部署达梦单机数据库
专栏/技术分享/ 文章详情 /

脚本安装部署达梦单机数据库

峰正月古 2026/09/04 99 0 0
摘要

闲话不说直接安排上脚本,有问题大家一起交流

#================================================================
# 脚本名称: 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}\"'"

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服