4.1 KiB
4.1 KiB
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:
/var/www/database-kesiswaan/scripts
1. Backup database saja
./scripts/backup-database-kesiswaan.sh
Output:
- file
.sql.gz - default lokasi:
/var/backups/database-kesiswaan/database
2. Backup dokumen saja
./scripts/backup-dokumen-kesiswaan.sh
Output:
- file
.tar.gz - default lokasi:
/var/backups/database-kesiswaan/files
3. Backup penuh (direkomendasikan)
./scripts/backup-full-kesiswaan.sh
Output:
- backup database
- backup dokumen
- salinan
.env - manifest backup
Lokasi Backup Default
/var/backups/database-kesiswaan/
├── database/
├── files/
├── env/
└── manifests/
Retensi Default
Script menggunakan retensi default:
RETENTION_DAYS=14
Artinya backup lebih lama dari 14 hari akan dibersihkan otomatis.
Kalau ingin ubah retensi saat menjalankan script:
RETENTION_DAYS=30 ./scripts/backup-full-kesiswaan.sh
Menjalankan Manual
Backup penuh manual
cd /var/www/database-kesiswaan
chmod +x scripts/*.sh
./scripts/backup-full-kesiswaan.sh
Backup hanya database
cd /var/www/database-kesiswaan
./scripts/backup-database-kesiswaan.sh
Backup hanya dokumen
cd /var/www/database-kesiswaan
./scripts/backup-dokumen-kesiswaan.sh
Contoh Cron Rutin
Backup penuh setiap hari jam 01:00
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
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
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:
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:
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:
cd /var/www/database-kesiswaan
php artisan storage:link
php artisan optimize:clear
Restore .env
Kalau perlu mengembalikan .env:
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
.envbenarphp artisan optimize:cleardijalankanphp artisan storage:linkvalid- halaman login bisa dibuka
- data siswa muncul
- preview/download dokumen berjalan
- portal publik berjalan normal
Rekomendasi Operasional
- Gunakan backup penuh harian.
- Simpan backup di disk/partisi yang cukup longgar.
- Kalau memungkinkan, sinkronkan backup ke lokasi kedua (server lain / external storage).
- Uji restore minimal sesekali, jangan hanya percaya backup berhasil dibuat.
- Lindungi folder backup karena berisi data sensitif dan kemungkinan salinan
.env.
Catatan Keamanan
- Folder backup bisa mengandung data sensitif.
- Jangan expose
/var/backups/database-kesiswaanke web. - Jangan commit backup ke GitHub.
- Jangan berikan izin baca sembarangan ke file backup
.env.