Files
database-kesiswaan/docs/BACKUP_RESTORE.md
T

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
  • .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.