8147acd0c07ad9d30b86025ef7c95fc087f70809
DataKeep
一个运行在备份服务器上的轻量级容灾副本同步系统(Pull 模式)。
核心设计
- 物理隔离:备份服务器运行独立的数据库实例(MySQL/Redis/MinIO),与生产环境物理隔离。
- 主动同步:由备份服务器主动连接生产环境拉取数据,即使生产环境被攻击,备份数据依然安全。
- 多实例支持:备份机可以同时为多个不同的生产服务提供备份,每个服务在备份机拥有独立的容器组。
核心能力
- MySQL 同步:支持自动建库与表结构变更同步。通过全量逻辑覆盖模式,确保备份库与生产库结构完全一致。
- Redis 同步:采用键级同步(SCAN/DUMP/RESTORE),同步前自动
FLUSHALL备份库,确保数据副本纯净。 - MinIO 同步:对象级增量镜像(只增不删策略),防止生产端误删导致的灾难性后果。
- 小时级定时:前端支持 0-23 时精确配置,支持手动一键触发。
快速启动 (Docker Compose)
这是在 Ubuntu 20.04 生产环境中最推荐的部署方式。
- 执行启动命令:
docker compose up -d --build - 访问系统:
在浏览器打开
http://<服务器IP>:12000
本地启动指南 (非 Docker 开发环境)
1. 后端 (FastAPI)
- 进入
backend目录,创建虚拟环境并激活:python -m venv .venv source .venv/bin/activate # Windows 使用 .\venv\Scripts\activate - 安装依赖:
pip install -r requirements.txt - 确保本地环境已安装
mysql-client(提供mysqldump命令)。 - 运行服务:
uvicorn app:app --host 0.0.0.0 --port 8000 --reload
2. 前端 (Vue CLI)
- 进入
frontend目录。 - 安装依赖并启动:
npm install npm run serve - 访问
http://localhost:8080,默认配置会自动转发 API 请求到 8000 端口。
多实例扩展说明
如果你需要备份第 4 个或更多实例,请按以下规范修改 docker-compose.yml:
- 命名规范:使用
drN-mysql、drN-redis格式命名,其中N为实例序号。 - 存储路径:将卷映射路径设为
./data/drN/...以防数据混淆。 - 配置填写:
- 在 DataKeep 前端新增实例时,备份端 Host 填写对应的容器名(如
dr4-mysql)。 - 由于所有容器在同一网络下,直接使用容器名即可实现内网互访。
- 在 DataKeep 前端新增实例时,备份端 Host 填写对应的容器名(如
注意事项
- 数据安全:备份端 Redis 在同步前会清空(FLUSHALL),请勿在备份端 Redis 中存放其他重要数据。
- 权限:确保生产端提供的账号具备
mysqldump、SCAN和GetObject权限。
Description
Languages
Python
47.3%
Vue
46.8%
Dockerfile
3.2%
JavaScript
2.7%