一个基于 Dumpling 的多租户 TiDB 数据导出平台,支持将数据导出到 S3 兼容存储。
https://github.com/Vincenzo-Wang/TiDataExporter
功能特性
- 多租户架构 - 完整的租户隔离和配额管理
- 灵活导出 - 支持 CSV、SQL 格式,支持 Gzip/Snappy/Zstd 压缩
- S3 集成 - 直接上传到各种 S3 兼容存储(AWS S3、MinIO、阿里云 OSS 等)
- 高性能 - 基于 Dumpling 的 TiDB 数据导出
- 双重认证 - JWT + API Key/Secret 认证机制
- 异步任务 - 基于 Redis 的任务队列,支持优先级和自动重试
- 管理后台 - 现代化的 React 管理界面
- 监控审计 - 内置统计报表和审计日志
快速开始
环境要求
- Docker 20.10+
- Docker Compose 1.18.0+
- Dumpling(通过 TiUP 安装)
安装 Dumpling
# 使用 TiUP 安装
tiup install dumpling
# 确认安装路径
tiup list --installed | grep dumpling
一键部署
# 1. 克隆项目
git clone https://github.com/Vincenzo-Wang/TiDataExporter.git
cd TiDataExporter
# 2. 复制环境变量配置
cp .env.example .env
# 3. 修改配置(重要!)
vim .env
# 必须配置:
# - HOST_DUMPLING_PATH:Dumpling 可执行文件路径
# - JWT_SECRET:JWT 签名密钥(至少 32 字符)
# - AES_KEY:AES-256 加密密钥(必须 32 字节)
# 4. 一键启动
chmod +x deploy.sh
./deploy.sh start
# 5. 访问应用
# 前端:http://localhost
# 后端:http://localhost:8080
# 默认管理员:admin / admin123(首次登录后请立即修改!)
API 概览
管理端 API(JWT 认证)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/v1/admin/auth/login |
POST | 管理员登录 |
/api/v1/admin/tasks |
GET | 任务列表 |
/api/v1/admin/tenants |
GET/POST | 租户列表/创建 |
/api/v1/admin/tidb-configs |
GET/POST | TiDB 配置 |
/api/v1/admin/s3-configs |
GET/POST | S3 配置 |
/api/v1/admin/statistics/overview |
GET | 统计概览 |
开放 API(API Key/Secret 认证)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/v1/export/tasks |
POST | 创建导出任务 |
/api/v1/export/tasks/:id |
GET | 查询任务状态 |
/api/v1/export/tasks/:id/cancel |
POST | 取消任务 |
安全特性
- 数据加密 - 敏感数据使用 AES-256-GCM 加密存储
- 双重认证 - JWT Token + API Key/Secret 机制
- 防护措施 - SQL 注入防护、时序攻击防护
- 访问限制 - 令牌桶 + 滑动窗口限流算法
- 审计日志 - 完整的操作日志记录
- 配额管理 - 租户级别的并发和容量限制
技术栈
后端
- Go 1.25+ / Gin Framework
- MySQL 8.0
- Redis 7
- Dumpling (TiDB 数据导出工具)
前端
- React 18 + TypeScript
- Vite 构建工具
- Ant Design 5 组件库
- Zustand 状态管理
文档
参与贡献
欢迎参与贡献!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 提交 Pull Request
许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。