# DMShellInstall **Repository Path**: hnyuanzj/DMShellInstall ## Basic Information - **Project Name**: DMShellInstall - **Description**: 达梦数据库一键安装 - **Primary Language**: Shell - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: https://eco.dameng.com/community/post/20221213152007ROVL69MSE2Z6ISHFOJ - **GVP Project**: No ## Statistics - **Stars**: 127 - **Forks**: 69 - **Created**: 2023-01-11 - **Last Updated**: 2026-08-06 ## Categories & Tags **Categories**: dbmanager **Tags**: DM数据库 ## README # DMShellInstall — 达梦数据库自动化部署工具 ## 概述 DMShellInstall 是一个用于自动化部署达梦数据库的 Shell 脚本工具包,包含两个核心脚本: | 脚本 | 功能 | 使用场景 | |------|------|----------| | **DMShellInstall** | 达梦数据库全自动安装脚本 | 单机/集群安装、OS环境配置、数据库初始化 | | **SSHTrust** | SSH免密互信配置工具 | 集群节点间建立SSH互信 | --- ## 使用脚本前 执行脚本前请完成以下准备工作: 1. **操作系统**:安装好干净的 Linux 操作系统(Red Hat / CentOS / 麒麟 / openEuler 等) 2. **网络配置**:配置好网络,规划好各节点 IP 地址 3. **存储配置**:配置好存储,规划好各目录磁盘空间 4. **安装介质**:解压达梦安装包,将 ISO 镜像文件移动到与脚本同一目录下,执行时通过 `-di` 参数指定 ISO 镜像名称,例如: ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso ``` --- ## 参数说明 > 参数按作用域分为三组:**全局通用** | **主备/AFC集群** | **DSC集群**。 > > 带默认值的参数可省略不传,脚本将自动按默认值配置。 > > 数据库密码参数(SYSDBA/SYSAUDITOR/SYSSSO)建议不传,脚本自动生成12位随机强密码。 ### 全局通用参数(适用于所有部署模式) | 参数 | 说明 | 默认值 | 示例 | |------|------|--------|------| | `-di` | DM安装镜像文件 | **必填** | `-di dm8_20250101_x86_rh7_64.iso` | | `-kp` | 授权文件路径 | 无 | `-kp /tmp/dm.key` | | `-d` | 软件安装目录 | `/home/dmdba/dmdbms` | `-d /home/dmdba/dmdbms` | | `-dd` | 实例目录 | `/dmdata` | `-dd /dmdata` | | `-ad` | 归档目录 | `/dmarch` | `-ad /dmarch` | | `-bd` | 备份目录 | `/dmbak` | `-bd /dmbak` | | `-cd` | CORE DUMP目录 | `/dmbak/dmcore` | `-cd /dmbak/core` | | `-dn` | 数据库名 | `DAMENG` | `-dn DAMENG` | | `-in` | 实例名 | `DMSERVER` | `-in DMSERVER` | | `-pn` | 监听端口 | `5236` | `-pn 5236` | | `-es` | 簇大小(页) | `32` | `-es 32` | | `-ps` | 页大小(K) | `32` | `-ps 32` | | `-cs` | 大小写敏感 | `1`(敏感) | `-cs 1` | | `-c` | 字符集 | `1`(UTF-8) | `-c 1` | | `-cm` | 兼容模式(0-8) | `0` | `-cm 0` | | `-bpm` | 空格填充模式 | `0` | `-bpm 0` | | `-sp` | SYSDBA密码 | 自动生成 | `-sp 'Sysdba@123456'` | | `-sap` | SYSAUDITOR密码 | 自动生成 | `-sap 'Sysauditor@123456'` | | `-ssp` | SYSSSO密码 | 自动生成 | `-ssp 'Syssso@123456'` | | `-ls` | 日志文件大小(M) | `1024` | `-ls 1024` | | `-rpn` | 日志文件后缀 | `rlog` | `-rpn rlog` | | `-er` | 启用归档 | `Y` | `-er Y` | | `-sl` | 归档空间上限(M) | `102400` | `-sl 102400` | | `-bm` | 备份模式 | `2`(周六全备+平日增备) | `-bm 2` | | `-bds` | 备份保留天数 | `15` | `-bds 15` | | `-mp` | 内存占比(%) | `80` | `-mp 80` | | `-om` | 并发优化 | `0`(一般和OLAP) | `-om 0` | | `-opd` | 自动优化参数 | `Y` | `-opd Y` | | `-osa` | OS认证 | `Y` | `-osa Y` | | `-hf` | 配置大页 | `N` | `-hf Y` | | `-no` | 关闭NUMA | `N` | `-no Y` | | `-hn` | 主机名 | 无 | `-hn dmdb01` | | `-dp` | dmdba密码 | `Dameng@123` | `-dp 'Dameng@123'` | | `-m` | 仅配置OS | `N` | `-m Y` | | `-ud` | 仅安装数据库软件 | `N` | `-ud Y` | | `-oid` | 仅初始化数据库 | `N` | `-oid Y` | | `-iso` | 自动配置YUM源 | `Y` | `-iso Y` | | `-ti` | NTP时间服务器IP | 无 | `-ti 192.168.1.100` | ### 主备 / AFC 集群参数 | 参数 | 说明 | 默认值 | 示例 | |------|------|--------|------| | `-osp` | SSH端口 | `22` | `-osp 22` | | `-np` | 节点连通性检查 | `Y` | `-np Y` | | `-hn` | 主机名前缀(自动生成 dw01,dw02…) | 无 | `-hn dw` | | `-rp` | 当前用户密码(用于远程执行) | 无 | `-rp 'P@ssw0rd123'` | | `-skp` | 现有SSH互信目录 | 无 | `-skp /root/.ssh` | | | **── DataWatch ──** | | | | `-dpi` | 主备公网IP(逗号分隔) | 无 | `-dpi 192.168.31.181,192.168.31.182` | | `-dmi` | 主备私网IP(逗号分隔) | 无 | `-dmi 10.0.0.181,10.0.0.182` | | `-api` | 异步备库公网IP(逗号分隔) | 无 | `-api 192.168.31.183` | | `-ami` | 异步备库私网IP(逗号分隔) | 无 | `-ami 10.0.0.183` | | `-spi` | 同步备库公网IP(逗号分隔) | 无 | `-spi 192.168.31.184` | | `-smi` | 同步备库私网IP(逗号分隔) | 无 | `-smi 10.0.0.184` | | `-dmoi` | 监视器主机IP | 无 | `-dmoi 192.168.31.185` | | `-dmop` | 监视器端口(多实例自动+1) | 无 | `-dmop 8330` | | `-dgn` | 守护组名 | `GRP1` | `-dgn GRP1` | | `-mpn` | 私网监听端口 | `5336` | `-mpn 5336` | | `-mdpn` | 守护进程端口 | `5436` | `-mdpn 5436` | | `-midpn` | 实例监听守护端口 | `5536` | `-midpn 5536` | | `-at` | 归档模式(0:REALTIME / 1:TIMELY) | `0` | `-at 1` | | `-awa` | 性能模式(0:高性能 / 1:事务一致) | `1` | `-awa 0` | | `-ri` | 归档发送间隔(s) | `60` | `-ri 30` | | `-art` | 同步备库异步恢复间隔(s) | `1` | `-art 5` | | | **── AFC ──** | | | | `-dpi` | 主备公网IP(逗号分隔) | 无 | `-dpi 192.168.31.181,192.168.31.182` | | `-dxi` | 主备私网IP(逗号分隔) | 无 | `-dxi 10.0.0.1,10.0.0.2` | | `-dxp` | 私网监听端口(首节点默认10006,后续+1) | `10006` | `-dxp 10006` | | `-rhi` | 组心跳间隔(ms) | `150` | `-rhi 200` | | `-rvi` | 基础投票间隔(ms) | `3000` | `-rvi 3000` | | `-xhi` | xmal心跳间隔(s) | `5` | `-xhi 5` | ### DSC 集群参数 | 参数 | 说明 | 默认值 | 示例 | |------|------|--------|------| | `-osp` | SSH端口 | `22` | `-osp 22` | | `-np` | 节点连通性检查 | `Y` | `-np Y` | | `-hn` | 主机名前缀(自动生成 dsc01,dsc02…) | 无 | `-hn dsc` | | `-rp` | 当前用户密码(用于远程执行) | 无 | `-rp 'P@ssw0rd123'` | | `-skp` | 现有SSH互信目录 | 无 | `-skp /root/.ssh` | | `-dpi` | 公网IP(逗号分隔) | 无 | `-dpi 192.168.1.101,192.168.1.102` | | `-dmi` | 私网IP(逗号分隔) | 无 | `-dmi 172.16.1.101,172.16.1.102` | | `-lci` | 第三方确认公网IP | 无 | `-lci 192.168.1.200` | | `-ddn` | DB_NAME(覆盖全局-dn) | `DSC` | `-ddn DMDSC` | | `-den` | 实例名前缀(覆盖全局-in) | `DSC`(自动+01,+02…) | `-den DSC` | | `-apd` | ASM密码 | `Dm@ASM12321` | `-apd 'Dm@ASM12321'` | | `-cdp` | CSS通信端口 | `9341` | `-cdp 9341` | | `-adp` | ASM通信端口 | `9351` | `-adp 9351` | | `-dcp` | DCR检查端口(首节点默认9361,后续+1) | `9361` | `-dcp 9361` | | `-amp` | ASM私网端口 | `9451` | `-amp 9451` | | `-dmp` | DB私网端口 | `9461` | `-dmp 9461` | | `-ess` | ASM共享内存(M) | `512` | `-ess 512` | | `-dcd` | DCR磁盘(dsc:1块 / dscm:1-5块) | 无 | `-dcd /dev/sdb` | | `-vod` | VOTE磁盘(dsc必选 / dscm禁用) | 无 | `-vod /dev/sdc` | | `-lod` | REDO磁盘(可选) | 无 | `-lod /dev/sdd,/dev/sde` | | `-ard` | ARCH磁盘(可选) | 无 | `-ard /dev/sdf,/dev/sdg` | | `-dad` | DATA磁盘(≥1块) | 无 | `-dad /dev/sdh,/dev/sdi` | | `-rr` | REDO冗余 | `1` | `-rr 1` | | `-ar` | ARCH冗余 | `1` | `-ar 1` | | `-dr` | DATA冗余 | `1` | `-dr 1` | | `-lgm` | REDO副本数 | `1` | `-lgm 1` | | `-aam` | ARCH副本数 | `1` | `-aam 1` | | `-dtm` | 表空间副本数 | `1` | `-dtm 1` | | `-ctm` | 控制文件副本数 | `1` | `-ctm 1` | | `-lst` | REDO条带化(KB) | `64` | `-lst 64` | | `-aas` | ARCH条带化(KB) | `64` | `-aas 64` | | `-dst` | DATA条带化(KB) | `32` | `-dst 32` | | `-as` | AU大小(Bytes) | `4` | `-as 4` | | `-rs` | ASM日志大小(M) | `128` | `-rs 128` | | `-fld` | 排除系统盘(逗号分隔) | 无 | `-fld sda,sdb` | | `-fmd` | 格式化共享盘 | `Y` | `-fmd Y` | | `-mtp` | 多路径聚合 | `N` | `-mtp Y` | | `-la` | 本地归档 | `N` | `-la Y` | ### 高级/调试参数 > 以下为非常规部署参数,非特殊场景无需使用。 | 参数 | 说明 | 默认值 | 示例 | |------|------|--------|------| | `-dbg` | 调试模式,输出详细执行过程 | `N` | `-dbg Y` | | `-ocu` | 仅创建dmdba用户(ALL NOPASSWD) | `N` | `-ocu Y` | | `-ois` | 仅安装sshpass(各节点) | `N` | `-ois Y` | | `-isp` | sshpass模式填充密码远程操作 | `N` | `-isp Y` | | `-ir` | 用rsync替代scp传输文件 | `N` | `-ir Y` | | `-gdv` | 获取已安装数据库版本(需-d指定目录) | 无 | `-gdv Y -d /home/dmdba/dmdbms` | | `-oguid` | 集群标识符(6位随机正整数,首位非0) | 自动 | `-oguid 543210` | | `-ari` | DSC集群:别名代替心跳IP | `N` | `-ari Y` | | `-lic` | VARCHAR长度以字符为单位 | `0` | `-lic 1` | | `-dpv` | 初始化数据库扩展参数(值用单引号括起) | 无 | `-dpv 'PAGE_CHECK=2 PAGE_HASH_NAME=SHA256'` | --- ## 一、运行方式 ### 1.1 命令行全量参数模式 通过命令行参数完成全部配置,无需交互: ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso ``` ### 1.2 分段执行模式 将安装过程拆分为"OS环境配置 → 软件安装 → 数据库初始化"三个阶段,可单独执行: ```bash # 阶段1:仅配置操作系统环境(创建用户、配置系统参数、挂载ISO) ./DMShellInstall -m Y -di dm8_20250910_x86_centos7_64.iso # 阶段2:仅安装数据库软件 ./DMShellInstall -ud Y -di dm8_20250910_x86_centos7_64.iso # 阶段3:仅初始化数据库 ./DMShellInstall -oid Y -di dm8_20250910_x86_centos7_64.iso ``` > **说明**:若传入参数与脚本默认值一致,可省略不传,脚本将自动采用默认配置。 --- ## 二、磁盘空间比例参考 > 安装前建议按以下比例规划各目录磁盘空间(x 为基准值): > > ``` > data:x — x为数据量基准值 > dmdata:4.5x — 数据目录(-dd) > dmarch:x — 归档目录(-ad) > dmbak:4.5x — 备份目录(-bd) > ``` ## 三、单机安装场景 ### 场景1:单机全自动一键安装(适合生产自动化) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak \ -cs 1 -c 1 `# 大小写敏感 字符集` ``` ### 场景2:单机 + 大页内存优化 ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak \ -cs 1 -c 1 `# 大小写敏感 字符集`\ -hf Y `# 开启大页` ``` ### 场景3:单机 + 关闭NUMA ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak \ -cs 1 -c 1 `# 大小写敏感 字符集`\ -no Y `# 关闭NUMA` ``` ### 场景4:单机 + 指定授权文件 ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak \ -cs 1 -c 1 `# 大小写敏感 字符集`\ -kp /home/dmdba/dm20250101.key `# 授权文件路径` ``` --- ## 四、数据守护(DataWatch)集群 — 手动切换 ### 场景1:一主四备(手动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171,192.168.31.172,192.168.31.173,192.168.31.174 `# 公网IP`\ -dmi 192.168.31.170,192.168.31.171,192.168.31.172,192.168.31.173,192.168.31.174 `# 私网IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N `# 跳过YUM源配置` ``` ### 场景2:一主两备两异步(手动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171,192.168.31.172 `# 公网IP`\ -dmi 192.168.31.170,192.168.31.171,192.168.31.172 `# 私网IP`\ -api 192.168.31.173,192.168.31.174 `# 异步备库公网IP`\ -ami 192.168.31.173,192.168.31.174 `# 异步备库私网IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` ### 场景3:一主两备两同步(手动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171,192.168.31.172 `# 公网IP`\ -dmi 192.168.31.170,192.168.31.171,192.168.31.172 `# 私网IP`\ -spi 192.168.31.173,192.168.31.174 `# 同步备库公网IP`\ -smi 192.168.31.173,192.168.31.174 `# 同步备库私网IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` ### 场景4:一主两备一同步一异步(手动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171,192.168.31.172 `# 公网IP`\ -dmi 192.168.31.170,192.168.31.171,192.168.31.172 `# 私网IP`\ -api 192.168.31.173 `# 异步备库公网IP`\ -ami 192.168.31.173 `# 异步备库私网IP`\ -spi 192.168.31.174 `# 同步备库公网IP`\ -smi 192.168.31.174 `# 同步备库私网IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` ### 场景5:一主四异步(手动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170 `# 公网IP`\ -dmi 192.168.31.170 `# 私网IP`\ -api 192.168.31.171,192.168.31.172,192.168.31.173,192.168.31.174 `# 异步备库公网IP`\ -ami 192.168.31.171,192.168.31.172,192.168.31.173,192.168.31.174 `# 异步备库私网IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` ### 场景6:一主四同步(手动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170 `# 公网IP`\ -dmi 192.168.31.170 `# 私网IP`\ -spi 192.168.31.171,192.168.31.172,192.168.31.173,192.168.31.174 `# 同步备库公网IP`\ -smi 192.168.31.171,192.168.31.172,192.168.31.173,192.168.31.174 `# 同步备库私网IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` ### 场景7:一主两异步两同步(手动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170 `# 公网IP`\ -dmi 192.168.31.170 `# 私网IP`\ -api 192.168.31.171,192.168.31.172 `# 异步备库公网IP`\ -ami 192.168.31.171,192.168.31.172 `# 异步备库私网IP`\ -spi 192.168.31.173,192.168.31.174 `# 同步备库公网IP`\ -smi 192.168.31.173,192.168.31.174 `# 同步备库私网IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` ### 场景8:一主一异步三同步(手动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170 `# 公网IP`\ -dmi 192.168.31.170 `# 私网IP`\ -api 192.168.31.171 `# 异步备库公网IP`\ -ami 192.168.31.171 `# 异步备库私网IP`\ -spi 192.168.31.172,192.168.31.173,192.168.31.174 `# 同步备库公网IP`\ -smi 192.168.31.172,192.168.31.173,192.168.31.174 `# 同步备库私网IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` ### 场景9:一主一同步三异步(手动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170 `# 公网IP`\ -dmi 192.168.31.170 `# 私网IP`\ -api 192.168.31.171,192.168.31.172,192.168.31.173 `# 异步备库公网IP`\ -ami 192.168.31.171,192.168.31.172,192.168.31.173 `# 异步备库私网IP`\ -spi 192.168.31.174 `# 同步备库公网IP`\ -smi 192.168.31.174 `# 同步备库私网IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` --- ## 五、数据守护(DataWatch)集群 — 自动切换 > **自动切换**:通过 `-dmoi` 指定独立监视器节点,实现主备自动故障切换。 ### 场景1:一主三备一监视器(自动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171,192.168.31.172,192.168.31.173 `# 公网IP`\ -dmoi 192.168.31.174 `# 监视器主机IP`\ -dmi 192.168.31.170,192.168.31.171,192.168.31.172,192.168.31.173 `# 私网IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` ### 场景2:一主两备一异步 + 监视器(自动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171,192.168.31.172 `# 公网IP`\ -dmi 192.168.31.170,192.168.31.171,192.168.31.172 `# 私网IP`\ -api 192.168.31.173 `# 异步备库公网IP`\ -ami 192.168.31.173 `# 异步备库私网IP`\ -dmoi 192.168.31.174 `# 监视器主机IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` ### 场景3:一主两备一同步 + 监视器(自动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171,192.168.31.172 `# 公网IP`\ -dmi 192.168.31.170,192.168.31.171,192.168.31.172 `# 私网IP`\ -spi 192.168.31.173 `# 同步备库公网IP`\ -smi 192.168.31.173 `# 同步备库私网IP`\ -dmoi 192.168.31.174 `# 监视器主机IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` ### 场景4:一主两备一同步一异步 + 监视器(自动切换) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171 `# 公网IP`\ -dmi 192.168.31.170,192.168.31.171 `# 私网IP`\ -spi 192.168.31.172 `# 同步备库公网IP`\ -smi 192.168.31.172 `# 同步备库私网IP`\ -api 192.168.31.173 `# 异步备库公网IP`\ -ami 192.168.31.173 `# 异步备库私网IP`\ -dmoi 192.168.31.174 `# 监视器主机IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` --- ## 六、Raft 主备集群 > **Raft 集群**:使用 `-dxi`(xmal通信IP)参数,3节点及以上奇数节点。 ### 场景1:三节点Raft主备集群 ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171,192.168.31.172 `# 公网IP`\ -dxi 192.168.31.170,192.168.31.171,192.168.31.172 `# 私网IP`\ -rp 'Dameng@123' `# 当前用户密码`\ -hn dw `# 主机名前缀`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -oid Y `# 仅初始化数据库 跳过YUM源配置` ``` --- ## 七、DMDSC 集群 ### 场景1:两节点DSC集群(含REDO + ARCH独立磁盘) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171 -dmi 192.168.31.170,192.168.31.171 `# 公网IP 私网IP`\ -dcd /dev/sdb -vod /dev/sdc -lod /dev/sdd -ard /dev/sde -dad /dev/sdf `# ARCH磁盘 DATA磁盘 DCR磁盘 REDO磁盘 VOTE磁盘`\ -hn dsc -rp 'Dameng@123' `# 主机名前缀 当前用户密码`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -mtp Y `# 多路径聚合 跳过YUM源配置` ``` ### 场景2:两节点DSC集群(无多路径) ```bash ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171 -dmi 192.168.31.170,192.168.31.171 `# 公网IP 私网IP`\ -dcd /dev/sdb -vod /dev/sdc -lod /dev/sdd -ard /dev/sde -dad /dev/sdf `# ARCH磁盘 DATA磁盘 DCR磁盘 REDO磁盘 VOTE磁盘`\ -hn dsc -rp 'Dameng@123' `# 主机名前缀 当前用户密码`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N `# 跳过YUM源配置` ``` ### 场景3:DSC多路径 + ASM镜像(多链路聚合) > **说明**:使用多路径设备,`-lod` / `-ard` 各指定3块磁盘实现ASM NORMAL冗余。 ```bash ./DMShellInstall -di dm8_20241203_x86_rh7_64.iso \ -dpi 192.168.2.31,192.168.2.32 -dmi 192.168.2.31,192.168.2.32 `# 公网IP 私网IP`\ -rp Dameng@123 `# 当前用户密码`\ -hn dsc `# 主机名前缀`\ -dcd /dev/sdr `# DCR磁盘`\ -lod /dev/sdl,/dev/sdm,/dev/sdp `# REDO磁盘`\ -ard /dev/sdi,/dev/sdf,/dev/sdk `# ARCH磁盘`\ -dad /dev/sde `# DATA磁盘`\ -mtp Y `# 多路径聚合`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -ddn DMDSC -den DMDSC `# 实例名前缀 数据库名` ``` ### 场景4:两节点DSC(单盘分区 + REDO/ARCH/DATA分离) > **说明**:使用单块磁盘 `/dev/sdb` 分区后,分别指定不同分区。 ```bash ./DMShellInstall -di dm8_20260507_x86_kylin10_sp1_64.iso -oid Y \ -dpi 192.168.31.171,192.168.31.172 -dmi 192.168.31.171,192.168.31.172 `# 公网IP 私网IP`\ -hn dsc -rp 'Dameng@123' `# 主机名前缀 当前用户密码`\ -dcd /dev/sdb1,/dev/sdb2,/dev/sdb3,/dev/sdb4,/dev/sdb5 `# DCR磁盘`\ -lod /dev/sdb6,/dev/sdb7,/dev/sdb8 `# REDO磁盘`\ -ard /dev/sdb9,/dev/sdb10,/dev/sdb11 `# ARCH磁盘`\ -dad /dev/sdb12 `# DATA磁盘`\ -d /home/dmdba/dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N `# 跳过YUM源配置` ``` ### 场景5:两节点DSC(单盘分区 + VOTE + REDO/ARCH/DATA) ```bash ./DMShellInstall -di dm8_20251119_x86_centos7_64.iso -oid Y \ -dpi 192.168.31.171,192.168.31.172 -dmi 192.168.31.171,192.168.31.172 `# 公网IP 私网IP`\ -hn dsc -rp 'Dameng@123' `# 主机名前缀 当前用户密码`\ -dcd /dev/sdb1 -vod /dev/sdb2 `# DCR磁盘 VOTE磁盘`\ -lod /dev/sdb6,/dev/sdb7,/dev/sdb8 `# REDO磁盘`\ -ard /dev/sdb9,/dev/sdb10,/dev/sdb11 `# ARCH磁盘`\ -dad /dev/sdb12 `# DATA磁盘`\ -d /home/dmdba/dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N `# 跳过YUM源配置` ``` ### 场景6:两节点DSC(SSH密钥 + 高冗余 + 条带化) > **说明**:通过 `-skp` 指定已有 SSH 互信目录,无需提供 root 密码。 ```bash ./DMShellInstall -di dm8_20260507_x86_kylin10_sp1_64.iso \ -dpi 192.168.31.171,192.168.31.172 -dmi 192.168.31.171,192.168.31.172 `# 公网IP 私网IP`\ -hn dsc `# 主机名前缀`\ -skp '/root/.ssh' `# SSH互信目录`\ -dcd /dev/sdb -vod /dev/sdc `# DCR磁盘 VOTE磁盘`\ -ard /dev/sde,/dev/sdf,/dev/sdg `# ARCH磁盘`\ -lod /dev/sdj `# REDO磁盘`\ -dad /dev/sdh,/dev/sdi `# DATA磁盘`\ -oid Y `# 仅初始化数据库`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N `# 跳过YUM源配置` ``` --- ## 八、SSHTrust 独立使用 ### 场景1:两节点SSH互信 ```bash # 在192.168.31.170上执行,建立与192.168.31.171的互信 ./SSHTrust -u root -p 'Dameng@123' -i 192.168.31.171 ``` ### 场景2:批量SSH互信 ```bash # 多节点批量互信 ./SSHTrust -u root -p 'Dameng@123' -i 192.168.31.170,192.168.31.171,192.168.31.172,192.168.31.173 ``` ### 场景3:指定端口SSH互信 ```bash ./SSHTrust -u root -p 'Dameng@123' -i 192.168.31.170,192.168.31.171 -P 2222 ``` ### 场景4:覆盖已有互信文件 ```bash # 重新建立互信(覆盖已有文件) ./SSHTrust -u root -p 'Dameng@123' -i 192.168.31.170,192.168.31.171 -f ``` --- ## 九、组合场景 ### 场景1:SSHTrust + DSC集群全流程 ```bash # Step 1: 建立SSH互信(所有DSC节点) ./SSHTrust -u root -p 'Dameng@123' -i 192.168.31.170,192.168.31.171 # Step 2: 安装DSC集群 ./DMShellInstall -di dm8_20250910_x86_centos7_64.iso \ -dpi 192.168.31.170,192.168.31.171 -dmi 192.168.31.170,192.168.31.171 `# 公网IP 私网IP`\ -dcd /dev/sdb -vod /dev/sdc -lod /dev/sdd -ard /dev/sde -dad /dev/sdf `# ARCH磁盘 DATA磁盘 DCR磁盘 REDO磁盘 VOTE磁盘`\ -hn dsc `# 主机名前缀`\ -skp '/root/.ssh' `# SSH互信目录`\ -d /dmdbms -dd /dmdata -ad /dmarch -bd /dmbak `# 备份目录 安装目录 归档目录 数据目录`\ -cs 1 -c 1 `# 大小写敏感 字符集`\ -iso N -mtp Y `# 多路径聚合 跳过YUM源配置` ``` --- ## 十、使用技巧 ### 参数速查 ```bash # 查看完整参数列表 ./DMShellInstall -h # 查看服务信息(需安装后使用,指定安装目录) ./DMShellInstall -gdv Y -d /dmdbms ``` ### 日志审计 脚本会自动记录审计日志(默认路径:`/var/log/dm_shell_install/`),每次执行的内容都会被记录。 ### safe-rm 安全防护 脚本会自动部署 safe-rm 保护机制,防止误删关键目录。如需关闭: ```bash # 编辑以下文件,删除 alias rm 配置 vi /etc/profile.d/rm_protect.sh vi /root/.bashrc vi /home/dmdba/.bashrc # 取消当前终端别名 unalias rm ``` --- ## 注意事项 1. **运行用户**:root 或者拥有 sudo nopasswd 权限用户执行 2. **ISO文件**:`-di` 参数指定的ISO文件需与脚本放在同一目录下 3. **密码要求**:`-dp`(dmdba密码)是必填参数,所有密码需满足复杂度要求 4. **磁盘格式**:DSC模式的磁盘参数使用设备绝对路径,如 `/dev/sdb`;多路径设备只需写名称(如 `mpatha`),配合 `-mtp Y` 参数使用 5. **SSH互信**:若节点间已建立 SSH 互信,可使用 `-skp` 指定互信目录(如 `/root/.ssh`),无需提供 root 密码 6. **版本适配**:脚本同时支持 DM8 和 DM9 版本安装 7. **操作系统**:支持 CentOS 6/7/8、Red Hat 6/7/8、麒麟、UOS 等主流 Linux 发行版 8. **备份策略**:每次安装时,自动备份已有配置文件(追加时间戳后缀) 9. **主机名**:`-hn` 自动添加数字后缀(如 `dw01, dw02...`),DataWatch 使用 `dw`,DSC 使用 `dsc` 10. **分段执行**:`-m Y` 仅配OS、`-ud Y` 仅装软件、`-oid Y` 仅初始化数据库 --- ## 更新历史 | 日期 | 版本/内容 | |------|-----------| | 2022/11/03 | 创建 DMShellInstall 脚本 | | 2022/11/12 | 补充功能,优化脚本输出 | | 2022/11/13 | 补充功能,增加传参判断 | | 2022/11/20 | 修复BUG,增加参数 | | 2022/11/22 | 增加数据守护模式安装1主1备 | | 2022/11/23 | 增加数据守护1主2备/3备 | | 2022/11/25 | 增加数据守护支持1主8备 | | 2022/11/26 | 兼容 Linux 6 版本 | | 2022/12/12 | 增加 dsc 部署功能 | | 2022/12/13 | 增加 dsc 多链路聚合磁盘部署 | | 2022/12/15 | 增加 dsc 自定义db_name和ep_name | | 2022/12/17 | 优化 dsc 脚本参数和逻辑 | | 2022/12/21 | 内置最新达梦数据库优化脚本,新增 `-sm` --sort_mode 参数 | | 2022/12/23 | 适配复杂密码(除 `&` `'` `"` `()` 四种字符外,可输入任意字符) | | 2022/12/28 | 适配单链路单盘多分区、聚合链路单盘多分区部署DSC(仅Linux 7+) | | 2023/01/02 | 删除 `-dhn` / `--wc_hostname` 参数,保留 `-hn` / `--hostname`;集群时为主机名前缀(如 `-hn db` → `db01,db02…`) | | 2023/01/11 | 增加DSC部署本地归档模式、本地归档与ASM归档混合模式 | | 2023/01/12 | 更新 AutoParaAdj3.1_20230106.sql 优化脚本 | | 2023/04/15 | 重写所有方法函数,更新参数自动优化脚本为 AutoParaAdj3.5_dm8 | | 2023/04/19 | 重写 create_lvm.sh,修改 create_parted.sh | | 2023/04/26 | 实现数据守护 INSTANCE_NAME 自定义 | | 2023/05/04 | 优化输出日志函数 | | 2023/05/20 | 添加指定服务器SSH端口 | | 2023/05/29 | 添加 `-cm`、`-bmp` 参数 | | 2023/05/31 | 添加 `-dmp` 参数 | | 2023/06/12 | 检测服务器是否已安装数据库,已安装则跳过,未安装则安装 | | 2023/10/13 | 新增脚本输入参数命令 | | 2024/04/16 | 删除 length_in_char 参数;新增ASM镜像方式部署DSC集群及相应参数 | | 2024/04/19 | 新增数据守护异步备库部署及相应参数 | | 2024/04/25 | 新增 `-lci` 参数,DSC部署时添加第三方确认IP地址 | | 2024/07/10 | 修复创建 core_dir 目录BUG | | 2024/10/15 | 优化数据守护参数,修改兼容Oracle部分参数 | | 2024/11/03 | 新增同步备库,增加部署数据守护参数 | | 2025/01/03 | **新增**:密码策略,禁止使用默认密码;**优化**:禁止OS认证登录数据库,安装完成后提示择机重启服务器 | | 2025/05/15 | **新增**:部署Raft主备集群功能;支持部署DM9数据库;支持达梦9配置大页内存 | | 2025/07/30 | **新增**:`-ipn` 参数(是否ping其他节点)、`-rpn` 参数(自定义redo日志后缀名);增加部署报告生成(支持单机/DataWatch/Raft,暂不支持DSC) | | 2025/10/21 | **新增**:DSC集群适配nvme共享盘 | | 2026/02/06 | V4.9 **新增**:`-no` 参数(关闭NUMA,默认N) | | 2026/06/08 | **新增**:`validate_ports` 端口校验函数,首节点校验端口重复值,所有节点校验端口占用;冲突/占用则脚本退出。
**优化**:sysctl.conf 和 limits.conf 完全遵循《达梦数据库项目上线规范 V4.4.pdf》标准;操作系统ASM磁盘配置逻辑(识别、权限、挂载);dsc_dmdcr_cfg 函数移除eval动态执行关联数组;start_database 函数(数据守护模式注册实例服务并以MOUNT启动);db_startup 函数(启动失败则脚本退出)。
**修复**:install_dmdb 函数BUG(软件安装失败自动退出)。
**替换**:数据库性能优化脚本为 AutoParaAdj5.6_dm8.sql | | 2026/06/15 | **新增**:目录保护功能 | | 2026/07/23 | **新增**:SSHTrust脚本;**优化**:配置ssh_trust函数 |