Files
012-kaopeilian/docs/规划/数据盘规划方案.md
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

179 lines
6.1 KiB
Markdown
Raw 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.
# 考培练系统 - 数据盘规划方案
> 更新日期2025-12-18
>
> 本文档描述了如何将考培练系统的持久化数据迁移到数据盘,确保数据安全且按租户隔离。
## 一、当前磁盘状态
| 磁盘 | 挂载点 | 容量 | 已用 | 可用 | 用途 |
|------|--------|------|------|------|------|
| 系统盘 /dev/vda3 | / | 79G | 35G | 41G | 系统 + Docker |
| 数据盘 /dev/vdb1 | /data | 60G | 1.6G | 55G | 持久化数据 |
> **注意**:系统盘已于 2025-12-18 从 49G 在线扩展至 79G原分区未使用全部 80G 磁盘空间)
## 二、数据盘目录规划
```
/data/
├── kaopeilian/ # 考培练系统数据根目录
│ ├── uploads/ # 统一上传文件存储(按租户隔离)
│ │ ├── demo/ # 演示版 (aiedu.ireborn.com.cn)
│ │ │ ├── courses/ # 课程资料
│ │ │ └── converted/ # 转换后的文件
│ │ ├── kpl/ # 瑞小美 (kpl.ireborn.com.cn)
│ │ │ ├── courses/
│ │ │ └── converted/
│ │ ├── yy/ # 杨扬宠物 (yy.ireborn.com.cn)
│ │ ├── hl/ # 武汉禾丽 (hl.ireborn.com.cn)
│ │ ├── xy/ # 芯颜定制 (xy.ireborn.com.cn)
│ │ ├── fw/ # 飞沃 (fw.ireborn.com.cn)
│ │ ├── hua/ # 华尔倍丽 (hua.ireborn.com.cn)
│ │ └── peilian/ # 陪练试用版 (pl.ireborn.com.cn)
│ ├── backups/ # 数据库备份
│ │ ├── daily/ # 每日备份保留7天
│ │ └── weekly/ # 每周备份保留4周
│ └── logs/ # 应用日志归档
├── mysql-data/ # MySQL 数据目录(已存在)
├── redis-data/ # Redis 数据目录(已存在)
└── prod-envs/ # 生产环境配置(已存在)
```
## 三、迁移步骤
### 3.1 创建目录结构
```bash
# 创建统一上传目录
mkdir -p /data/kaopeilian/uploads/{demo,kpl,yy,hl,xy,fw,hua,peilian}
mkdir -p /data/kaopeilian/backups/{daily,weekly}
mkdir -p /data/kaopeilian/logs
```
### 3.2 迁移演示版和瑞小美上传文件
```bash
# 迁移演示版(当前用于演示和瑞小美共用)
cp -rp /root/aiedu/kaopeilian-backend/uploads/* /data/kaopeilian/uploads/demo/
# 迁移多客户版上传文件
cp -rp /data/prod-envs/uploads-yy/* /data/kaopeilian/uploads/yy/
cp -rp /data/prod-envs/uploads-hl/* /data/kaopeilian/uploads/hl/
cp -rp /data/prod-envs/uploads-xy/* /data/kaopeilian/uploads/xy/
cp -rp /data/prod-envs/uploads-fw/* /data/kaopeilian/uploads/fw/
cp -rp /data/prod-envs/uploads-hua/* /data/kaopeilian/uploads/hua/
```
### 3.3 更新 Docker Compose 卷挂载
修改各 docker-compose 文件,将上传目录指向数据盘:
**演示版 (docker-compose.yml):**
```yaml
volumes:
- /data/kaopeilian/uploads/demo:/app/uploads
```
**瑞小美 (docker-compose.kpl.yml):**
```yaml
volumes:
- /data/kaopeilian/uploads/kpl:/app/uploads
```
**多客户版 (docker-compose.prod-multi.yml):**
```yaml
# yy-backend
volumes:
- /data/kaopeilian/uploads/yy:/app/uploads
# hl-backend
volumes:
- /data/kaopeilian/uploads/hl:/app/uploads
# 以此类推...
```
## 四、数据安全策略
### 4.1 自动备份内容
备份脚本位置:`/data/kaopeilian/backup.sh`
**备份的数据库共8个**
| 租户 | 数据库容器 | 数据库名 | 备份文件 |
|------|-----------|----------|----------|
| 演示版 | kaopeilian-mysql | kaopeilian | kaopeilian_demo.sql |
| 瑞小美 | kpl-mysql-dev | kaopeilian | kaopeilian_kpl.sql |
| 杨扬宠物 | prod-mysql | kaopeilian_yy | kaopeilian_yy.sql |
| 武汉禾丽 | prod-mysql | kaopeilian_hl | kaopeilian_hl.sql |
| 芯颜定制 | prod-mysql | kaopeilian_xy | kaopeilian_xy.sql |
| 飞沃 | prod-mysql | kaopeilian_fw | kaopeilian_fw.sql |
| 华尔倍丽 | prod-mysql | kaopeilian_hua | kaopeilian_hua.sql |
| 陪练试用版 | peilian-mysql | peilian_trial | peilian_trial.sql |
**备份的上传文件(按租户隔离):**
- `/data/kaopeilian/uploads/demo/` - 演示版
- `/data/kaopeilian/uploads/kpl/` - 瑞小美
- `/data/kaopeilian/uploads/yy/` - 杨扬宠物
- `/data/kaopeilian/uploads/hl/` - 武汉禾丽
- `/data/kaopeilian/uploads/xy/` - 芯颜定制
- `/data/kaopeilian/uploads/fw/` - 飞沃
- `/data/kaopeilian/uploads/hua/` - 华尔倍丽
- `/data/kaopeilian/uploads/peilian/` - 陪练试用版
### 4.2 备份策略
| 类型 | 执行时间 | 保留时间 | 存储位置 |
|------|----------|----------|----------|
| 日备份 | 每天凌晨 2:00 | 7 天 | /data/kaopeilian/backups/daily/ |
| 周备份 | 每周日凌晨 2:00 | 4 周 | /data/kaopeilian/backups/weekly/ |
### 4.3 手动执行备份
```bash
# 立即执行完整备份
/data/kaopeilian/backup.sh
# 查看备份日志
tail -f /data/kaopeilian/logs/backup.log
# 查看备份文件
ls -lh /data/kaopeilian/backups/daily/
```
### 4.4 数据恢复
```bash
# 解压备份
cd /data/kaopeilian/backups/daily/
tar -xzf 20251218_131215.tar.gz
# 恢复指定数据库(以瑞小美为例)
docker exec -i kpl-mysql-dev mysql -u root -p'nj861021' kaopeilian < 20251218_131215/kaopeilian_kpl.sql
# 恢复上传文件
cp -rp 20251218_131215/uploads/kpl/* /data/kaopeilian/uploads/kpl/
```
## 五、优势
| 特性 | 说明 |
|------|------|
| **数据隔离** | 各租户上传文件完全隔离,互不影响 |
| **持久化** | 数据存储在独立数据盘,不受系统重装影响 |
| **易备份** | 统一目录结构,便于备份和恢复 |
| **可扩展** | 数据盘可在线扩容,支持业务增长 |
| **系统盘干净** | Docker 镜像和容器在系统盘,数据在数据盘 |
## 六、注意事项
1. **迁移前备份**:在迁移前务必备份所有上传文件
2. **符号链接**:可以创建符号链接保持代码兼容性
3. **权限设置**:确保 Docker 容器有读写权限
4. **监控磁盘**:设置磁盘空间监控告警