Files
datakeep/README.md

2.7 KiB
Raw Blame History

DataKeep

一个运行在备份服务器上的轻量级容灾副本同步系统Pull 模式)。

核心设计

  • 物理隔离备份服务器运行独立的数据库实例MySQL/Redis/MinIO与生产环境物理隔离。
  • 主动同步:由备份服务器主动连接生产环境拉取数据,即使生产环境被攻击,备份数据依然安全。
  • 多实例支持:备份机可以同时为多个不同的生产服务提供备份,每个服务在备份机拥有独立的容器组。

核心能力

  • MySQL 同步:支持自动建库表结构变更同步。通过全量逻辑覆盖模式,确保备份库与生产库结构完全一致。
  • Redis 同步采用键级同步SCAN/DUMP/RESTORE同步前自动 FLUSHALL 备份库,确保数据副本纯净。
  • MinIO 同步:对象级增量镜像(只增不删策略),防止生产端误删导致的灾难性后果。
  • 小时级定时:前端支持 0-23 时精确配置,支持手动一键触发。

快速启动 (Docker Compose)

这是在 Ubuntu 20.04 生产环境中最推荐的部署方式。

  1. 执行启动命令
    docker compose up -d --build
    
  2. 访问系统 在浏览器打开 http://<服务器IP>:12000

本地启动指南 (非 Docker 开发环境)

1. 后端 (FastAPI)

  1. 进入 backend 目录,创建虚拟环境并激活:
    python -m venv .venv
    source .venv/bin/activate  # Windows 使用 .\venv\Scripts\activate
    
  2. 安装依赖:
    pip install -r requirements.txt
    
  3. 确保本地环境已安装 mysql-client(提供 mysqldump 命令)。
  4. 运行服务:
    uvicorn app:app --host 0.0.0.0 --port 8000 --reload
    

2. 前端 (Vue CLI)

  1. 进入 frontend 目录。
  2. 安装依赖并启动:
    npm install
    npm run serve
    
  3. 访问 http://localhost:8080,默认配置会自动转发 API 请求到 8000 端口。

多实例扩展说明

如果你需要备份第 4 个或更多实例,请按以下规范修改 docker-compose.yml

  1. 命名规范:使用 drN-mysqldrN-redis 格式命名,其中 N 为实例序号。
  2. 存储路径:将卷映射路径设为 ./data/drN/... 以防数据混淆。
  3. 配置填写
    • 在 DataKeep 前端新增实例时,备份端 Host 填写对应的容器名(如 dr4-mysql)。
    • 由于所有容器在同一网络下,直接使用容器名即可实现内网互访。

注意事项

  • 数据安全:备份端 Redis 在同步前会清空FLUSHALL请勿在备份端 Redis 中存放其他重要数据。
  • 权限:确保生产端提供的账号具备 mysqldumpSCANGetObject 权限。