73 lines
2.7 KiB
Markdown
73 lines
2.7 KiB
Markdown
# 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` 权限。
|