- 添加了备份任务停止和重启接口及实现 - 实现了对MySQL数据库的支持,包括数据库名配置 - 重构了数据库连接和备份操作的SPI架构 - 优化了备份文件删除逻辑,支持目录递归删除 - 增加了连接名称唯一性校验 - 完善了备份任务状态管理和错误处理机制 - 更新了数据库连接参数验证逻辑
dbms 模块说明
模块定位
dbms 是 system-ops 下的数据库运维模块,当前支持 Oracle、MySQL 两类数据库运维能力,其中 Oracle 支持 DATA_PUMP、JDBC_EXPORT,MySQL 当前支持 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-pathJDBC_EXPORT生成的 CSV 和元数据 JSON 的受管根目录。
backup.default-max-file-size-mb- MySQL
JDBC_EXPORT默认分片大小,前端可通过maxFileSizeMb覆盖,默认 512MB。
- MySQL
backup.mysql-fetch-size- MySQL
JDBC_EXPORT流式读取批量大小,默认 1000。
- MySQL
tools.expdp-path、tools.impdp-path- Oracle Data Pump 工具路径;为空时尝试走系统
PATH。
- Oracle Data Pump 工具路径;为空时尝试走系统
当前行为
- 当前能力矩阵如下:
| 数据库类型 | 连接测试 | 表列表 | 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/stopPOST /database/backups/tasks/restart
JDBC_EXPORT恢复依赖元数据文件,不再允许缺少元数据直接发起恢复。- 删除备份文件时,会校验目标路径必须位于受管备份目录下,避免误删非备份文件。
当前限制
DATA_PUMP仍依赖部署机器可执行expdp、impdp,并且 Oracle 侧已准备好directory对象和权限。- 当前代码要求
DATA_PUMP连接配置里补齐可管理的directoryPath,否则虽然 Oracle 端可能已导出成功,后端无法安全管理文件记录与删除。 JDBC_EXPORT恢复当前仅覆盖表数据,不承诺恢复索引、约束、触发器、序列、存储过程、权限等数据库对象。TIME_RANGE模式当前只在JDBC_EXPORT场景真正参与查询过滤;DATA_PUMP尚未接入 OracleQUERY参数。- MySQL
JDBC_EXPORT已实现按大小分片;OracleJDBC_EXPORT仍沿用原单文件导出路径。 - 本轮仅完成代码路径和文档收口,未执行
mvn编译、测试或真实库联调。