Press "Enter" to skip to content

Backup Database Otomatis Tiap Malam Dengan Laravel Spatie Backup

fadli 1

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:

backup database otomatis tiap malam dengan laravel

Kalau kalian ingin melihat file hasil backupan nya, secara default bisa kalian temukan didalam folder “../storage/app/laravel”..

backup database otomatis tiap malam dengan 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..

backup database otomatis tiap malam dengan laravel

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"

backup database otomatis tiap malam dengan laravel

Maka nanti ketika file backupan nya ingin di extract, file tersebut akan meminta password terlebih dahulu sebagai otentikasi nya..

backup database otomatis tiap malam dengan laravel

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:

backup database otomatis tiap malam dengan laravel

Dan pada file konfigurasi “../config/backup.php”.. Kalian perlu menentukan alamat email tujuan nya, notifikasi email nya mau dikirim kemana..

backup database otomatis tiap malam dengan laravel

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:

backup database otomatis tiap malam dengan laravel

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:

backup database otomatis tiap malam dengan laravel

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 database otomatis tiap malam dengan laravel

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:

backup database otomatis tiap malam dengan laravel

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:

spatie laravel backup

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

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: