- 文件上传验证: ModelUploader组件增强、上传API错误处理 - GLTF解析器: 增强节点提取和元数据 - 板材编辑: PanelEditor客户端验证 + panels API服务端验证 - 装配步骤编辑: 修复未使用代码,添加预览按钮 - 装配动画播放: AssemblyPlayer步骤导航边界检查优化 - 分享链接: 完整CRUD API(创建、获取、删除),含验证和过期检查 跳过可选测试任务以加快MVP开发
200 lines
5.6 KiB
Markdown
200 lines
5.6 KiB
Markdown
# 备份和恢复脚本
|
||
|
||
本目录包含系统的备份和恢复脚本。
|
||
|
||
## 📋 脚本列表
|
||
|
||
### 数据库备份
|
||
- `backup-db.sh` - Linux/Mac 数据库备份脚本
|
||
- `backup-db.ps1` - Windows PowerShell 数据库备份脚本
|
||
- `test-backup-db.sh` - Linux/Mac 备份测试脚本
|
||
- `test-backup-db.ps1` - Windows PowerShell 备份测试脚本
|
||
|
||
### 文件存储备份
|
||
- `backup-files.sh` - Linux/Mac 文件存储备份脚本
|
||
- `backup-files.ps1` - Windows PowerShell 文件存储备份脚本
|
||
|
||
## 🚀 使用方法
|
||
|
||
### Linux/Mac
|
||
|
||
#### 执行数据库备份
|
||
```bash
|
||
# 使用默认备份目录 (./backups/database)
|
||
./scripts/backup-db.sh
|
||
|
||
# 指定备份目录
|
||
./scripts/backup-db.sh /path/to/backup
|
||
```
|
||
|
||
#### 执行文件存储备份
|
||
```bash
|
||
# 使用默认备份目录 (./backups/files)
|
||
./scripts/backup-files.sh
|
||
|
||
# 指定备份目录
|
||
./scripts/backup-files.sh /path/to/backup
|
||
|
||
# 设置 MinIO 数据目录
|
||
MINIO_DATA_DIR=/path/to/minio-data ./scripts/backup-files.sh
|
||
```
|
||
|
||
#### 测试备份
|
||
```bash
|
||
# 执行测试
|
||
./scripts/test-backup-db.sh
|
||
```
|
||
|
||
### Windows PowerShell
|
||
|
||
#### 执行数据库备份
|
||
```powershell
|
||
# 使用默认备份目录 (.\backups\database)
|
||
.\scripts\backup-db.ps1
|
||
|
||
# 指定备份目录
|
||
.\scripts\backup-db.ps1 -BackupDir "C:\backups\database"
|
||
```
|
||
|
||
#### 执行文件存储备份
|
||
```powershell
|
||
# 使用默认备份目录 (.\backups\files)
|
||
.\scripts\backup-files.ps1
|
||
|
||
# 指定备份目录和 MinIO 数据目录
|
||
.\scripts\backup-files.ps1 -BackupDir "C:\backups\files" -MinioDataDir "C:\minio-data"
|
||
```
|
||
|
||
#### 测试备份
|
||
```powershell
|
||
# 执行测试
|
||
.\scripts\test-backup-db.ps1
|
||
```
|
||
|
||
## 📦 备份内容
|
||
|
||
### 数据库备份文件
|
||
1. **备份文件**:`db-backup-YYYYMMDD-HHMMSS.sql.gz`
|
||
2. **Checksum 文件**:`db-backup-YYYYMMDD-HHMMSS.sql.gz.sha256`
|
||
3. **摘要文件**:`backup-summary-YYYYMMDD-HHMMSS.json`
|
||
4. **日志文件**:`backup-db-YYYYMMDD-HHMMSS.log`
|
||
|
||
### 文件存储备份文件
|
||
1. **备份文件**:`files-backup-YYYYMMDD-HHMMSS.tar.gz`
|
||
2. **Checksum 文件**:`files-backup-YYYYMMDD-HHMMSS.tar.gz.sha256`
|
||
3. **摘要文件**:`backup-summary-YYYYMMDD-HHMMSS.json`
|
||
4. **日志文件**:`backup-files-YYYYMMDD-HHMMSS.log`
|
||
|
||
## ⚙️ 环境要求
|
||
|
||
### Linux/Mac
|
||
- PostgreSQL 客户端工具(pg_dump, psql)
|
||
- gzip
|
||
- bash
|
||
|
||
### Windows
|
||
- PostgreSQL 客户端工具(pg_dump, psql)
|
||
- 7-Zip 或 gzip
|
||
- PowerShell 5.0+
|
||
|
||
## 🔧 配置
|
||
|
||
### 数据库备份配置
|
||
脚本会从 `.env` 文件读取数据库连接信息:
|
||
```env
|
||
DATABASE_URL="postgresql://user:password@host:port/database"
|
||
```
|
||
|
||
### 文件存储备份配置
|
||
设置 MinIO 数据目录(默认:`./minio-data`):
|
||
```bash
|
||
# Linux/Mac
|
||
export MINIO_DATA_DIR=/path/to/minio-data
|
||
|
||
# Windows PowerShell
|
||
$env:MINIO_DATA_DIR="C:\path\to\minio-data"
|
||
```
|
||
|
||
## 📊 备份策略
|
||
|
||
- 自动保留最近 7 个备份
|
||
- 超过 7 个备份时,自动删除最旧的备份
|
||
- 备份前检查磁盘空间(需要至少 2 倍数据库大小的空间)
|
||
- 备份后验证文件完整性
|
||
|
||
## 🔍 故障排查
|
||
|
||
### 问题:pg_dump 命令未找到
|
||
**解决方案**:安装 PostgreSQL 客户端工具
|
||
- Linux: `sudo apt-get install postgresql-client`
|
||
- Mac: `brew install postgresql`
|
||
- Windows: 下载并安装 PostgreSQL
|
||
|
||
### 问题:数据库连接失败
|
||
**解决方案**:
|
||
1. 检查 `.env` 文件中的 `DATABASE_URL` 是否正确
|
||
2. 确认数据库服务正在运行
|
||
3. 检查网络连接和防火墙设置
|
||
|
||
### 问题:磁盘空间不足
|
||
**解决方案**:
|
||
1. 清理旧的备份文件
|
||
2. 增加磁盘空间
|
||
3. 使用其他磁盘作为备份目录
|
||
|
||
### 问题:权限不足
|
||
**解决方案**:
|
||
- Linux/Mac: 使用 `chmod +x scripts/*.sh` 添加执行权限
|
||
- Windows: 以管理员身份运行 PowerShell
|
||
|
||
## 📝 示例输出
|
||
|
||
```
|
||
========================================
|
||
数据库备份脚本
|
||
========================================
|
||
|
||
[2025-12-13 10:00:00] 检查依赖...
|
||
[2025-12-13 10:00:00] ✅ 依赖检查通过
|
||
[2025-12-13 10:00:01] 验证数据库连接...
|
||
[2025-12-13 10:00:01] ✅ 数据库连接成功
|
||
[2025-12-13 10:00:01] 创建备份目录: ./backups/database
|
||
[2025-12-13 10:00:01] ✅ 备份目录已创建
|
||
[2025-12-13 10:00:01] 检查磁盘空间...
|
||
[2025-12-13 10:00:02] 数据库大小: 150 MB
|
||
[2025-12-13 10:00:02] 可用空间: 10240 MB
|
||
[2025-12-13 10:00:02] 需要空间: 300 MB
|
||
[2025-12-13 10:00:02] ✅ 磁盘空间充足
|
||
[2025-12-13 10:00:02] 开始备份数据库...
|
||
[2025-12-13 10:00:02] 备份文件: db-backup-20251213-100002.sql.gz
|
||
[2025-12-13 10:00:45] ✅ 备份完成,耗时: 43 秒
|
||
[2025-12-13 10:00:45] 验证备份文件...
|
||
[2025-12-13 10:00:45] 备份文件大小: 25M
|
||
[2025-12-13 10:00:46] ✅ 备份文件完整性验证通过
|
||
[2025-12-13 10:00:46] ✅ Checksum: a1b2c3d4...
|
||
[2025-12-13 10:00:46] 清理旧备份...
|
||
[2025-12-13 10:00:46] 当前有 3 个备份,无需清理
|
||
[2025-12-13 10:00:46] 生成备份摘要...
|
||
[2025-12-13 10:00:46] ✅ 备份摘要已生成
|
||
|
||
========================================
|
||
[2025-12-13 10:00:46] 🎉 备份成功完成!
|
||
========================================
|
||
|
||
备份文件: ./backups/database/db-backup-20251213-100002.sql.gz
|
||
日志文件: ./backups/database/backup-db-20251213-100002.log
|
||
```
|
||
|
||
## 🔐 安全建议
|
||
|
||
1. **保护备份文件**:备份文件包含敏感数据,应妥善保管
|
||
2. **定期测试恢复**:定期测试备份文件是否可以成功恢复
|
||
3. **异地备份**:将备份文件复制到其他位置或云存储
|
||
4. **加密备份**:对于敏感数据,考虑加密备份文件
|
||
|
||
## 📚 相关文档
|
||
|
||
- [部署指南](../docs/部署指南.md)(待创建)
|
||
- [运维指南](../docs/运维指南.md)(待创建)
|
||
- [Phase 10 任务清单](../../.kiro/specs/生产就绪/任务清单.md)
|