Archive for April 17th, 2010

Script Auto Backup Database MySQL pada cPanel

Kemarin sempat browsing cara backup database MySQL lewat Cron Jobs yang tersedia pada linux dan disediakan juga di cPanel. Ternyata langkah yang harus dilakukan tidak terlalu sulit. Bisa langsung menggunakan perintah yang langsung di tulis di Cron Jobs atau dengan cara membuat script. Script yang saya buat disini menggunakan Shell/Bash.

Oke langsung saja.

    1. Terlebih dahulu sebuah buatlah folder backup pada user yg bersangkutan
    2. Kemudian buatlah script untuk backup database MySQL. Disini saya tuliskan script lengkap yang telah saya buat dan nanti akan saya jelaskan satu persatu.
#!/bin/sh
tanggal=`date '+%Y%m%d_%H%M%S'`;
path="/home/user/backup";
find $path/ -mtime +2 -type f -exec rm -rf {} \;
sleep 30;
mysqldump -u userdb -ppassdb namadb | gzip > $path/namadb_$tanggal.gz
    1. Simpan script tersebut dan berilah nama backup.sh
    2. Upload dan letakkan file tersebut pada direktori /bin pada cPanel.
    3. Ubah permission nya menjadi 755.
    4. Masuk ke Cron Jobs, pada menu Add New Cron Job, kemudian setting waktu yang diinginkan untuk melakukan backup.
    5. Pada form Command, masukkan perintah
sh /home/user/bin/backup.sh
  1. Klik tombol “Add New Cron Job”.
  2. Untuk mencoba apakah script yang kita buat berjalan atau tidak, sebaiknya setting waktu waktu eksekusi di Cron Jobs tadi menjadi “Every Minute”, nanti jika script nya sudah berjalan dengan lancar baru ubah lagi sesuai dengan yang diinginkan.

Penjelasan Script

tanggal=`date '+%Y%m%d_%H%M%S'`;

Adalah variabel yang mengambil tanggal pada waktu script di eksekusi, sehingga nama database akan selalu berbeda, sesuai dengan tanggal dan jam backup.

path="/home/user/backup";

Folder dimana database hasil backup akan di simpan.

find $path/ -mtime +2 -type f -exec rm -rf {} \;

Script diatas berfungsi untuk mencari file di dalam folder $path (/home/user/backup) yang mempunyai umur lebih dari 2 hari dari sekarang. Jika file yang dimaksud ditemukan, kemudian file tersebut di delete. Silahkan ubah +2 sesuai dengan kebutuhan anda.

sleep 30;

Digunakan untuk menunggu waktu delete dan waktu backup, supaya tidak berbarengan. 30 adalah dalam detik. Mungkin script ini tidak diperlukan jika database yang didelete kecil atau sedikit. Tapi jika database yang akan didelete besar dan banyak, sebaiknya script ini ditambahkan supaya tidak terlalu memberatkan server.

mysqldump -u userdb -ppassdb namadb | gzip > $path/namadb_$tanggal.gz

mysqldump adalah perintah untuk melakukan backup pada database MySQL. Gantilah userdb, passdb dan namadb sesuai dengan user, password dan database anda. gzip digunakan untuk melakukan kompresi database. Anda juga diperbolehkan untu menggunakan jenis kompresi lain seperti zip, rar dll.

Semoga bermanfaat.

%d bloggers like this: