达梦数据库(DM8)自动化安装工具——开发者一行命令搞定本地环境,DBA 用配置文件完成生产集群部署。
- 单机静默安装:自动下载适配当前平台的 DM8 安装包,无需手动选版本
- SSH 远程安装:在控制机上配置一次,推送安装到目标服务器
- 主备集群部署:一条命令完成主备节点批量部署与配置同步,支持实时(REALTIME)/同步(SYNC)/异步(ASYNC)三种备库类型混合搭建
- 断点续传:安装中断后重跑自动从检查点恢复,不重复已完成步骤
- 配置驱动:TOML 配置文件,所有参数有明确默认值,最少填两行即可运行
- 配置校验:
dm_installer validate彩色分栏展示完整生效配置(含各 ini 文件最终参数值),不实际安装 - 兼容性:Linux 二进制采用 musl 静态链接,无 glibc 版本依赖,可在任意 Linux 发行版运行;同时提供 macOS Apple Silicon 原生二进制
纯 shell 脚本,无需 Rust,无需任何外部依赖,curl | bash 即可在本地拉起 DM8 环境:
curl -fsSL https://raw.githubusercontent.com/guangl/dm-database-installer/main/install.sh | bash所有安装参数均可通过同名环境变量覆盖,无需修改脚本:
# 自定义安装目录和端口
DM_INSTALL_PATH=/opt/dmdbms DM_PORT=5237 bash -c \
"$(curl -fsSL https://raw.githubusercontent.com/guangl/dm-database-installer/main/install.sh)"| 变量 | 默认值 | 说明 |
|---|---|---|
DM_INSTALL_PATH |
/home/dmdba/dmdbms |
程序安装目录 |
DM_DATA_PATH |
$DM_INSTALL_PATH/data |
数据文件目录 |
DM_PORT |
5236 |
监听端口 |
DM_INSTANCE |
DMSERVER |
实例名称 |
DM_DB_NAME |
DAMENG |
数据库名称 |
DM_PAGE_SIZE |
32 |
页大小(KB):4 / 8 / 16 / 32 |
DM_EXTENT_SIZE |
32 |
区段大小(页数):16 / 32 |
DM_CHARSET |
0 |
字符集:0=GB18030 1=UTF-8 2=EUC-KR |
DM_CASE_SENSITIVE |
Y |
SQL 标识符大小写敏感:Y / N |
仅支持 Linux(x86_64 / aarch64)。需要 root 权限或具有 sudo 权限的普通用户。安装完成后会输出随机生成的 SYSDBA / SYSAUDITOR 密码,请妥善保存。
适合需要自定义参数、SSH 远程部署、主备集群等精细化场景。
Linux / macOS
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/guangl/dm-database-installer/releases/latest/download/dm-database-installer-installer.sh | shcargo install dm-database-installergit clone https://github.com/guangl/dm-database-installer.git
cd dm-database-installer
cargo build --release
# 二进制位于 target/release/dm_installer# 1. 生成配置模板
dm_installer init standalone
# 2. 按需编辑(默认值通常够用)
# vim standalone.toml
# 3. 安装(自动下载安装包)
dm_installer installdm_installer init standalone在生成的 standalone.toml 中取消注释 [ssh_target] 部分:
[ssh_target]
host = "192.168.1.100"
ssh_port = 22
user = "root"
# password 不填则运行时提示输入dm_installer install# 1. 生成配置模板
dm_installer init dw
# 2. 编辑 dw.toml,填写节点 IP、SSH 凭证和备份路径
# vim dw.toml
# 3. 一键安装(支持断点续传)
dm_installer installdw.toml 最小示例:
# oguid 可省略,默认为当天 YYYYMMDD(如 20260623)
oguid = 20260623
[[nodes]]
role = "primary"
host = "192.168.1.10"
instance_name = "DM01"
[nodes.backup]
backup_path = "/data/dmbackup"
[nodes.ssh]
user = "root"
identity_file = "~/.ssh/id_rsa"
[[nodes]]
role = "standby"
host = "192.168.1.11"
instance_name = "DM02"
# sync_mode 可省略,默认 realtime(实时备库,加入 dmwatcher 全局守护组,参与自动切换)
# 也可设为 sync(同步备库)或 async(异步备库,需配套 arch_timer_name),二者均为本地守护,不参与自动切换
# standby 节点无需配置 [nodes.backup],备份作业由主库同步过来
[nodes.ssh]
user = "root"
identity_file = "~/.ssh/id_rsa"安装完成后:
dmserver/dmwatcher/dmmonitor均已注册为 systemd 服务,随系统自启;dmserver注册时按需以 Mount 模式启动- 监视器(
dmmonitor)默认运行在第一个 standby 节点,避免与 primary 共置;仲裁列表只包含 primary 与 realtime 备库,sync/async 备库不参与 - 备份作业仅在 primary 上创建,主库会自动将作业同步到备库
- 本地归档空间上限默认自动取磁盘总容量的 20%(探测失败时退回 20GB),可在
dw.toml的[arch]段显式覆盖
所有安装都依赖两个配置文件,由 dm_installer init 自动生成模板。
# 安装类型:standalone / dw / rws / dsc
type = "standalone"
# 本地安装包路径(不填则自动下载匹配当前平台的版本)
# installer_package = "/path/to/dm8_setup_rh7_64_ent_8.1.3.100.iso"
# 日志级别:trace / debug / info / warn / error
log_level = "info"[install]
install_path = "/home/dmdba/dmdbms"
data_path = "/home/dmdba/dmdbms/data"
# backup_path = "/home/dmdba/dmdbms/backup" # 数据库备份目录,强烈建议配置;未配置会在安装完成后提醒
[instance]
instance_name = "DMSERVER"
port = 5236
page_size = 32 # 页大小 KB:4 / 8 / 16 / 32
charset = 1 # 0=GB18030 1=UTF-8 2=EUC-KR
case_sensitive = true
extent_size = 32 # 区段大小(页数):16 / 32
# [ssh_target] # 省略则本地安装
# host = "192.168.1.100"
# ssh_port = 22
# user = "root"| 集群类型 | 命令 | 状态 |
|---|---|---|
| 主备(DW) | dm_installer init dw |
🚧 暂不支持(未测试) |
| 读写分离(RWS) | — | 🚧 开发中 |
| 共享存储(DSC) | — | 🚧 开发中 |
| 数据保护集群(DPC) | — | 🚧 暂不支持(未测试) |
说明:DW / DPC 的安装编排代码已实现,但尚未经过实际环境验证,暂不支持用于部署。
init dw/init dpc目前仅用于生成配置模板。
dm_installer install 安装(读取 config.toml 自动判断类型)
dm_installer install --package PATH 指定本地安装包路径(跳过下载)
dm_installer install --url URL 指定自定义下载链接
dm_installer validate [PATH] 验证配置文件语法与语义,不执行安装
dm_installer init standalone 生成单机配置模板
dm_installer init dw 生成主备(DW)集群配置模板(安装暂不支持,未测试)
dm_installer init rws 生成读写分离(RWS)集群配置模板(即将支持)
dm_installer init dsc 生成共享存储(DSC)集群配置模板(即将支持)
dm_installer init dpc 生成 DPC 分布式集群配置模板(安装暂不支持,未测试)
dm_installer self-update 更新 dm_installer 到最新版本
dm_installer completions <shell> 生成 shell 补全脚本(bash/zsh/fish/...),输出到 stdout
dm_installer -v / -vv install 输出 debug / trace 级别日志(也可用 RUST_LOG 环境变量覆盖)
dm_installer --help 查看帮助
| 平台 | 架构 | 备注 |
|---|---|---|
| Linux | x86_64 | musl 静态链接,无 glibc 依赖 |
| Linux | aarch64 | musl 静态链接,无 glibc 依赖 |
| macOS | Apple Silicon | 11.0+ |
cargo test # 运行单元测试
cargo clippy # Lint 检查
cargo run -- --help # 本地运行此仓库的最初需求(Phase 1 单机静默安装脚本)已基本完成。集群部署(主备 DW / DPC 等)的编排代码虽已存在,但尚未经过实际环境测试,暂不支持;读写分离(RWS)、共享存储(DSC)仍在开发中。这些功能视情况更新,不排除不再继续开发的可能。