- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
179 lines
6.1 KiB
Markdown
179 lines
6.1 KiB
Markdown
# 考培练系统 - 数据盘规划方案
|
||
|
||
> 更新日期: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. **监控磁盘**:设置磁盘空间监控告警
|
||
|