Products & Services Submit a ticket My Tickets
Selamat datang
Masuk  Mendaftar

Cara Backup MySQL Otomatis Menggunakan Cron Job

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.

sudo apt update sudo apt install cron
  • Arch Linux

Di arch linux, terdapat beberapa aplikasi yang mengimplementasikan fungsi cron, di antaranya adalah: cronie dan fcron. Anda dapat  memasang salah satunya saja.

sudo pacman -S cronie

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.

date '+%Y-%m-%d@%H:%M'

UNtuk perintah di atas akan menghasilkan output berikut:

2020-01-25@21:52

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:

mysqldump -u [username] -p[password] [nama-db] > [output-db]

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:

mysqldump -u root -p12345 kampus_db > kampus_db_`date '+%Y-%m-%d@%H:%M'`.sql

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:

crontab -e

Lalu pada baris paling bawah, tambahkan perintah berikut:

0 * * * * mysqldump -u root -p12345 kampus_db > kampus_db_`date '+%Y-%m-%d@%H:%M'`.sql

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:

0 0 * * * mysqldump -u root -p12345 kampus_db > kampus_db_`date '+%Y-%m-%d@%H:%M'`.sql

Misalkan setiap jam 2 pagi

Untuk setiap jam 02:00 pagi, anda atur menit-nya dengan angka 0, dan jam-nya menjadi angka 2:

0 2 * * * mysqldump -u root -p12345 kampus_db > kampus_db_`date '+%Y-%m-%d@%H:%M'`.sql

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:

mysqldump -u root -p12345 kampus_db | gzip > kampus_db_`date '+%Y-%m-%d@%H:%M'`.sql.gz

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

ls

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.

kampus_db_2020-01-01@09:14.sql  kampus_db_2020-01-09@09:06.sql kampus_db_2020-01-02@09:14.sql  kampus_db_2020-01-10@09:06.sql kampus_db_2020-01-03@09:14.sql  kampus_db_2020-01-11@08:54.sql kampus_db_2020-01-04@09:14.sql  kampus_db_2020-01-12@08:54.sql kampus_db_2020-01-05@09:06.sql  kampus_db_2020-01-13@08:54.sql kampus_db_2020-01-06@09:06.sql  kampus_db_2020-01-14@08:54.sql kampus_db_2020-01-07@09:14.sql  kampus_db_2020-01-15@08:54.sql kampus_db_2020-01-08@01:06.sql

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.

ls | sort -dr

Output:

kampus_db_2020-01-15@08:54.sql kampus_db_2020-01-14@08:54.sql kampus_db_2020-01-13@08:54.sql kampus_db_2020-01-12@08:54.sql kampus_db_2020-01-11@08:54.sql kampus_db_2020-01-10@09:06.sql kampus_db_2020-01-09@09:06.sql kampus_db_2020-01-08@01:06.sql kampus_db_2020-01-07@09:14.sql kampus_db_2020-01-06@09:06.sql kampus_db_2020-01-05@09:06.sql kampus_db_2020-01-04@09:14.sql kampus_db_2020-01-03@09:14.sql kampus_db_2020-01-02@09:14.sql kampus_db_2020-01-01@09:14.sql

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.

ls | sort -dr | tail -n +11

Output:

kampus_db_2020-01-05@09:06.sql kampus_db_2020-01-04@09:14.sql kampus_db_2020-01-03@09:14.sql kampus_db_2020-01-02@09:14.sql kampus_db_2020-01-01@09:14.sql

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.

ls | sort -dr | tail -n +11 | xargs rm

5. Hapus file secara rutin

Untuk menghapus file secara rutin, tambahkan perintah di atas di dalam crontab.

0 0 * * * ls | sort -dr | tail -n +11 | xargs rm

Apakah jawaban ini bermanfaat? Ya Tidak

Send feedback
Maaf kami tidak bisa membantu. Bantu kami mengembangkan artikel ini dengan umpan balik Anda.