Backup database otomatis tiap malam dengan laravel – Saat kita membuat sebuah sistem atau aplikasi, ada beberapa point penting yang perlu kita lakukan untuk menjaga kehidupan dari sistem tersebut..
Salah satunya yaitu melakukan jadwal rutin backup database secara berkala..
Ini penting, kenapa? karena ketika suatu saat terdapat crash terhadap database nya, kita masih menyimpan database backupan nya..
Untung nya untuk proses backup database ini, kita tidak perlu melakukan nya secara manual, kita bisa gunakan sebuah library/package yang bernama spatie laravel-backup, yang dipadukan dengan cron job, maka kita bisa melakukan backup data secara otomatis tiap malam..
Langsung saja mari kita praktekkan..
Install Laravel
Oh iyaa, sebelum nya kalian perlu melakukan instalasi laravel nya terlebih dahulu..
Disini saya menggunakan Laravel versi 8, dan juga php versi 7.4..
Instalasi Library spatie laravel-backup
Karena disini saya menggunakan php versi 7.4, dan juga laravel versi 8, maka library yang bisa saya install yaitu spatie laravel-backup versi 6..
Untuk requirements nya bisa kalian cek disini..
Kalau kalian menggunakan versi php yang lebih tinggi, semisal php 8, kalian juga bisa menginstall library spatie nya dengan versi yang lebih tinggi juga..
Untuk langkah-langkah penggunaan nya kurang lebih sama saja dengan versi2 yang lain..
Untuk cara instalasi nya, kalian perlu menjalankan perintah berikut:
composer require spatie/laravel-backup
Dalam proses instalasi nya, package ini sudah otomatis meregistrasikan sebuah service provider kedalam aplikasi laravel kita..
Kemudian untuk mempublish file config nya, kalian perlu menjalankan perintah berikut:
php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
Setelah mempublish file config nya, maka kita akan mendapatkan sebuah file konfigurasi baru yang berada di dalam folder “../config/backup.php”..
Didalam file tersebut, kita dapat melihat semua pengaturan dari library ini, mulai dari koneksi database mana yang ingin kita pakai, peletakan file backupan nya, dan sebagai nya..
Cara backup data nya
Nah setelah proses instalasi nya selesai, sekarang gimana cara nya untuk menjalankan proses backup data nya??
Gampang banget, kita hanya perlu menjalankan 1 perintah artisan saja, maka proses nya akan langsung berjalan, jalankan perintah berikut:
php artisan backup:run
Tunggu beberapa saat sampai muncul notif Backup Completed!.. contoh nya seperti berikut:
Kalau kalian ingin melihat file hasil backupan nya, secara default bisa kalian temukan didalam folder “../storage/app/laravel”..
Kalo kamu buka isi file nya, yang dibackup bukan hanya database nya saja, akan tetapi folder project kita atau semua file kodingan kita juga akan ikut terbackup..
Keren kan?
Memberikan password pada file hasil backupan nya
Setelah berhasil membackup, maka kita akan diberikan sebuah file hasil dari backupan nya dalam format .zip..
Kalau kamu ingin memberikan password pada file tersebut agar tidak dapat dibuka oleh sembarang orang, caranya gampang..
Kalian hanya perlu menambahkan 1 variable baru pada file .env dengan nama BACKUP_ARCHIVE_PASSWORD..
sebagai contoh:
BACKUP_ARCHIVE_PASSWORD="sangcahaya.id"
Maka nanti ketika file backupan nya ingin di extract, file tersebut akan meminta password terlebih dahulu sebagai otentikasi nya..
Notifikasi email ketika proses backup berhasil dilakukan
Kita juga bisa memberikan notifikasi via email ketika proses backup nya telah berhasil dilakukan..
Cuma syarat nya kalian perlu mempersiapkan mail server nya terlebih dahulu, kalian bisa coba ikuti tutorial nya seperti disini..
Kemudian konfigurasi mail server nya kalian pasang di file .env seperti pada gambar berikut:
Dan pada file konfigurasi “../config/backup.php”.. Kalian perlu menentukan alamat email tujuan nya, notifikasi email nya mau dikirim kemana..
Maka nanti ketika kalian menjalankan lagi proses backup data nya..
php artisan backup:run
Seharusnya di email kalian akan muncul notifikasi bahwasanya proses backup datanya telah berhasil dilakukan, seperti pada contoh berikut:
Sebetulnya, notifikasi email nya bukan hanya saat proses backup nya berhasil dilakukan..
Tapi saat gagal pun juga akan dikirim notifikasi via email..
Mengabaikan folder yang tidak ingin di backup
Ketika kita menjalankan proses backup data, semua database dan folder project kita juga akan dibackup..
Secara default sistem hanya mengabaikan 2 folder saja agar tidak ikut terbackup, yaitu folder vendor dan node_modules..
kalau kalian ingin menambahkan folder-folder lain yang ingin diabaikan, kalian tinggal catat saja didalam file “../config/backup.php”..
Kalian tambahkan pada bagian “exclude”.. Contoh nya seperti pada gambar berikut:
Misalkan kalian ingin mengabaikan folder public, maka tambahkan 1 key baru base_path(‘public’),
Membersihkan file backupan nya
Kalau kita melakukan backup data secara terus menerus, maka pastinya datanya akan menumpuk, dan itu akan lumayan memakan resources server yang besar..
Untung nya library ini sudah mengantisipasi untuk hal seperti itu, hanya dengan menjalankan 1 perintah artisan, kita bisa membersihkan data backupan nya..
php artisan backup:clean
Tapi data yang dibersihkan bukanlah semua data, melainkan hanya data backupan yang sudah lama saja, keren kan?
Jadi secara default, perintah diatas akan menghapus file backupan yang sudah melebihi dari 7 hari..
Kalian dapat melihat konfigurasi nya pada file “../config/backup.php” pada bagian cleanup..
Backup data otomatis tiap malam dengan Cron Job Cpanel
nah sekarang gimana cara nya agar proses backup data ini bisa berjalan secara otomatis tiap malam?
Jawaban nya yaitu dengan menggunakan cron job..
Bagi kalian yang belum memahami tentang cara kerja cron job, atau bagaimana cara membuat nya, kalian bisa baca postingan saya sebelum nya tentang “Cara membuat cron job task schedule pada Laravel”..
Untuk menambahkan command schedule nya, kita perlu menambahkan script/perintah berikut didalam file “../app/Console/Kernel.php”..
// app/Console/Kernel.php protected function schedule(Schedule $schedule) { $schedule->command('backup:clean')->daily()->at('01:00'); $schedule->command('backup:run')->daily()->at('02:00'); }
Pada schedule diatas, saya menjalankan 2 perintah..
Pertama saya menjalankan perintah backup:clean tiap jam 1 malam, ini digunakan untuk membersihkan data backupan yang lama, secara default, ketika kita menjalankan perintah ini, data backupan yang sudah lebih dari 7 hari akan dihapus..
Kemudian yang kedua yaitu menjalankan perintah backup:run tiap jam 2 malam..
Perintah ini adalah perintah untuk menjalankan proses backup data nya, jadi kita sudah tidak perlu lagi menjalankan nya secara manual via terminal, tapi akan otomatis di eksekusi oleh cron job..
Sekarang kita coba buat cron job nya terlebih dahulu didalam cpanel..
Kalian buat seperti berikut:
Pada bagian Common Settings, kalian wajib memilih once per minute..
Apa beda nya frekuensi waktu yg ada di cron job cpanel dengan frekuensi waktu yang ada di aplikasi laravel nya?
Kalau frekuensi waktu yang didalam aplikasi laravel kita adalah untuk menentukan jadwal waktu task schedule nya..
Sementara frekuensi waktu yang ada pada cron job cpanel nya digunakan untuk membaca file kernel.php nya, oleh karena itu wajib kita set once per minute agar kemungkinan tidak ada task yang terlewati..
Kemudian pada bagian inputan command kalian isi seperti berikut, kita mengarahkan nya kedalam file artisan:
/usr/local/bin/php /home/u8939843/aplikasi_laravel_ku/artisan schedule:run >> /dev/null 2>&1
Yang perlu kalian ubah adalah pada bagian “../home/u8939843/aplikasi_laravel_ku/artisan..”, silahkan kalian arahkan ke path folder aplikasi laravel nya..
Maka nanti seharusnya si cron job akan menjalankan perintah backup secara otomatis, dan kamu sudah bisa melihat hasilnya seperti pada gambar berikut:
Diatas, file backupan nya terbentuk sesuai dengan yang sudah kita jadwalkan didalam file kernel.php nya, yaitu setiap jam 2 malam..
Mudah bukan? Semoga bermanfaat.. Terima kasih..
Mempertahankan 3 file backupan saja
Terkadang masih banyak yang bingung dengan konfigurasi dari library nya, salah satu contoh nya adalah bagaimana jika kita hanya ingin mempertahankan 3 file backupan saja?
Kalian hanya perlu melakukan konfigurasi seperti berikut:
Support Us
Jika artikel ini bermanfaat untuk kamu, membantu menyelesaikan masalah yang sedang kamu hadapi, kamu juga bisa dukung kami dengan mengunjungi halaman berikut: https://saweria.co/sangcahayaid
Terima kasih..
[…] TrendingBackup Database Otomatis Tiap Malam Dengan Laravel Spatie Backup […]