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.

Advertisement
    • kuntosa
    • May 18th, 2017

    Terima kasih mas, tutorialnya sangat jelas dan bermanfaat…
    pertanyaan saya sekarang…
    bagaimana cara modifikasi script ini spy bisa melakukan backup beberapa database sekaligus dan dikompres menjadi 1 file yang sama?

    mohon bantuannya mas dan terima kasih

      • Ofidz Al-akadarnya
      • June 7th, 2017

      Maaf baru sempat balas.
      Supaya backup semua database, bisa menambahkan parameter –all-databases. Tapi nantinya semua database akan menjadi 1 file SQL, nah jika diinginkan file SQL nya terpisah masing-masing DB, harus pake looping.

  1. Ukrey mas, terima kasih banyak… Scriptnya dah sesuai dengan GMT+7
    Terima kasih banyak ya mas….

      • Ofidz Al-akadarnya
      • December 19th, 2011

      Yup. sama-sama.

  2. Terima kasih banyak mas Ofidz, sudah sukses (sebenernya dah sukses sejak beberapa waktu lalu dengan mengikuti petunjuk dari http://pekalongan.linux.or.id/2010/04/26/script-auto-backup-database-mysql-pada-cpanel/ tapi ga tau kenapa sampe sekarang postingan saya ga muncul disana :mumet:)
    Memang benar, untuk yang menggunakan windows, sebaiknya jangan langsung COPAS script tersebut langsung ke text editor. Dan sangat sangat sangat dianjurkan untuk meng-COPAS script tersebut langsung ke text editor yang disediakan pada hosting. Sebab kalo diCOPAS ke text editor windows, nantinya akan ada beberapa error terutama pada bagian tanda baca A.K.A apostrof alias tanda petik.

    Nah sekarang saya ada sedikit pertanyaan buat mas Ofidz. Di script tersebut, pada bagian **tanggal=`date ‘+%Y%m%d_%H%M%S’`;** itu kan formatnya GMT+0 ya, jadi ga sesuai dengan jam yang ada di negara ini (GMT+7) nah gimana caranya biar jamnya bisa sesuai dengan GMT+7 ya mas…??? Mohon pencerahannya yaa mas… ^_^

      • Ofidz Al-akadarnya
      • December 19th, 2011

      Maaf mas baru sempat bales.
      Yang di http://pekalongan.linux.or.id. Adminnya pada nggak ada, sudah numpuk tuh komentar yang pending pada belum di approve.
      Untuk yang masalah Timezone GMT+7. Coba seperti ini:
      tanggal=`date ‘+%Y%m%d_%H%M%S’ --date='+7 hour'`;

      Ditunggu report nya 😀

    • sarjono kesar
    • January 30th, 2011

    saya cari di cpanel, direktori /bin tidak ada ya? mohon pencerahan

      • Ofidz Al-akadarnya
      • January 31st, 2011

      Sudah buka File Manager boss?
      Kalo tetep tidak ada, bisa ditaruh disembarang folder/direktori. Asalkan pada saat manggil menggunakan cronjob direktori nya benar.

  3. terimakasih script backup databasesnya, saya mau coba memakainya.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: