Files
CN_Tool/system-ops/dbms/README.md
yexb 36962221f5 feat(dbms): 增加数据库备份任务停止重启功能和MySQL支持
- 添加了备份任务停止和重启接口及实现
- 实现了对MySQL数据库的支持,包括数据库名配置
- 重构了数据库连接和备份操作的SPI架构
- 优化了备份文件删除逻辑,支持目录递归删除
- 增加了连接名称唯一性校验
- 完善了备份任务状态管理和错误处理机制
- 更新了数据库连接参数验证逻辑
2026-06-09 13:14:43 +08:00

4.2 KiB
Raw Blame History

dbms 模块说明

模块定位

dbmssystem-ops 下的数据库运维模块,当前支持 Oracle、MySQL 两类数据库运维能力,其中 Oracle 支持 DATA_PUMPJDBC_EXPORTMySQL 当前支持 JDBC_EXPORT

当前接口

  • GET /database/overview
    • 查询数据库运维概览信息。
  • POST /database/connections/list
    • 查询数据库连接配置。
  • POST /database/connections/add
    • 新增 Oracle 数据库连接配置。
  • POST /database/connections/update
    • 修改 Oracle 数据库连接配置。
  • POST /database/connections/delete
    • 删除数据库连接配置。
  • POST /database/connections/test
    • 测试 Oracle 数据库连接。
  • POST /database/connections/tables
    • 查询 Oracle 表列表。
  • POST /database/backups/create
    • 创建备份任务,默认使用 DATA_PUMP,可选 JDBC_EXPORT
  • POST /database/backups/tasks/list
    • 查询备份任务列表。
  • GET /database/backups/tasks/status
    • 查询任务状态。
  • POST /database/backups/files/list
    • 查询备份文件记录。
  • POST /database/restores/create
    • 创建恢复任务。
  • GET /database/restores/tasks/status
    • 查询恢复任务状态。
  • POST /database/delete/backup-file
    • 删除备份文件,要求 confirmText=确认删除
  • POST /database/delete/task
    • 删除任务记录,要求 confirmText=确认删除

数据脚本

  • src/main/resources/sql/system-ops/system-ops-init.sql
    • 系统运维菜单初始化脚本。
  • src/main/resources/sql/system-ops/dbms-database-ops-init.sql
    • 数据库运维连接、任务、备份文件和恢复记录表结构。

配置项

建议通过环境配置覆盖:

dbms:
  backup:
    storage-path: D:/dbms-backup
    default-max-file-size-mb: 512
    mysql-fetch-size: 1000
  tools:
    expdp-path:
    impdp-path:

说明:

  • backup.storage-path
    • JDBC_EXPORT 生成的 CSV 和元数据 JSON 的受管根目录。
  • backup.default-max-file-size-mb
    • MySQL JDBC_EXPORT 默认分片大小,前端可通过 maxFileSizeMb 覆盖,默认 512MB。
  • backup.mysql-fetch-size
    • MySQL JDBC_EXPORT 流式读取批量大小,默认 1000。
  • tools.expdp-pathtools.impdp-path
    • Oracle Data Pump 工具路径;为空时尝试走系统 PATH

当前行为

  • 当前能力矩阵如下:
数据库类型 连接测试 表列表 JDBC_EXPORT DATA_PUMP
ORACLE 支持 支持 支持 支持
MYSQL 支持 支持 支持 不支持
  • 备份和恢复只允许基于已保存且连接可用的连接配置发起。
  • 新增连接前的测试接口仍可传 temporaryPassword 做临时连通性测试。
  • 备份任务异步执行,只有实际文件生成成功后才会写入 dbms_backup_file 记录。
  • JDBC_EXPORT 当前会生成两类文件:
  • MySQL JDBC_EXPORT 会按任务号创建独立备份目录,每张表独立 CSV默认按 512MB 分片:
    • 数据分片文件:<table>_part001_yyyyMMdd_<taskNo>.csv
    • 元数据文件:mysql_jdbc_export_metadata_yyyyMMdd_<taskNo>.json
  • 备份任务支持停止和重新开始:
    • POST /database/backups/tasks/stop
    • POST /database/backups/tasks/restart
  • JDBC_EXPORT 恢复依赖元数据文件,不再允许缺少元数据直接发起恢复。
  • 删除备份文件时,会校验目标路径必须位于受管备份目录下,避免误删非备份文件。

当前限制

  • DATA_PUMP 仍依赖部署机器可执行 expdpimpdp,并且 Oracle 侧已准备好 directory 对象和权限。
  • 当前代码要求 DATA_PUMP 连接配置里补齐可管理的 directoryPath,否则虽然 Oracle 端可能已导出成功,后端无法安全管理文件记录与删除。
  • JDBC_EXPORT 恢复当前仅覆盖表数据,不承诺恢复索引、约束、触发器、序列、存储过程、权限等数据库对象。
  • TIME_RANGE 模式当前只在 JDBC_EXPORT 场景真正参与查询过滤;DATA_PUMP 尚未接入 Oracle QUERY 参数。
  • MySQL JDBC_EXPORT 已实现按大小分片Oracle JDBC_EXPORT 仍沿用原单文件导出路径。
  • 本轮仅完成代码路径和文档收口,未执行 mvn 编译、测试或真实库联调。