Files
datakeep/README.md

73 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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