Cara Membuat Backup Database Laravel Otomatis Setiap Hari
Mengapa Database Perlu Dibackup?
Database menyimpan data penting seperti:
Data pengguna.
Transaksi.
Produk.
Pelanggan.
Pembayaran.
Pengaturan aplikasi.
Jika server mengalami kerusakan, backup dapat digunakan untuk memulihkan data.
Untuk aplikasi bisnis, backup sebaiknya dilakukan secara rutin dan disimpan di lokasi yang berbeda dari server utama.
Menggunakan Laravel Backup
Salah satu solusi yang banyak digunakan adalah package Laravel Backup dari Spatie.
Install:
composer require spatie/laravel-backupKemudian publish konfigurasi:
php artisan vendor:publish \
--provider="Spatie\Backup\BackupServiceProvider"Setelah itu akan tersedia konfigurasi:
config/backup.phpKonfigurasi ini dapat digunakan untuk menentukan database, file, storage, dan pengaturan backup lainnya.
Menjalankan Backup Manual
Sebelum membuat backup otomatis, lakukan pengujian terlebih dahulu:
php artisan backup:runJika berhasil, Laravel akan membuat file backup sesuai konfigurasi.
Untuk melihat daftar backup:
php artisan backup:listBackup juga dapat dibersihkan menggunakan:
php artisan backup:cleanMembuat Backup Setiap Hari
Laravel menyediakan Scheduler untuk menjalankan perintah secara otomatis.
Contohnya:
Schedule::command('backup:run')
->dailyAt('02:00');Kemudian backup dapat dibersihkan secara berkala:
Schedule::command('backup:clean')
->dailyAt('03:00');Dengan konfigurasi tersebut:
02:00 → Backup database
03:00 → Bersihkan backup lamaWaktu dapat disesuaikan dengan kebutuhan aplikasi.
Menggunakan Cron Job
Scheduler Laravel tetap membutuhkan satu cron job pada server.
Contohnya:
* * * * * cd /var/www/app && php artisan schedule:run >> /dev/null 2>&1Cron tersebut menjalankan Laravel Scheduler setiap menit.
Laravel kemudian menentukan task mana yang memang sudah waktunya dijalankan.
Pada cPanel, cron dapat ditambahkan melalui:
cPanel
↓
Cron Jobs
↓
Add New Cron JobKemudian masukkan:
* * * * * cd /home/username/public_html && php artisan schedule:run >> /dev/null 2>&1Sesuaikan lokasi project dengan server yang digunakan.
Backup Database Saja
Jika hanya membutuhkan backup database, proses dapat dibuat lebih sederhana menggunakan command database seperti mysqldump atau pg_dump.
Contoh MySQL:
mysqldump \
-u username \
-p database_name \
> database_backup.sqlContoh PostgreSQL:
pg_dump \
-U username \
database_name \
> database_backup.sqlUntuk aplikasi production, password database sebaiknya tidak ditulis langsung di command atau script yang dapat dibaca pengguna lain.
Menyimpan Backup di Server Berbeda
Jangan hanya menyimpan backup di server aplikasi.
Contohnya:
Server Laravel
↓
Backup
↓
Object StorageAlternatif penyimpanan:
Amazon S3.
Google Cloud Storage.
S3-compatible storage.
Server backup terpisah.
NAS.
Cloud storage perusahaan.
Jika server utama rusak, backup masih tersedia di lokasi lain.
Strategi Backup 3-2-1
Untuk data penting, salah satu pendekatan yang dapat digunakan adalah konsep 3-2-1:
3 salinan data
2 media penyimpanan berbeda
1 salinan berada di lokasi berbedaContohnya:
Database Production
↓
Backup Server
↓
Object StorageStrategi ini mengurangi risiko kehilangan seluruh salinan ketika terjadi kerusakan pada satu lokasi.
Backup Bukan Berarti Sudah Bisa Restore
Kesalahan yang sering terjadi adalah hanya membuat backup tanpa pernah melakukan pengujian restore.
Backup harus diuji secara berkala.
Contohnya:
Backup
↓
Download
↓
Restore ke database testing
↓
Periksa dataPastikan:
File backup dapat dibuka.
Database dapat direstore.
Data transaksi tersedia.
Struktur tabel benar.
Relasi database tetap berjalan.
Backup yang tidak pernah diuji belum tentu dapat digunakan ketika terjadi masalah.
Mengatur Retensi Backup
Jangan menyimpan backup selamanya tanpa batas.
Misalnya:
Backup harian → 14 hari
Backup mingguan → 8 minggu
Backup bulanan → 12 bulanStrategi retensi dapat disesuaikan dengan kebutuhan bisnis dan kapasitas penyimpanan.
Tujuannya adalah menjaga keseimbangan antara keamanan data dan biaya storage.
Backup File Laravel
Database bukan satu-satunya data penting.
Aplikasi juga dapat memiliki:
storage/app
storage/uploads
Dokumen
Foto
File pelanggan
File invoiceJika file tersebut tidak berada pada object storage, file juga perlu dibackup.
Contoh:
Database
+
File aplikasi
=
Backup lengkapMonitoring Backup
Backup otomatis sebaiknya tidak berjalan tanpa monitoring.
Pastikan sistem dapat mendeteksi:
✓ Backup berhasil
✗ Backup gagal
✗ Storage penuh
✗ Database tidak dapat diakses
✗ Upload backup gagalNotifikasi dapat dikirim melalui email, Slack, WhatsApp, atau sistem monitoring internal.
Contoh Arsitektur Backup
Untuk aplikasi Laravel production:
Laravel Server
↓
Database
↓
Backup Process
↙ ↘
Backup Server Object StorageKemudian Laravel Scheduler menjalankan proses secara otomatis setiap hari.
Kesalahan yang Perlu Dihindari
Hanya Menyimpan Backup di Server Utama
Jika server rusak, backup juga dapat ikut hilang.
Tidak Menguji Restore
File backup belum tentu dapat direstore dengan sempurna.
Tidak Mengatur Retensi
Storage dapat penuh karena backup terus bertambah.
Tidak Mengenkripsi Backup
Backup dapat berisi data pelanggan dan informasi bisnis yang sensitif.
Tidak Memantau Status Backup
Backup yang gagal selama berhari-hari dapat tidak diketahui sampai terjadi masalah.
Backup Database Laravel Bersama Ovla Media
Ovla Media dapat membantu bisnis membangun sistem backup dan recovery untuk:
Aplikasi Laravel.
Database MySQL.
Database PostgreSQL.
VPS.
cPanel.
Server multi-aplikasi.
Sistem Point of Sales.
Sistem klinik.
Sistem inventory.
Aplikasi bisnis custom.
Backup dapat dikombinasikan dengan scheduler, cloud storage, monitoring, retensi otomatis, dan pengujian restore.
Kesimpulan
Backup database Laravel dapat dibuat otomatis menggunakan Laravel Scheduler dan cron job.
Alur sederhananya:
Laravel Scheduler
↓
Backup Database
↓
Simpan Backup
↓
Upload ke Storage
↓
Cleanup Backup LamaUntuk aplikasi production, jangan hanya membuat backup. Pastikan backup disimpan di lokasi berbeda, memiliki retensi yang jelas, dipantau, dan diuji secara berkala.
Dengan sistem backup yang teratur, risiko kehilangan data akibat kerusakan server atau kesalahan operasional dapat dikurangi secara signifikan.
Butuh implementasi untuk kebutuhan bisnis?
OVLA Media membantu pengembangan dan optimasi aplikasi web, integrasi sistem, serta solusi Laravel sesuai kebutuhan perusahaan Anda.
Artikel Terkait
Cara Mencegah Transaksi Ganda dari Webhook Payment Gateway
Webhook payment gateway dapat terkirim lebih dari satu kali karena retry atau gangguan jaringan. Jika tidak ditangani dengan benar, satu pembayaran dapat tercatat sebagai transaksi ganda. Laravel dapat mencegah masalah ini dengan idempotency, unique transaction ID, database transaction, dan validasi status pembayaran.
Cara Membuat Login Menggunakan Email atau Username di Laravel
Laravel dapat dibuat agar pengguna login menggunakan email atau username dalam satu form. Dengan validasi yang tepat, sistem dapat mencari akun berdasarkan salah satu identitas tersebut tanpa membuat halaman login terpisah.
Cara Membuat Webhook Laravel yang Aman dengan Signature Verification
Webhook memungkinkan aplikasi menerima data secara otomatis dari layanan lain, seperti payment gateway, WhatsApp, marketplace, atau sistem pihak ketiga. Agar webhook tidak mudah dipalsukan, Laravel dapat menggunakan signature verification untuk memastikan request benar-benar berasal dari sumber yang dipercaya.