196 lines
4.1 KiB
Markdown
196 lines
4.1 KiB
Markdown
# BACKUP_RESTORE.md - Database Kesiswaan
|
|
|
|
Panduan backup dan pemulihan data untuk project `database-kesiswaan`.
|
|
|
|
## Tujuan
|
|
|
|
Menyediakan mekanisme backup **tanpa UI aplikasi**, agar admin/server operator bisa menjalankan backup rutin langsung dari shell/cron.
|
|
|
|
Yang diamankan:
|
|
- database MySQL/MariaDB `database_kesiswaan`
|
|
- file dokumen di `storage/app/public`
|
|
- file `.env` (opsional, tapi sangat disarankan)
|
|
|
|
---
|
|
|
|
## Struktur Script
|
|
|
|
Semua script ada di folder:
|
|
|
|
```bash
|
|
/var/www/database-kesiswaan/scripts
|
|
```
|
|
|
|
### 1. Backup database saja
|
|
```bash
|
|
./scripts/backup-database-kesiswaan.sh
|
|
```
|
|
Output:
|
|
- file `.sql.gz`
|
|
- default lokasi: `/var/backups/database-kesiswaan/database`
|
|
|
|
### 2. Backup dokumen saja
|
|
```bash
|
|
./scripts/backup-dokumen-kesiswaan.sh
|
|
```
|
|
Output:
|
|
- file `.tar.gz`
|
|
- default lokasi: `/var/backups/database-kesiswaan/files`
|
|
|
|
### 3. Backup penuh (direkomendasikan)
|
|
```bash
|
|
./scripts/backup-full-kesiswaan.sh
|
|
```
|
|
Output:
|
|
- backup database
|
|
- backup dokumen
|
|
- salinan `.env`
|
|
- manifest backup
|
|
|
|
---
|
|
|
|
## Lokasi Backup Default
|
|
|
|
```bash
|
|
/var/backups/database-kesiswaan/
|
|
├── database/
|
|
├── files/
|
|
├── env/
|
|
└── manifests/
|
|
```
|
|
|
|
---
|
|
|
|
## Retensi Default
|
|
|
|
Script menggunakan retensi default:
|
|
|
|
```bash
|
|
RETENTION_DAYS=14
|
|
```
|
|
|
|
Artinya backup lebih lama dari 14 hari akan dibersihkan otomatis.
|
|
|
|
Kalau ingin ubah retensi saat menjalankan script:
|
|
|
|
```bash
|
|
RETENTION_DAYS=30 ./scripts/backup-full-kesiswaan.sh
|
|
```
|
|
|
|
---
|
|
|
|
## Menjalankan Manual
|
|
|
|
### Backup penuh manual
|
|
```bash
|
|
cd /var/www/database-kesiswaan
|
|
chmod +x scripts/*.sh
|
|
./scripts/backup-full-kesiswaan.sh
|
|
```
|
|
|
|
### Backup hanya database
|
|
```bash
|
|
cd /var/www/database-kesiswaan
|
|
./scripts/backup-database-kesiswaan.sh
|
|
```
|
|
|
|
### Backup hanya dokumen
|
|
```bash
|
|
cd /var/www/database-kesiswaan
|
|
./scripts/backup-dokumen-kesiswaan.sh
|
|
```
|
|
|
|
---
|
|
|
|
## Contoh Cron Rutin
|
|
|
|
### Backup penuh setiap hari jam 01:00
|
|
```cron
|
|
0 1 * * * cd /var/www/database-kesiswaan && /bin/bash ./scripts/backup-full-kesiswaan.sh >> /var/log/database-kesiswaan-backup.log 2>&1
|
|
```
|
|
|
|
### Backup database saja setiap 6 jam
|
|
```cron
|
|
0 */6 * * * cd /var/www/database-kesiswaan && /bin/bash ./scripts/backup-database-kesiswaan.sh >> /var/log/database-kesiswaan-db-backup.log 2>&1
|
|
```
|
|
|
|
### Backup dokumen setiap hari jam 01:30
|
|
```cron
|
|
30 1 * * * cd /var/www/database-kesiswaan && /bin/bash ./scripts/backup-dokumen-kesiswaan.sh >> /var/log/database-kesiswaan-files-backup.log 2>&1
|
|
```
|
|
|
|
---
|
|
|
|
## Restore Database
|
|
|
|
Contoh restore dump database:
|
|
|
|
```bash
|
|
gunzip -c /var/backups/database-kesiswaan/database/database_kesiswaan-YYYY-MM-DD-HHMMSS.sql.gz | mysql -u kesiswaan -p database_kesiswaan
|
|
```
|
|
|
|
> Pastikan database target sudah ada dan kredensial benar.
|
|
|
|
---
|
|
|
|
## Restore Dokumen
|
|
|
|
Contoh restore dokumen:
|
|
|
|
```bash
|
|
mkdir -p /var/www/database-kesiswaan/storage/app/public
|
|
tar -xzf /var/backups/database-kesiswaan/files/storage-public-YYYY-MM-DD-HHMMSS.tar.gz -C /var/www/database-kesiswaan/storage/app/public
|
|
```
|
|
|
|
Lalu pastikan storage link tetap ada:
|
|
|
|
```bash
|
|
cd /var/www/database-kesiswaan
|
|
php artisan storage:link
|
|
php artisan optimize:clear
|
|
```
|
|
|
|
---
|
|
|
|
## Restore `.env`
|
|
|
|
Kalau perlu mengembalikan `.env`:
|
|
|
|
```bash
|
|
cp /var/backups/database-kesiswaan/env/env-YYYY-MM-DD-HHMMSS.backup /var/www/database-kesiswaan/.env
|
|
chmod 600 /var/www/database-kesiswaan/.env
|
|
```
|
|
|
|
---
|
|
|
|
## Checklist Setelah Restore
|
|
|
|
- [ ] database berhasil di-restore
|
|
- [ ] dokumen berhasil di-restore
|
|
- [ ] `.env` benar
|
|
- [ ] `php artisan optimize:clear` dijalankan
|
|
- [ ] `php artisan storage:link` valid
|
|
- [ ] halaman login bisa dibuka
|
|
- [ ] data siswa muncul
|
|
- [ ] preview/download dokumen berjalan
|
|
- [ ] portal publik berjalan normal
|
|
|
|
---
|
|
|
|
## Rekomendasi Operasional
|
|
|
|
1. Gunakan **backup penuh harian**.
|
|
2. Simpan backup di disk/partisi yang cukup longgar.
|
|
3. Kalau memungkinkan, sinkronkan backup ke lokasi kedua (server lain / external storage).
|
|
4. Uji restore minimal sesekali, jangan hanya percaya backup berhasil dibuat.
|
|
5. Lindungi folder backup karena berisi data sensitif dan kemungkinan salinan `.env`.
|
|
|
|
---
|
|
|
|
## Catatan Keamanan
|
|
|
|
- Folder backup bisa mengandung data sensitif.
|
|
- Jangan expose `/var/backups/database-kesiswaan` ke web.
|
|
- Jangan commit backup ke GitHub.
|
|
- Jangan berikan izin baca sembarangan ke file backup `.env`.
|