Giao diện
Câu hỏi thường gặp (FAQ) — Backups
Cài đặt và cấu hình
Backup lưu ở đâu?
Mặc định lưu tại ./storage/backups trên server. Khuyến nghị mạnh cấu hình thêm S3 destination:
| Lưu ở đâu | Ưu điểm | Nhược điểm |
|---|---|---|
| Local | Nhanh, không cần cấu hình | Mất nếu server hỏng |
| S3 | An toàn, durable (99.999999999%) | Cần cấu hình, chi phí lưu trữ |
| Cả hai | An toàn nhất | Chi phí cao hơn |
Backup bao gồm những gì?
| Loại | Database | Users | Cấu hình | Uploads | Attachments |
|---|---|---|---|---|---|
| Full | ✅ | ✅ | ✅ | ✅ | ✅ |
| Database only | ✅ | ✅ | ✅ | ❌ | ❌ |
Khác gì với plugin-backup-restore?
| Tiêu chí | plugin-backup-restore | plugin-backups |
|---|---|---|
| Backup thủ công | ✅ | ✅ |
| Backup tự động (cron) | ❌ | ✅ |
| Multi-destination | ❌ | ✅ (Local + S3 + nhiều hơn) |
| Mã hoá | ❌ | ✅ (AES-256) |
| Retention policy | ❌ | ✅ (tự xoá backup cũ) |
| Dashboard | Cơ bản | Đầy đủ (last backup, next scheduled) |
plugin-backups là phiên bản nâng cao với tự động hoá, mã hoá, và quản lý chuyên nghiệp.
Cấu hình S3-compatible storage (MinIO, R2, Spaces)?
Sử dụng cùng cấu hình S3 nhưng thay đổi endpoint:
typescript
// MinIO
{
bucket: 'backups',
region: 'us-east-1',
accessKeyId: 'minioadmin',
secretAccessKey: 'minioadmin',
endpoint: 'http://localhost:9000',
forcePathStyle: true,
}
// Cloudflare R2
{
bucket: 'backups',
region: 'auto',
accessKeyId: '...',
secretAccessKey: '...',
endpoint: 'https://xxx.r2.cloudflarestorage.com',
}Sử dụng
Làm sao restore backup?
- Vào Settings → Backups
- Chọn backup cần restore
- Nhấn Restore → xác nhận
- Đợi quá trình hoàn tất — server tự động restart
DANGER
Restore ghi đè toàn bộ dữ liệu. Luôn tạo backup mới trước khi restore.
Có thể restore lên server khác không?
Có. Quy trình:
- Download file backup từ server gốc (hoặc lấy từ S3)
- Upload lên server mới qua giao diện
- Nhấn Restore — dữ liệu được chuyển sang
Yêu cầu: cùng loại database (PostgreSQL), phiên bản Digiforce tương thích.
Backup tự động chạy lúc nào?
Theo cấu hình schedule (cron expression):
| Ví dụ | Ý nghĩa |
|---|---|
0 2 * * * | 2h sáng mỗi ngày |
0 3 * * 0 | 3h sáng mỗi Chủ Nhật |
0 */12 * * * | Mỗi 12 giờ |
0 1 1 * * | 1h sáng ngày 1 mỗi tháng |
Nên chọn thời điểm ít traffic nhất.
Retention policy hoạt động thế nào?
Sau mỗi backup thành công, plugin kiểm tra:
- Backup nào cũ hơn retention days → xoá
- Tổng số backup vượt max backups → xoá backup cũ nhất
Ví dụ: retention = 30 ngày, max = 10 → giữ tối đa 10 backup trong 30 ngày gần nhất.
Lỗi thường gặp
Backup thất bại, báo "disk space"?
Ổ đĩa hết dung lượng. Giải pháp:
- Xoá backup cũ để giải phóng dung lượng
- Tăng dung lượng disk (resize volume)
- Chuyển sang S3 — không giới hạn dung lượng
- Cấu hình max backups và retention để tự động xoá
Restore bị lỗi giữa chừng?
Dữ liệu có thể ở trạng thái không nhất quán. Xử lý:
- Thử restore lại — nhiều khi chỉ là lỗi tạm thời
- Restore từ backup khác (nếu có nhiều bản)
- Kiểm tra log server để xác định lỗi cụ thể
- Trường hợp xấu nhất: khởi tạo database mới và restore
TIP
Luôn tạo backup trước khi restore — đây là "safety net" quan trọng nhất.
Backup quá lớn, mất nhiều thời gian?
| Giải pháp | Hiệu quả | Cách thực hiện |
|---|---|---|
| Dùng "Database only" | Cao | Bỏ backup files (uploads, attachments) |
| Tối ưu database | Trung bình | Xoá dữ liệu không cần, VACUUM |
| Dùng S3 | Trung bình | Giảm bottleneck disk I/O local |
| Nén tốt hơn | Thấp | Nén gzip đã tối ưu sẵn |
Upload backup lên S3 thất bại?
Kiểm tra:
- AWS credentials đúng (Access Key + Secret Key)
- Bucket tồn tại và region đúng
- IAM permissions: cần
s3:PutObject,s3:GetObject,s3:DeleteObject - Network: server có thể kết nối đến S3 endpoint
- File size: file > 5GB có thể cần cấu hình multipart upload