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.
Artikel Terkait
Cara Membuat Sistem Approval Bertingkat di Laravel
Sistem approval bertingkat pada Laravel memungkinkan sebuah pengajuan melewati beberapa tahap persetujuan sebelum dinyatakan selesai. Sistem ini cocok untuk pengajuan cuti, pembelian, reimbursement, dokumen, anggaran, hingga proses bisnis yang membutuhkan persetujuan beberapa level.
Cara Mengatasi Database Connection Refused pada Laravel
Error “Database Connection Refused” pada Laravel biasanya terjadi ketika aplikasi tidak dapat terhubung ke server database. Penyebabnya dapat berasal dari konfigurasi .env, database yang belum berjalan, port yang salah, firewall, Docker, atau konfigurasi server. Berikut langkah sederhana untuk menemukan dan mengatasinya.
Cara Membuat Export Excel dengan Filter Tanggal di Laravel
Export Excel dengan filter tanggal memungkinkan pengguna mengunduh data berdasarkan periode tertentu. Fitur ini cocok untuk laporan transaksi, penjualan, pasien, pembayaran, absensi, dan data operasional lainnya di aplikasi Laravel.