# 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函数 |