WuYongJie 75db836d29 feat(3D核心功能): 完成所有必需实现任务
- 文件上传验证: ModelUploader组件增强、上传API错误处理
- GLTF解析器: 增强节点提取和元数据
- 板材编辑: PanelEditor客户端验证 + panels API服务端验证
- 装配步骤编辑: 修复未使用代码,添加预览按钮
- 装配动画播放: AssemblyPlayer步骤导航边界检查优化
- 分享链接: 完整CRUD API(创建、获取、删除),含验证和过期检查

跳过可选测试任务以加快MVP开发
2025-12-22 16:18:13 +08:00

200 lines
5.6 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.

# 备份和恢复脚本
本目录包含系统的备份和恢复脚本。
## 📋 脚本列表
### 数据库备份
- `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)