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.
- Terlebih dahulu sebuah buatlah folder backup pada user yg bersangkutan
- 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
- Simpan script tersebut dan berilah nama backup.sh
- Upload dan letakkan file tersebut pada direktori /bin pada cPanel.
- Ubah permission nya menjadi 755.
- Masuk ke Cron Jobs, pada menu Add New Cron Job, kemudian setting waktu yang diinginkan untuk melakukan backup.
- Pada form Command, masukkan perintah
sh /home/user/bin/backup.sh
- Klik tombol “Add New Cron Job”.
- 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.
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
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.
Ukrey mas, terima kasih banyak… Scriptnya dah sesuai dengan GMT+7
Terima kasih banyak ya mas….
Yup. sama-sama.
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… ^_^
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 😀
saya cari di cpanel, direktori /bin tidak ada ya? mohon pencerahan
Sudah buka File Manager boss?
Kalo tetep tidak ada, bisa ditaruh disembarang folder/direktori. Asalkan pada saat manggil menggunakan cronjob direktori nya benar.
terimakasih script backup databasesnya, saya mau coba memakainya.
Script tersebut juga saya sharing di komunitas Linux Pekalongan. Disana ada beberapa diskusi. Ini link nya :
http://pekalongan.linux.or.id/2010/04/26/script-auto-backup-database-mysql-pada-cpanel/