当前位置: 首页 > ORACLE > 正文

我们的文章会在微信公众号IT民工的龙马人生博客网站 ( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

摘要

数据库交付的难点从来不在“能不能装上”,而在于能否把 OS 基线、离线介质、权限与目录、单机/YAC 形态、主备扩展、YCM/YMP 组件 这些碎片化动作,收敛为一条可审计、可回放、可复用的流水线。

本文以介绍一个 Go 单二进制工具 yinstall:运行在控制端,通过 SSH 编排目标机安装步骤;支持步骤过滤;并内置“自动找包 + 必要时上传”的能力,让“一键安装”真正做到可落地。

1)为什么 DBA 需要“一键安装”:把交付闭环固化下来

生产安装现场往往具备三个特征:

  • 窗口短:上线前窗口很紧,任何手工差错都会放大成回滚风险
  • 环境碎:不同 OS(RHEL7/8、UOS、Kylin)、不同网段、不同权限模型、不同离线源
  • 链路复杂:单机、YAC、主备扩容、YCM/YMP 叠加部署,步骤依赖强

    DBA 理想的交付链路应该是:

    连通性 → OS 基线 → 软件包 → 配置生成 → 安装 → 创建/验收 → 产物留痕(日志/参数/版本)

    yinstall 的目标,就是把这条链路产品化。

2)yinstall 是什么:一个“可编排”的安装器,而不是脚本集合

yinstall 是一个 Go CLI,核心设计是步骤编排

  • 每个步骤都有 PreCheck / Action / PostCheck 三段,可控、可审计
  • 步骤过滤(精确裁剪执行范围):
    • -s/--include-steps:只跑指定步骤(支持范围)
    • --exclude-steps:排除指定步骤(优先级高于 include)
  • 控制端/目标端分离:控制端只需要 yinstall;目标端只需要能 SSH、能 sudo(默认 --sudo=true

    更关键的是,它具备“工程化细节”:
  • 软件包自动发现:可不显式指定安装包路径;工具会在目标端 --remote-software-dir(默认 /data/yashan/soft)、目标端 $HOME、控制端 --local-software-dirs(默认 ./software,./pkg,并在存在时追加 ~/Downloads/yashan)中自动寻找“最新版本”介质,必要时上传到目标端使用。

3)快速上手:先看步骤目录(避免“上来就改系统”)

建议先列出步骤目录,确认会做哪些变更:

./yinstall os  -l
./yinstall db  -l
./yinstall ycm -l
./yinstall ymp -l
./yinstall clean -l

4)一键安装命令(可复制即用):单机 DB / YMP / YCM

本节只给命令行模式(不提供脚本拼接器),适合直接复制执行或固化到你自己的发布流程里。

4.1 单机安装数据库(yinstall db

4.1.1 典型命令(带 OS 基线)

远程安装

./yinstall db \
  -t 10.10.10.150 \
  -u root \
  -p 22 \
  --ssh-password 'your-ssh-password' 

本地安装:

./yinstall db \
  -t 10.10.10.150 

4.1.2 典型命令(跳过 OS 基线,仅做 DB 安装)

适用于:你已用 yinstall os 或人工方式完成 OS 基线;希望 DB 部分可重复执行。

./yinstall db \
  -t 10.10.10.150 \
  -u root \
  -p 22 \
  --ssh-password 'your-ssh-password' \
  --skip-os=true 

4.2 安装 YMP(yinstall ymp

说明:yinstall ymp 的多个介质参数(如 --ymp-package)允许留空,由步骤在目标端/本地目录中自动搜寻最新版本。

4.2.1 典型命令(默认跳过 OS 基线)

远程安装

./yinstall ymp \
  -t 10.10.10.150 \
  -u root \
  -p 22 \
  --ssh-password 'your-ssh-password' 

本地安装

./yinstall ymp \
  -t 10.10.10.150 

4.2.2 指定介质(不走自动搜包)

自动在对应目录中搜索指定的介质

./yinstall ymp \
  -t 10.10.10.150 \
  -u root \
  -p 22 \
  --ssh-password 'your-ssh-password' \
  --skip-os=true \
  --ymp-package "yashan-migrate-platform-23.5.3.2-linux-x86_64.zip" \
  --ymp-instantclient-basic "instantclient-basic-linux.x64-19.29.0.0.0dbru.zip" \
  --ymp-db-package "yashandb-23.4.7.100-linux-x86_64.tar.gz" \
  --ymp-user ymp \
  --ymp-user-password 'aaBB11@@33$$' \
  --ymp-install-dir /opt/ymp \
  --ymp-port 8090

4.3 安装 YCM(yinstall ycm

4.3.1 sqlite3 后端(默认)

./yinstall ycm \
  -t 10.10.10.150 \
  -u root \
  -p 22 \
  --ssh-password 'your-ssh-password' 

4.3.2 YashanDB 后端

最简单本地安装

./yinstall ycm \
  -t 10.10.10.150

自定义远程安装

./yinstall ycm \
  -t 10.10.10.150 \
  -u root \
  -p 22 \
  --ssh-password 'your-ssh-password' \
  --remote-software-dir /data/yashan/soft \
  --local-software-dirs ./software,./pkg \
  --skip-os=true \
  --ycm-db-driver yashandb \
  --ycm-db-url "10.10.10.150:1688" \
  --ycm-db-admin-user yasman \
  --ycm-db-admin-password 'your-yasman-password' \
  --ycm-install-dir /opt \
  --ycm-port 9060

5)参数详解(按真实 CLI 分组)

本节按参数归类解释含义,便于你把“一键命令”标准化成发布模板。

5.1 全局参数(所有子命令通用)

5.1.1 目标与 SSH

  • -t, --targets:目标主机列表(逗号分隔)。不指定时会走本地执行(localhost)。
  • -u, --ssh-user:SSH 用户,默认 root
  • -p, --ssh-port:SSH 端口,默认 22
  • --yasboot-ssh-port:传给 yasboot 的 SSH 端口;默认与 --ssh-port 一致。
  • --ssh-auth:认证方式,passwordkey
  • --ssh-password:SSH 密码(--ssh-auth=password 时使用)。
  • --ssh-key-path:私钥路径(--ssh-auth=key 时使用)。

5.1.2 介质与日志

  • --remote-software-dir:目标机的软件目录(默认 /data/yashan/soft)。用于自动搜包(远端优先)。
  • --local-software-dirs:控制端本地软件目录列表(逗号分隔)。用于自动搜包与上传。
  • --log-dir:日志目录(默认 logs)。每次运行会生成 session/debug 两类日志。

5.1.3 步骤过滤与强制执行(高级用法)

  • -l, --list-steps:打印该子命令的步骤目录并退出。
  • -s, --include-steps:仅执行指定步骤(支持范围,如 E-011- 表示从 E-011 到最后)。
  • --exclude-steps:跳过指定步骤(与 include 冲突时,exclude 优先生效)。
  • -f, --force:强制执行所有步骤(跳过部分前置保护逻辑;危险)。
  • --force-steps:只强制指定步骤。
  • --force-delete-user:允许强制执行时删除并重建已存在用户/组(危险,生产慎用)。

5.2 yinstall db(数据库安装)

5.2.1 OS 基线开关

  • --skip-os:是否跳过 OS 基线准备。false 表示会做 OS 基线;true 表示仅做连通性检查 + DB 安装部分。
  • --os-yum-mode:依赖安装时 YUM/DNF 模式:
    • none:使用系统现有 repo(常见:客户已配好内网源)
    • local-iso:使用 ISO 挂载配置本地源(适合纯离线环境)
    • online:使用互联网源(生产一般不建议)
  • --os-iso-devicelocal-iso 时使用的 ISO 设备/路径(默认 /dev/cdrom,也可给 ISO 文件名/路径)。

5.2.2 DB 关键参数

  • --db-port:数据库起始端口(默认 1688)。
  • --db-sys-password:数据库 SYS 密码(创建实例用)。
  • --db-character-set:字符集(如 utf8gb18030 等,大小写不敏感)。
  • --db-memory-percent:内存百分比(0-100),用于生成推荐配置。
  • --os-user:数据库产品用户(默认 yashan)。
  • --os-user-password:产品用户密码(远程场景下 yasboot 生成配置会用到)。

5.3 yinstall ymp(YMP 安装)

  • --skip-os:是否跳过 OS 基线准备(默认 true,只做最小连通性检查 + YMP 安装相关步骤)。
  • --ymp-user:YMP 系统用户(默认 ymp)。
  • --ymp-user-password:YMP 用户密码(默认 aaBB11@@33$$)。
  • --ymp-install-dir:安装目录(默认 /opt/ymp;若端口不是 8090 且未显式指定,工具可能自动拼接端口后缀)。
  • --ymp-port:YMP Web 端口(默认 8090)。其他端口自动计算:db=port+1,yasom=port+3,yasagent=port+4。
  • --ymp-db-mode:YMP 内置库模式:yashandb(默认)或 mysql

5.3.1 介质参数(可选,支持自动搜包)

  • --ymp-package:YMP zip 包路径(可选,未指定则自动找最新)。
  • --ymp-instantclient-basic:Oracle instantclient basic zip(可选,未指定则自动找最新)。
  • --ymp-instantclient-sqlplus:Oracle instantclient sqlplus zip(可选)。
  • --ymp-db-package:YashanDB 安装包(供内置库使用,可选,未指定则自动找最新)。

5.3.2 JDK 参数

  • --ymp-jdk-enable:是否安装 JDK(默认 false:只校验)。
  • --ymp-jdk-version:期望 JDK 版本(8/11/17)。
  • --ymp-jdk-package:JDK 安装包路径(当 --ymp-jdk-enable=true 时必填)。

5.4 yinstall ycm(YCM 安装)

  • --skip-os:是否跳过 OS 基线准备(默认 true)。
  • --ycm-install-dir:安装目录(默认 /opt)。
  • --ycm-deploy-file:deploy.yml 路径(默认 <ycm-install-dir>/ycm/etc/deploy.yml)。
  • --ycm-port:YCM Web 端口(默认 9060)。
  • --ycm-db-driver:后端数据库:sqlite3(默认)或 yashandb
  • --ycm-db-url:YashanDB 连接串(当 --ycm-db-driver=yashandb 时必填)。
  • --ycm-db-admin-user:YashanDB 管理用户名(默认 yasman)。
  • --ycm-db-admin-password:YashanDB 管理密码(当 --ycm-db-driver=yashandb 时必填)。

6)清理(yinstall clean):什么时候用、怎么用、风险是什么

yinstall clean 用于清理已部署的组件(DB/YCM/YMP/standby 等)。它是“回滚/重装”场景的最后手段:清理往往意味着删除目录、停止服务、移除用户/环境文件,需要按范围精确执行。

6.1 先看清理步骤目录

./yinstall clean -l

6.2 清理 YMP(示例)

说明:具体 clean 参数以 ./yinstall clean --help 为准;常见做法是指定清理类型与安装目录(例如 YMP home)。

./yinstall clean \
  -t 10.10.10.150 \
  -u root \
  -p 22 \
  --ssh-password 'your-ssh-password' \
  --type ymp \
  --ymp-home /opt/ymp

6.3 清理 DB(示例)

说明:DB 清理默认类型就是 db,也可以显式写 --type db。请确保 --yasdb-home/--yasdb-data/--cluster-name 与安装时一致。

./yinstall clean \
  -t 10.10.10.150 \
  -u root \
  -p 22 \
  --ssh-password 'your-ssh-password' \
  --type db \
  --yasdb-home /data/yashan/yasdb_home \
  --yasdb-data /data/yashan/yasdb_data \
  --yasdb-log /data/yashan/log \
  --cluster-name yashandb \
  --os-user yashan

YashanDB一键安装工具,支持DB、YCM、YMP、新增备库:等您坐沙发呢!

发表评论

gravatar

? razz sad evil ! smile oops grin eek shock ??? cool lol mad twisted roll wink idea arrow neutral cry mrgreen

快捷键:Ctrl+Enter