# go-sql-bak-st **Repository Path**: liubwlinux/go-sql-bak-st ## Basic Information - **Project Name**: go-sql-bak-st - **Description**: go-sql-bak - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-08 - **Last Updated**: 2026-02-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # go-sql-bak-st 一个基于 Go 驱动直出 SQL 的数据库备份工具,支持多数据库类型、定时任务、Web 管理台与压缩存储。 ## 特性 - Go 驱动直出(不依赖 `mysqldump`) - 多数据库支持:MySQL / OceanBase / PostgreSQL / OpenGauss / SQL Server 等 - 定时任务(Cron)与运行状态追踪 - Web 管理台:任务、备份、配置、日志 - 备份压缩(gzip/zip)与保留策略 - 下载接口防路径穿越 ## 快速开始 ### 1) 构建 ```bash go build -o backup ./cmd/backup/main.go ``` ### 2) 启动 ```bash ./backup --config-dir configs ``` 默认 Web 管理台地址:`http://localhost:5173` ## 配置示例 > 请勿在文档中写入真实账号密码,使用占位符。 ```json { "web": { "enabled": true, "addr": ":5173", "readTimeoutSec": 15, "writeTimeoutSec": 30, "maxBodyBytes": 2097152 }, "storage": { "rootDir": "backups", "retentionDays": 7, "compression": "gzip" }, "log": { "dir": "logs", "level": "info" }, "tasks": [ { "id": "task-1", "name": "mysql-backup", "enabled": true, "databaseType": "mysql", "dsn": ":@tcp(127.0.0.1:3306)/", "databases": ["example_db"], "schemas": [], "discover": false, "excludeDatabases": [], "schedule": "0 0 * * *", "startImmediate": true, "retry": { "max": 2, "intervalSeconds": 60 }, "compression": "gzip", "outputDir": "" } ] } ``` ## Web 管理台 - 仪表盘:任务健康、近 7 天备份趋势、容量留存 - 任务:列表与手动运行 - 备份:历史记录与下载 - 配置:结构化看板 + 高级 JSON - 日志:实时尾部输出 ## 目录结构 - `cmd/backup` 应用入口 - `internal/backup` 备份引擎 - `internal/database` 驱动实现(直出 SQL) - `internal/config` 配置加载与校验 - `internal/web` Web 管理台 - `internal/storage` 备份清理与 manifest ## 相关文档 - `PRD.md` - `TECH_DESIGN.md` - `UI_UX_EXT.md` - `OPS.md` ## 注意事项 - 不使用外部备份工具(如 `mysqldump`) - 导出逻辑通过 `SHOW CREATE TABLE` + `SELECT *` 生成 SQL - Web 下载接口严格限制在 `backupRoot` 内