# DBAConfigFactory **Repository Path**: wygd/dbaconfig-factory ## Basic Information - **Project Name**: DBAConfigFactory - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-18 - **Last Updated**: 2026-05-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DBA ConfigFactory OGG (Oracle GoldenGate) 配置文件快速生成工具,支持交互式 CLI、批量模式、Web UI 三种模式。 ## 功能 ### 数据库支持 | 数据库 | 部署准备 | MGR | Extract | Pump | Defgen | Replicat | ggsci 命令 | |--------|---------|-----|---------|------|--------|----------|------------| | Oracle | 归档/补充日志/OGG用户/心跳表/DDL/ADG | ✓ | ✓ | ✓ | ✓ | ✓ | extract+pump+defgen+replicat | | MySQL | 前置检查/OGG用户/心跳表 | ✓ | ✓ | ✓ | ✓ | — | extract+pump+defgen | | SQL Server | OGG登录/心跳表/日志收缩 | ✓ | ✓ | ✓ | ✓ | — | extract+pump+defgen | | TiDB | — | — | — | — | — | ✓ | replicat | | PostgreSQL | 待完善 | 待完善 | 待完善 | 待完善 | 待完善 | — | — | ### TiDB 部署工具 集群拓扑 YAML(含 TiFlash 内存)、HAProxy 负载均衡、Keepalive 高可用(多节点循环生成)、TiKV 扩容、K8S SVC、初始化 SQL ### 通用工具 Defgen 上传脚本、Map Target 生成、Oracle 内存/OS 参数、trail 日志清理、SQL Server 日志收缩 ### Web UI Bootstrap 5 深蓝渐变风格,支持: - 场景浏览 / 搜索 / 参数配置 / 一键生成 ZIP 下载 - 公共环境配置面板(跨场景复用参数) - 条件参数联动(ENV_TYPE 切换单机/RAC 等) - 工具下载:目录浏览、面包屑导航、网格/列表视图切换、多选批量下载(ZIP 打包) - 用户鉴权:登录页参照 CacheCDCUI 分屏风格 ## 构建 ```bash mvn clean package -DskipTests ``` 生成 `target/oggconfigfactory-1.0-SNAPSHOT.jar`(~6.8M,含所有依赖,兼容 Java 8~23)。 ## 使用 ### Web UI 模式 ```bash # 无鉴权启动 java -jar target/oggconfigfactory-1.0-SNAPSHOT.jar --web # 指定端口 + 工具目录 java -jar target/oggconfigfactory-1.0-SNAPSHOT.jar --web --port 9090 --toolsdir /path/to/tools # 启用鉴权 java -jar target/oggconfigfactory-1.0-SNAPSHOT.jar --web --username admin --password mypass123 --toolsdir /path/to/tools ``` 启动后访问 `http://localhost:8080`。 | CLI 参数 | 说明 | 默认值 | |----------|------|--------| | `--web` | 启动 Web UI 模式 | — | | `--port` | HTTP 端口 | 8080 | | `--toolsdir` | 工具下载目录 | 无(不启用工具下载) | | `--username` | 鉴权用户名 | 无(不启用鉴权) | | `--password` | 鉴权密码 | 无(不启用鉴权) | ### 交互模式(CLI 菜单) ```bash java -jar target/oggconfigfactory-1.0-SNAPSHOT.jar ``` 按菜单逐级选择数据库类型和功能,根据提示输入参数即可生成配置文件。 ### 批量模式 ```bash # 列出所有可用场景 java -jar oggconfigfactory.jar --list-scenarios # 导出场景参数模板 java -jar oggconfigfactory.jar --export oracle-mgr > params.properties # 编辑 params.properties 填入实际值后批量生成 java -jar oggconfigfactory.jar --batch oracle-mgr params.properties # 一键生成 Oracle 源端全套配置 java -jar oggconfigfactory.jar --export oracle-source > oracle.properties # 编辑 oracle.properties... java -jar oggconfigfactory.jar --batch oracle-source oracle.properties ``` ## 模板系统 所有配置文件由模板驱动,模板位于 `src/main/resources/templates/`,按数据库类型分目录。 ### 模板语法 | 语法 | 用途 | |------|------| | `{{NAME}}` | 变量替换 | | `{{#IF expr}}...{{/IF}}` | 条件包含 | | `{{#IF expr}}...{{#ELSE}}...{{/IF}}` | 条件分支 | | `{{#EACH LIST}}...{{/EACH}}` | 循环展开 | > **注意**: `{{#IF}}` 和 `{{#EACH}}` 必须在行首使用,不支持行内条件。行内条件请预计算为独立变量(如 `VERSION_SUFFIX`)。 ### 模板文件格式 每个模板文件以 `#` 注释和 `@param` 元数据开头: ``` # ============================================================ # Oracle OGG Manager 配置文件 (mgr.prm) # ============================================================ # @param MAIN_PORT int "请输入OGG主端口号:" 7809 # @param IS_WINDOWS bool "是否为Windows环境?" false PORT {{MAIN_PORT}} ``` `@param` 格式:`@param <名称> <类型> "<提示语>" <默认值> [{约束JSON}]` 类型:`int` / `string` / `bool` / `list` 约束 JSON(可选):`condition`(条件表达式)、`choices`(可选值列表)、`itemType`、`itemFields` ### 修改配置 直接编辑对应模板即可改变输出格式,无需重新编译。模板在打包时自动包含在 JAR 中。 ## 项目结构 ``` src/main/java/oggconfigfactory/ ├── OggConfigFactory.java # CLI 入口 + 菜单 + 批量模式 + computeDerivedValues ├── WebServer.java # 内嵌 HTTP 服务(API + 鉴权 + 静态文件) ├── OggCommonTools.java # 公共工具(交互、文件、命令执行) ├── TemplateEngine.java # 模板引擎(IF/EACH/变量替换) ├── ParamDef.java # 参数定义模型 ├── Scenario.java # 场景模型 ├── ScenarioRegistry.java # 场景注册中心 ├── GenerateAllConfigsTest.java # 全场景自动化测试 ├── BatchCollector.java # 批量参数收集(properties 文件) ├── InteractiveCollector.java # 交互式参数收集 ├── ParamExporter.java # 参数模板导出 ├── OggSourceOracleDatabaseDoWork.java # Oracle 部署准备(交互式) ├── OggSourceOracleDoScriptsGen.java # Oracle OGG 配置生成 ├── OggSourceMySQLDatabaseDoWork.java # MySQL 部署准备(交互式) ├── OggSourceMySQLDoScriptsGen.java # MySQL OGG 配置生成 ├── OggSourceSQLServerDatabaseDoWork.java ├── OggSourceSQLServerDoScriptsGen.java ├── OggSourcePostgreSQLDatabaseDoWork.java # 待实现 ├── OggSourcePostgreSQLDoScriptsGen.java # 待实现 ├── OggTargetDoScriptsGen.java # 目标端 Replicat 配置 ├── OggTargetOracleDatabaseOSDoWork.java ├── TiDBTargetDatabaseDoWork.java # TiDB 部署工具 ├── ScpUploadUtil.java # SFTP 上传 └── AesEncryptionUtil.java # AES 加密 src/main/resources/ ├── templates/ │ ├── common/ (defgen, deletrail×2, defgen_upload×2, ggsci_defgen) │ ├── oracle/ (mgr, extract, pump, replicat, db_prep, ggsci_extract, ggsci_pump, ggsci_replicat, ggsci_defgen) │ ├── mysql/ (mgr, extract, db_prep, ggsci_extract, ggsci_pump, ggsci_defgen) │ ├── sqlserver/(mgr, extract, db_prep, shrink_log×2, ggsci_extract, ggsci_pump, ggsci_defgen) │ ├── tidb/ (topology, replicat, haproxy, tikv_expand, tidbsvc, keepalive×2, ggsci_replicat) │ └── postgresql/ ├── tools/ (DLL, JAR, SQL, shell 等静态资源) └── web/ (Web UI 前端) ├── index.html ├── login.html ├── css/style.css └── js/main.js ``` ## 运行测试 ```bash java -cp target/classes oggconfigfactory.GenerateAllConfigsTest # 输出: test-output/ 下按场景分类的所有生成文件 # 当前覆盖 22 个场景,全部通过 ```