# 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` 权限。