Files
datakeep/README.md

73 lines
2.7 KiB
Markdown
Raw Normal View History

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