Cron Job adalah aplikasi atau layanan yang memungkinkan anda untuk melakukan suatu tugas tertentu secara terjadwal tanpa harus melakukannya secara manual. Misal: Anda ingin melakukan duplikat data dari situs A ke situs B setiap jam 1 malam. Maka anda bisa menggunakan cron job.
Konfigurasi Cron Job dengan crontab
Untuk mengkonfigurasi Cron Job pada linux, dapat menggunakan aplikasi bernama crontab
. Jika anda belum menginstall cron
atau crontab
, anda bisa menginstallnya terlebih dahulu.
Ubuntu
Untuk pengguna ubuntu, dapat langsung install cron
melalui apt
.
Arch Linux
Di arch linux, terdapat beberapa aplikasi yang mengimplementasikan fungsi cron
, di antaranya adalah: cronie
dan fcron
. Anda dapat memasang salah satunya saja.
Atur hasil backup dengan format tanggal dan jam yang jelas
Anda akan menambahkan postfix tanggal dan waktu pada setiap file .sql
dari hasil backup yang di lakukan. Anda bisa mendapatkan informasi tanggal dan jam pada linux dengan mengeksekusi perintah date
. Akan tetapi untuk mengambil format jam dan waktu yang anda inginkan, anda bisa menambahkan parameter setelahnya.
Berikut ini adalah perintah untuk mendapatkan tanggal dan jam pada linux dengan format tanggal-bulan-hari@jam:menit
.
UNtuk perintah di atas akan menghasilkan output berikut:
Output tersebut sesuai dengan waktu ketika perintah date
dieksekusi. Well, karakter :
tidaklah dilarang di Linux. Itu artinya anda bisa menggunakan karakter tersebut baik untuk nama file mau pun untuk nama direktori di linux.
Untuk perintah lengkap mem-backup mysql adalah sebagai berikut:
Katakanlah anda mempunyai variabel:
- username:
root
- password:
12345
- nama db:
kampus_db
- nama output file:
kampus_db_`date '+%Y-%m-%d@%H:%M'`.sql
Maka perintah akhir yang saya eksekusi adalah:
Backup Perjam
Di atas anda telah membuat perintah untuk membackup mysql dengan output nama file yang berisi tanggal dan waktu backup. Sekarang anda akan mengkonfigurasi cronjob
untuk mengeksekusi perintah di atas setiap 1 jam sekali.
Edit crontab
dengan melakukan perintah:
Lalu pada baris paling bawah, tambahkan perintah berikut:
Statement di atas akan menginstruksi cron
untuk membackup database kampus_db
setiap menit ke-0 untuk setiap jam, untuk setiap hari. Alias ia akan mengeksekusi perintah tersebut setiap 1 jam sekali.
Backup Sekali Sehari
Untuk membackup sekali sehari pada pukul tertentu, anda hanya perlu mengisi bagian menit
dan bagian jam
. Sisanya anda isi dengan *
.
Misalkan setiap jam 00:00
Untuk setiap jam 00:00
, anda atur menit
dan jam
-nya menjadi angka 0
:
Misalkan setiap jam 2 pagi
Untuk setiap jam 02:00
pagi, anda atur menit
-nya dengan angka 0
, dan jam
-nya menjadi angka 2
:
Untuk memudahkan konfigurasi waktu, anda bisa mengunjungi crontah.guru. Di sana anda bisa mensimulasikan konfigurasi waktu crontab
langsung via web.
Kompres Hasil Backup dengan Gzip
File hasil backup mysql ukurannya bergantung pada ukuran data anda dalam database. Semakin banyak baris data di dalam database anda , maka hasil backup-nya pun juga akan semakin besar. Untuk mensiasati hal tersebut, anda bisa mengkompresnya menggunakan software Gzip
.
Anda bisa mengganti perintah backup mysql yang sudah anda lakukan di atas menjadi seperti ini:
Hapus file Backup yang lebih dari 10 hari
Jika hasil file backup
anda lebih dari 100MB
perhari. Maka jika berlalu 10 hari, file tersebut akan membengkak lebih dari 1GB
. Jika sebulan, bisa lebih dari 3GB
. Bisa menghabiskan storage
anda untuk hal yang tidak terlalu dibutuhkan.
Untuk menghindari hal tersebut, anda bisa melakukan proses penghapusan data backup yang lebih dari 10 hari terakhir. Karena anda kemungkinan besar hanya membutuhkan data yang paling baru, data yang sudah lama sekali hanya akan memenuhi kapasistas storage jika terus anda simpan.
Berikut adalah langkah-langkah menghapus file backup yang sudah lebih dari 10 hari.
1. List file backup terlebih dahulu
Contoh output. Terdapat 15 file dari tanggal 1 Januari 2020 sampai tanggal 15 Januari 2020. Nantinya anda hanya akan mengambil yang lebih dari 10 file terakhir.
2. Urutkan file secara descending
berdasarkan nama
Urutkan file di atas dengan perintah sort
. Flag -d
menginstruksi agar pengurutan dilakukan berdasarkan dictionary order. Sedangkan flag r
digunakan untuk membalik hasil urutan, alias mengurutkannya dari yang paling belakang atau descending.
Output:
3. Skip file 10 file yang pertama
Anda akan menampilkan file yang lebih dari 10 hari dengan menskip 10 baris pertama dari hasil output perintah sebelumnya. Anda tambahkan perintah tail -n +11
.
Output:
Sekarang anda memiliki 5 file saja dari tanggal 5 Januari 2020 sampai tanggal 1 Januari 2020.
4. Hapus file yang lebih dari 10 hari
Untuk menghapus file yang lebih dari 10 hari. Anda tambahkan xargs rm
pada perintah sebelumnya setelah menambahkan tanda |
pipe.
5. Hapus file secara rutin
Untuk menghapus file secara rutin, tambahkan perintah di atas di dalam crontab
.