4.3 KiB
4.3 KiB
文件迁移到 MinIO 指南
本指南将帮助您将现有的本地静态文件迁移到 MinIO 对象存储。
迁移前准备
1. 确保 MinIO 配置正确
确保 .env 文件中的 MinIO 配置正确:
MINIO_ENDPOINT=your-minio-server
MINIO_PORT=9000
MINIO_ACCESS_KEY=your-access-key
MINIO_SECRET_KEY=your-secret-key
MINIO_USE_SSL=false
MINIO_PUBLIC_URL=https://minio.yourdomain.com
2. 确保存储桶已创建
确保以下存储桶在 MinIO 中已存在:
avatars- 用户头像products- 产品图片documents- 文档文件
3. 备份数据库
重要:在开始迁移前,请务必备份数据库!
mysqldump -u username -p database_name > backup_before_migration.sql
执行迁移
1. 运行迁移脚本
cd jurong_circle_black
node migrate-to-minio.js
2. 监控迁移过程
脚本会显示详细的迁移进度:
- 扫描本地文件
- 逐个上传到 MinIO
- 更新数据库中的文件路径引用
- 生成迁移报告
迁移后验证
1. 检查迁移报告
查看生成的 migration-report.json 文件:
{
"migrationDate": "2024-01-15T10:30:00.000Z",
"totalFiles": 150,
"successCount": 148,
"failedCount": 2,
"migratedFiles": [...],
"failedFiles": [...]
}
2. 验证文件访问
- 检查用户头像是否正常显示
- 检查产品图片是否正常显示
- 检查文档下载是否正常
3. 验证数据库更新
检查数据库中的文件路径是否已更新:
-- 检查用户头像路径
SELECT id, username, avatar FROM users WHERE avatar LIKE 'https://minio%' LIMIT 10;
-- 检查产品图片路径
SELECT id, name, image_url FROM products WHERE image_url LIKE 'https://minio%' LIMIT 10;
文件组织结构
迁移后,文件将按以下结构组织:
MinIO 存储桶/
├── avatars/
│ ├── 2024/
│ │ ├── 01/
│ │ │ ├── 15/
│ │ │ │ ├── 1640995200000_a1b2c3d4.jpg
│ │ │ │ └── 1640995300000_b2c3d4e5.png
│ │ │ └── 16/
│ │ └── 02/
│ └── 2023/
├── products/
│ ├── 2024/
│ │ ├── 01/
│ │ │ ├── 15/
│ │ │ └── 16/
│ │ └── 02/
│ └── 2023/
└── documents/
├── 2024/
└── 2023/
故障排除
常见问题
-
连接 MinIO 失败
- 检查 MinIO 服务是否运行
- 验证网络连接
- 确认访问密钥正确
-
存储桶不存在
- 在 MinIO 控制台创建所需的存储桶
- 确保存储桶名称与配置一致
-
权限问题
- 确保 MinIO 用户有读写权限
- 检查存储桶策略设置
-
部分文件迁移失败
- 查看迁移报告中的失败文件列表
- 检查文件是否损坏或被占用
- 手动重新上传失败的文件
回滚方案
如果迁移出现问题,可以通过以下步骤回滚:
-
恢复数据库备份
mysql -u username -p database_name < backup_before_migration.sql -
重新配置文件上传路径
- 修改
routes/upload.js使用本地存储 - 确保
uploads目录存在且有正确权限
- 修改
迁移完成后的清理
1. 删除本地文件(可选)
警告:只有在确认迁移成功且系统运行正常后才执行此操作!
# 备份 uploads 目录
mv uploads uploads_backup_$(date +%Y%m%d)
# 或者直接删除(谨慎操作)
# rm -rf uploads
2. 更新部署脚本
更新生产环境的部署脚本,移除对 uploads 目录的依赖。
3. 更新备份策略
确保备份策略包含 MinIO 数据的备份。
注意事项
- 迁移时间:根据文件数量和大小,迁移可能需要较长时间
- 网络稳定性:确保网络连接稳定,避免迁移中断
- 存储空间:确保 MinIO 有足够的存储空间
- 并发限制:脚本已添加延迟避免过快请求,如需调整可修改代码
- 文件路径:迁移后的文件路径将包含日期文件夹结构
技术支持
如果在迁移过程中遇到问题,请:
- 查看控制台输出的错误信息
- 检查
migration-report.json中的详细信息 - 确保 MinIO 服务正常运行
- 验证网络连接和权限设置