Cara Backup Database MySQL Otomatis Dengan Crontab/Cronjob di Linux Ubuntu

Dalam tutorial ini akan membahas bagaimana cara untuk membackup database mysql otomatis di server secara berkala, baik harian, mingguan atau bulanan? Memang membackup database itu sangat penting, untuk menjaga-jaga jika di kemudian hari terjadi sesuatu yang tidak diinginkan
pada server, contoh kasus beratnya, server terbakar.

Jika terjadi kerusakan pada server, tentu saja data yang ada di dalamnya pun ikut rusak bahkan hangus. Hal ini yang bayak dihindari oleh administrator database, jadi untuk mengamankannya adalah dengan cara membackup database secara berkala.

Namun dalam prakteknya seringkali banyak yang lupa untuk membackup databasenya, meskipun sudah terjadwal. Solusinya adalah dengan cara membackup otomatis by system, untuk kasus ini adalah menggunakan system atau OS Ubuntu.

Di OS Ubuntu ada fitur namanya crontab atau cronjob, crontab ini dapat mengeksekusi script-script dalam waktu tertentu sesuai yang disetting pengguna mau kapan sscript tersebut dieksekusi.

Dalam hal ini kita akan memberitahu cara untuk menjalankan script untuk membackup database mysql secara otomatis pada jam tertentu, baik setiap hari, minggu ataupun setiap bulan.

Jika kamu belum tahu cara install MySQL, kamu bisa baca caranya di postingan cara install mysql.

Cara Backup Database Mysql Otomatis dengan Crontab/Cronjob


Untuk menjalankan backup database mysql secara otomatis, kamu harus membuat script bash terlebih dahulu. Diakalin.com kasih contoh scriptnya di bawah, dalam script ini database yang di backup akan di simpan di local system kamu, dalam contoh ini adalah Linux Ubuntu.

Script ini juga akan menghapus data sebelumya, misal di script di setting BACKUPRETAINDAYS= 30 maka, maka data yang sudah 30 hari sampai hari sekarang akan otomatis dihapus untuk menghemat sistem penyimpanan. Kamu juga bisa mengubahnya, misalnya BACKUPRETAINDAYS=7 untuk penghapusan database yag sudah seminggu. Atau berapapun settingannya bisa disesuaikan tergantung kebutuhan, dan di bawah ini adalah scriptnya.

Untuk menggunakan script ini, tahapannya adalah:

  • Buat file bash berekstensi .sh dengan editor text seperti nano, vim atau kalau di windows bisa menggunakan notepad.
  • Kemudian copykan script berikut ke file tadi, dan kasih nama misalnya db_backup_mysql.sh
  • Simpan di local directori, contohnya /var/backup_database/db_backup_mysql.sh
#!/bin/bash

# Script backup MySQL Database
##################### Start Script #############################

export PATH=/bin:/usr/bin:/usr/local/bin
TGL_HARI_INI=`date +"%d%b%Y"`

################################################################
########### Update dengan informasi database kamu  #############

BACKUP_PATH='/var/backup_database'
MYSQL_HOST='localhost'
MYSQL_PORT='3306'
MYSQL_USER='root'
MYSQL_PASSWORD='password_saya'
NAMA_DATABASE='nama_database_saya'
JML_HARI_DEL_BACKUP=7   ## Jumlah hari database tetap di local system, sebelum dihapus otomatis

######################## Buat Direktori #########################
mkdir -p ${BACKUP_PATH}/${TGL_HARI_INI}
#################################################################

echo "Backup database - ${NAMA_DATABASE} dimulai"

#################################################################
# Untuk membackup database dengan ekstensi file sql.gz kamu bisa menggunakan script berikut
# ${NAMA_DATABASE} | gzip > ${BACKUP_PATH}/${TGL_HARI_INI}/${NAMA_DATABASE}-${TGL_HARI_INI}.sql.gz
#################################################################

mysqldump -h ${MYSQL_HOST} \
   -P ${MYSQL_PORT} \
   -u ${MYSQL_USER} \
   -p${MYSQL_PASSWORD} \
   ${NAMA_DATABASE} > ${BACKUP_PATH}/${TGL_HARI_INI}/${NAMA_DATABASE}-${TGL_HARI_INI}.sql

if [ $? -eq 0 ]; then
  echo "Database berhasil dibackup."
else
  echo "Error ketika backup database"
fi


## Hapus backup database yg lebih dari {JML_HARI_DEL_BACKUP} hari ###

DB_TGL_DEL=`date +"%d%b%Y" --date="${JML_HARI_DEL_BACKUP} hari yang lalu"`

rm -rf ${BACKUP_PATH}/${DB_TGL_DEL}

######################### Akhir Script ###########################
  • Setelah file bash dibuat atau di download dan kemudian di simpan di direktori local sebagai contoh di /var/backup_database/db_backup_mysql.sh kemudianset permission agar berjalan dengan baik scriptnya dengan command berikut, jalankan command berikut di command line.
$ chmod +x /var/backup_database/db_backup_mysql.sh

Membuat schedule Untuk Menjalankan Script di Crontab


Sekarang buat schedule untuk menjalankan script yang telah dibuat tadi di crontab, caranya buka command line kemudian edit crontab server kamu dengan mengirim perintah crontab -e di command line.

image by cronjob

Makan akan muncul isi dari file cron, kemudian buat schedulenya, sebagai contoh kita akan buat schedule untuk backup database harian pada jam ternetu misalnya kita set jam 23.59, maka script akan seperti berikut.

59 23 * * 0-6 root /var/backup_database/db_backup_mysql.sh

Keterangan script :

  1. 59 = menit
  2. 23 = jam
  3. * = tanggal (*) artinya setiap tanggal, jika ingin tanggal tertentu, kamu bisa set misal 10, jadi setiap tanggal 10 akan dieksekusi scriptnya.
  4. * = bulan (*) artinya setiap bulan, sama dengan tanggal, jika ingin bulan tertentu, kamu bisa set misal 2, jadi setiap bulan Februari akan dieksekusi scriptnya.
  5. 0-6 = hari (0 = hari Minggu) 0-6 artinya setiap hari akan dieksekusi, jika ingin setiap sabtu, kamu bisa set ke angka 6.
  6. root = Jika bermasalah coba hilangkan.
  7. /backup/mysql-backup.sh = lokasi script backup

Buat kamu yang tidak mau ribet setting schedule crontab atau mau sekalian belajar format schedule crontab bisa kunjungi crontab.guru.

Setelah setting command untuk schedule backupnya di crontab, kemudian sava dan exit. Untuk mengecek apakah berhasil atau tidaknya, kamu bisa coba ganti jamnya ke jam terdekat sekarang, misalnya sekarang jam 10:50, coba kamu set crontab commandnya ke jam 10:52, dan lihat hasilnya.

Penutup


Pastikan cek secara berkala apakah database benar-benar terbackup secara otomatis, untuk menjaga-jaga terjadi gangguan pada sistem.

Demikian cara membackup database mysql secara otomatis dengan crontab.
Semoga Bermanfaat.

loading...

LEAVE A REPLY

Please enter your comment!
Please enter your name here

6 + 11 =