注册
最小化安装麒麟V10(纯命令行)部署达梦8单机版
技术分享/ 文章详情 /

最小化安装麒麟V10(纯命令行)部署达梦8单机版

林金煌 2025/01/22 725 2 0

环境准备

  1. 安装包:dm8_20241226_x86_kylin10_64.iso
  2. 操作系统:Kylin Linux Advanced Server V10 (Lance) 最小化安装(无需GUI)
  3. ip地址:10.10.10.10/24
  4. 规划安装信息:
    • 用户名:dmdba(54321)
    • 用户组:dinstall(54321)
    • 安装路径: /dm8

编写环境配置脚本

#!/bin/bash # 定义环境变量 FIREWALL_PORT="5236" # 默认端口 5236 DBPASSWD='Dmdb@#123!' # 数据库密码 DBGID=54321 # 组 ID DBUID=54321 # 用户 ID DBGROUP=dinstall # 数据库组 DBUSER=dmdba # 数据库用户 DBINSTALL_PATH="/dm8" # 安装路径 DM_HOME=$DBINSTALL_PATH # 设置语言为中文 export LANG=zh_CN.UTF-8 # 日志函数:带时间戳和黄色输出的信息 log_info() { local message=$1 local timestamp=$(date +"%Y-%m-%d %H:%M:%S") echo -e "\033[33m[${timestamp}] ${message}\033[0m" } # 检查系统启动模式:UEFI 或 Legacy check_boot_mode() { if [[ -d /sys/firmware/efi ]]; then BOOT_MODE="UEFI" else BOOT_MODE="Legacy" fi log_info "系统启动模式:${BOOT_MODE}" } # 获取 grub.cfg 文件的路径 get_grub_cfg_path() { check_boot_mode if [[ "${BOOT_MODE}" == "UEFI" ]]; then . /etc/os-release GRUB_CFG_PATH="/boot/efi/EFI/${ID}/grub.cfg" else GRUB_CFG_PATH="/boot/grub2/grub.cfg" fi log_info "grub.cfg 路径:${GRUB_CFG_PATH}" } # 生成 grub.cfg 配置 generate_grub_cfg() { log_info "生成 grub.cfg 配置" grub2-mkconfig -o "$GRUB_CFG_PATH" &>/dev/null log_info "grub.cfg 配置文件已生成。" } # 功能 1: 永久放行指定端口 configure_firewall() { log_info "配置防火墙,放行 TCP 端口: ${FIREWALL_PORT}" firewall-cmd --permanent --add-port="${FIREWALL_PORT}/tcp" &>/dev/null firewall-cmd --add-port="${FIREWALL_PORT}/tcp" &>/dev/null log_info "防火墙规则已更新。" } # 功能 2: 永久关闭 SELinux disable_selinux() { log_info "禁用 SELinux" sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config setenforce 0 &>/dev/null || log_info "SELinux 已关闭。" } # 功能 3: 永久修改磁盘调度算法为 deadline set_disk_scheduler() { log_info "设置磁盘调度算法为 deadline" sed -i 's/elevator=deadline//g' /etc/default/grub sed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="\1 elevator=deadline"/' /etc/default/grub } # 功能 4: 永久关闭交换分区 swap disable_swap() { log_info "关闭交换分区 swap" swapoff -a sed -i '/^[^#]*\bswap\b/s/^/#/' /etc/fstab log_info "交换分区 swap 已永久禁用。" } # 功能 5: 禁用 NUMA(Non-Uniform Memory Access) disable_numa() { log_info "禁用 NUMA" sed -i 's/numa=off//g' /etc/default/grub sed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="\1 numa=off"/' /etc/default/grub } # 功能 6: 禁用 Transparent HugePages(透明大页) disable_transparent_hugepages() { log_info "禁用 Transparent HugePages" echo "never" > /sys/kernel/mm/transparent_hugepage/enabled echo "never" > /sys/kernel/mm/transparent_hugepage/defrag log_info "Transparent HugePages 已永久禁用。" } # 功能 7: 设置 sysctl.conf 参数 set_sysctl_params() { log_info "设置 sysctl.conf 参数" echo "0" > /proc/sys/vm/overcommit_memory sed -i '/vm.overcommit_memory/d' /etc/sysctl.conf echo "vm.overcommit_memory=0" >> /etc/sysctl.conf } # 功能 8: 设置 limits.conf 参数 set_limits_conf() { log_info "设置 limits.conf 参数" sed -i '/soft\s*data\s*/d' /etc/security/limits.conf sed -i '/hard\s*data\s*/d' /etc/security/limits.conf echo "* soft data 1048576" >> /etc/security/limits.conf echo "* hard data 1048576" >> /etc/security/limits.conf sed -i '/soft\s*fsize\s*/d' /etc/security/limits.conf sed -i '/hard\s*fsize\s*/d' /etc/security/limits.conf echo "* soft fsize unlimited" >> /etc/security/limits.conf echo "* hard fsize unlimited" >> /etc/security/limits.conf sed -i '/soft\s*nofile\s*/d' /etc/security/limits.conf sed -i '/hard\s*nofile\s*/d' /etc/security/limits.conf echo "* soft nofile 65536" >> /etc/security/limits.conf echo "* hard nofile 65536" >> /etc/security/limits.conf sed -i '/soft\s*nproc\s*/d' /etc/security/limits.conf sed -i '/hard\s*nproc\s*/d' /etc/security/limits.conf echo "* soft nproc 10240" >> /etc/security/limits.conf echo "* hard nproc 10240" >> /etc/security/limits.conf } # 功能 9: 确保 RemoveIPC=no ensure_removeipc() { log_info "确保 RemoveIPC=no" sed -i '/^RemoveIPC=.*/d' /etc/systemd/logind.conf echo "RemoveIPC=no" >> /etc/systemd/logind.conf systemctl daemon-reload systemctl restart systemd-logind } # 功能 10: 创建用户、组并设置权限 create_user_group() { log_info "创建用户和组" groupadd -g $DBGID $DBGROUP 2>/dev/null || log_info "$DBGROUP 组已存在" useradd -g $DBGROUP -u $DBUID -m $DBUSER 2>/dev/null || log_info "$DBUSER 用户已存在" # 设置用户密码 echo "$DBUSER:$DBPASSWD" | chpasswd log_info "用户和组已创建,密码已设置。" # 设置安装路径权限 mkdir -p $DBINSTALL_PATH chown -R $DBUSER:$DBGROUP $DBINSTALL_PATH chmod -R 775 $DBINSTALL_PATH log_info "安装路径权限已设置。" } # 功能 11: 配置 dmdba 用户的 .bashrc 环境变量 configure_bashrc() { log_info "配置 dmdba 用户的 .bashrc" BASHRC_FILE="/home/$DBUSER/.bashrc" # 确保文件存在 touch $BASHRC_FILE # 删除旧配置以确保幂等性 sed -i '/^export DM_HOME=/d' $BASHRC_FILE sed -i '/^export LD_LIBRARY_PATH=/d' $BASHRC_FILE sed -i '/^export PATH=/d' $BASHRC_FILE # 追加新的配置 echo "export DM_HOME=\"$DM_HOME\"" >> $BASHRC_FILE echo "export LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH:$DM_HOME/bin\"" >> $BASHRC_FILE echo "export PATH=\$PATH:$DM_HOME/bin:$DM_HOME/tool" >> $BASHRC_FILE log_info "dmdba 用户的 .bashrc 配置已更新。" } # 功能 12: 确保 /etc/pam.d/login 包含 pam_limits 配置 ensure_pam_limits() { log_info "确保 /etc/pam.d/login 包含 pam_limits 配置" PAM_FILE="/etc/pam.d/login" # 确保文件存在 if [[ ! -f $PAM_FILE ]]; then touch $PAM_FILE log_info "$PAM_FILE 文件不存在,已创建。" fi # 删除旧配置以确保幂等性 sed -i '/^session required \/lib64\/security\/pam_limits.so/d' $PAM_FILE sed -i '/^session required pam_limits.so/d' $PAM_FILE # 插入新的配置 echo "session required /lib64/security/pam_limits.so" >> $PAM_FILE echo "session required pam_limits.so" >> $PAM_FILE log_info "/etc/pam.d/login 中的 pam_limits 配置已更新。" } # 调用函数 configure_firewall disable_selinux # set_disk_scheduler # disable_swap # disable_numa # disable_transparent_hugepages # set_sysctl_params # set_limits_conf # ensure_removeipc create_user_group configure_bashrc # generate_grub_cfg # ensure_pam_limits log_info "所有操作完成,务必重启操作系统生效所有配置!"

上述脚本根据达梦安装手册编写,根据自己实际情况,选择。
最少只需要下面四个函数即可:

  • configure_firewall
  • disable_selinux
  • create_user_group
  • configure_bashrc
[root@localhost ~]# hostnamectl set-hostname dm01 [root@localhost ~]# su - 上一次登录: 一 1月 20 17:44:37 CST 2025 从 10.10.10.1 pts/0 上 [root@dm01 ~]# vim 0.set_dm_env.sh [root@dm01 ~]# sh 0.set_dm_env.sh [2025-01-20 18:03:06] 配置防火墙,放行 TCP 端口: 5236 [2025-01-20 18:03:07] 防火墙规则已更新。 [2025-01-20 18:03:07] 禁用 SELinux [2025-01-20 18:03:07] SELinux 已关闭。 [2025-01-20 18:03:07] 创建用户和组 [2025-01-20 18:03:07] 用户和组已创建,密码已设置。 [2025-01-20 18:03:07] 安装路径权限已设置。 [2025-01-20 18:03:07] 配置 dmdba 用户的 .bashrc [2025-01-20 18:03:07] dmdba 用户的 .bashrc 配置已更新。 [2025-01-20 18:03:07] 所有操作完成,务必重启操作系统生效所有配置!

挂载光盘

[root@dm01 ~]# mount /dev/sr0 /mnt mount: /mnt: WARNING: source write-protected, mounted read-only. [root@dm01 ~]# df -h | grep mnt /dev/sr0 1.1G 1.1G 0 100% /mnt [root@dm01 ~]# ll /mnt 总用量 1068007 -r-xr-xr-x 1 root root 2910670 12月 24 19:15 'DM8 Install.pdf' -r-xr-xr-x 1 root root 1090727961 12月 26 18:45 DMInstall.bin

调整临时路径

[root@dm01 ~]# df -h | grep '/tmp' tmpfs 1.5G 0 1.5G 0% /tmp [root@dm01 ~]# mount -o remount,size=4G /tmp [root@dm01 ~]# df -h | grep '/tmp' tmpfs 4.0G 0 4.0G 0% /tmp

安装达梦数据库

[root@dm01 ~]# /mnt/DMInstall.bin -i 安装语言: [1]: 简体中文 [2]: English 请选择安装语言 [1]: 解压安装程序......... 硬件架构校验通过! 欢迎使用达梦数据库安装程序 是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n 是否设置时区? (Y/y:是 N/n:否) [Y/y]:y 设置时区: [ 1]: (GTM-12:00) 日界线西 [ 2]: (GTM-11:00) 萨摩亚群岛 [ 3]: (GTM-10:00) 夏威夷 [ 4]: (GTM-09:00) 阿拉斯加 [ 5]: (GTM-08:00) 太平洋时间(美国和加拿大) [ 6]: (GTM-07:00) 亚利桑那 [ 7]: (GTM-06:00) 中部时间(美国和加拿大) [ 8]: (GTM-05:00) 东部部时间(美国和加拿大) [ 9]: (GTM-04:00) 大西洋时间(美国和加拿大) [10]: (GTM-03:00) 巴西利亚 [11]: (GTM-02:00) 中大西洋 [12]: (GTM-01:00) 亚速尔群岛 [13]: (GTM) 格林威治标准时间 [14]: (GTM+01:00) 萨拉热窝 [15]: (GTM+02:00) 开罗 [16]: (GTM+03:00) 莫斯科 [17]: (GTM+04:00) 阿布扎比 [18]: (GTM+05:00) 伊斯兰堡 [19]: (GTM+06:00) 达卡 [20]: (GTM+07:00) 曼谷,河内 [21]: (GTM+08:00) 中国标准时间 [22]: (GTM+09:00) 首尔 [23]: (GTM+10:00) 关岛 [24]: (GTM+11:00) 所罗门群岛 [25]: (GTM+12:00) 斐济 [26]: (GTM+13:00) 努库阿勒法 [27]: (GTM+14:00) 基里巴斯 请选择时区 [21]: 安装类型: 1 典型安装 2 服务器 3 客户端 4 自定义 请选择安装类型的数字序号 [1 典型安装]: 所需空间: 2180M 请选择安装目录 [/opt/dmdbms]:/dm8 可用空间: 57G 是否确认安装路径(/dm8)? (Y/y:是 N/n:否) [Y/y]: 安装前小结 安装位置: /dm8 所需空间: 2180M 可用空间: 57G 版本信息: 有效日期: 安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):Y 2025-01-20 18:10:38 [INFO] 安装达梦数据库... 2025-01-20 18:10:38 [INFO] 安装 基础 模块... 2025-01-20 18:10:41 [INFO] 安装 服务器 模块... 2025-01-20 18:10:42 [INFO] 安装 客户端 模块... 2025-01-20 18:10:43 [INFO] 安装 驱动 模块... 2025-01-20 18:10:43 [INFO] 安装 手册 模块... 2025-01-20 18:10:44 [INFO] 安装 服务 模块... 2025-01-20 18:10:44 [INFO] 移动日志文件。 2025-01-20 18:10:44 [INFO] 正在启动DmAPService服务... 2025-01-20 18:10:45 [INFO] 启动DmAPService服务成功。 2025-01-20 18:10:45 [INFO] 安装达梦数据库完成。 安装结束

初始化实例

实例信息

  • 安装路径:PATH=/dm8/data
  • 数据库名称:DB_NAME=DM01
  • 实例名称:INSTANCE_NAME=DMSVR01
  • 管理员密码:SYSDBA_PWD=Dm01SYSDBA
  • 审计管理密码:SYSAUDITOR_PWD=Dm01SYSDBA
  • 页大小:page_size=16
  • 簇大小:extent_size=32
  • 重做日志大小:LOG_SIZE=500
  • 大小写敏感:CASE_SENSITIVE=Y
  • 字符集:CHARSET=1
  • 监听端口:PORT_NUM=5236
[root@dm01 ~]# su - dmdba 上一次登录: 一 1月 20 18:17:21 CST 2025 pts/0 上 [dmdba@dm01 ~]$ dminit \ > PATH=/dm8/data \ > DB_NAME=DM01 \ > INSTANCE_NAME=DM01 \ > SYSDBA_PWD=Dm01SYSDBA \ > SYSAUDITOR_PWD=Dm01SYSDBA \ > page_size=8 \ > extent_size=16 \ > LOG_SIZE=256 \ > CASE_SENSITIVE=Y \ > CHARSET=1 \ > PORT_NUM=5236 initdb V8 db version: 0x7000c file dm.key not found, use default license! License will expire on 2025-12-25 Normal of FAST Normal of DEFAULT Normal of RECYCLE Normal of KEEP Normal of ROLL log file path: /dm8/data/DM01/DM0101.log log file path: /dm8/data/DM01/DM0102.log write to dir [/dm8/data/DM01]. create dm database success. 2025-01-20 18:19:49

注册服务(root权限)

[dmdba@dm01 ~]$ exit 注销 [root@dm01 ~]# /dm8/script/root/dm_service_installer.sh \ > -t dmserver \ > -dm_ini /dm8/data/DM01/dm.ini \ > -p DM01 Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDM01.service → /usr/lib/systemd/system/DmServiceDM1.service. 创建服务(DmServiceDM1)完成 [root@dm01 ~]# systemctl daemon-reload [root@dm01 ~]# systemctl status DmServiceDM01.service ● DmServiceDM1.service - DM Instance Service(DmServiceDM1). Loaded: loaded (/usr/lib/systemd/system/DmServiceDM1.service; enabled; vendor preset: disabled) Active: inactive (dead) [root@dm01 ~]# systemctl enable DmServiceDM01.service [root@dm01 ~]# systemctl start DmServiceDM01.service [root@dm01 ~]# systemctl status DmServiceDM01.service ● DmServiceDM1.service - DM Instance Service(DmServiceDM1). Loaded: loaded (/usr/lib/systemd/system/DmServiceDM1.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2025-01-20 18:23:01 CST; 6s ago Process: 5292 ExecStart=/dm8/bin/DmServiceDM1 start (code=exited, status=0/SUCCESS) Main PID: 5315 (dmserver) Tasks: 121 Memory: 885.5M CGroup: /system.slice/DmServiceDM01.service └─5315 /dm8/bin/dmserver path=/dm8/data/DM01/dm.ini -noconsole 1月 20 18:22:46 dm01 systemd[1]: Starting DM Instance Service(DmServiceDM1).... 1月 20 18:23:01 dm01 DmServiceDM1[5292]: [34B blob data] 1月 20 18:23:01 dm01 systemd[1]: Started DM Instance Service(DmServiceDM1)..

登陆数据库实例

[root@dm01 ~]# su - dmdba 上一次登录: 一 1月 20 18:18:05 CST 2025 pts/0 上 [dmdba@dm01 ~]$ disql SYSDBA/Dm01SYSDBA 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 5.315(ms) disql V8 SQL> SELECT * FROM V$INSTANCE; 行号 NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION DB_VERSION START_TIME STATUS$ MODE$ OGUID DSC_SEQNO DSC_ROLE BUILD_VERSION ---------- ------- ------------- --------------- --------- -------------------------- ------------------- ------------------- ------- ------ ----------- ----------- -------- ---------------------------------- BUILD_TIME -------------------- 1 DM01 DM01 1 dm01 DM Database Server x64 V8 DB Version: 0x7000c 2025-01-20 18:22:46 OPEN NORMAL 0 0 NULL 1-4-6-2024.12.25-255012-20119-ENT Dec 26 2024 16:09:16 已用时间: 0.893(毫秒). 执行号:66301.
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服