cPanel: Script Backup Database MySQL Mudah

Terkadang melakukan restore dari backup terasa sangat sulit dan terasa lama, karena bagi sebagian orang pasti akan menggunakan fitur cPanel Built-in Backup cPanel yang sudah terpasang dan mudah di konfigurasi. Tapi tahukah kamu kalau secara teknis, cara ini cukup ribet untuk melakukan restore dan menurut pandangan saya tidak efisien. Mungkin mudah “iya” untuk pelanggan awam.

Dari segi pandang System Administrator, fitur yang otomatis bisa jadi musuh besar. Karena seorang system administrator harus bisa melakukan tiap pekerjaannya se-efisien dan kalau bisa secepat mungkin. Ada plus minus jika kita menggunakan fitur built in backup cPanel. Dari segi web developement, it is OK. Tapi tidak efisien. Lalu harus gimana solusinya?

Kita akan gunakan script yang akan dijalankan menggunakan crontab setiap harinya di jam tertentu, lalu kita atur retensi backup yang ingin di jaga (tidak di delete) hingga berapa hari. Script ini saya kumpulkan dari berbagai sumber dan boleh di edit sesuai kondisi kalian.

Buat path folder

Saya asumsikan kamu pengguna VPS cPanel di /home/user01/ dimana website kamu berada di /home/user01/public_html/ ya. Kita buat dulu folder baru untuk backup misalnya di /home/user01/backup_db

Script Backup

Agar lebih mudah, bisa login menggunakan SSH saja dan ke folder /home/user01/backup_db ya. Kemudian kita buat file name backup_db.sh agar mudah diingat. Bisa menggunakan editor vi atau nano terserah.

cd /home/user01/backup_db/
vi backup_db.sh
#!/bin/bash
cd /home/user01/backup_db/ && mkdir date +%Y_%m_%d && cd date +%Y_%m_%d && for I in $(mysql -e 'show databases' -s --skip-column-names); do mysqldump $I | gzip > "$I.sql.gz"; done
find /home/user01/backup_db/ -mtime +7 -exec rm -rf {} \;

Script di atas artinya, akan melakukan backup MySQL dengan cara membuat folder berdasarkan hari tanggal yang sesuai pada server, kemudian tiap file backupnya akan di gz sehingga ramping size. Kemudian, file backup db tersebut mempunyai retensi 1 minggu. Setelah 1 minggu, maka file backup tanggal terlama akan di hapus, dst.

Nah untuk menghindari file backup_db.sh itu di delete karena retensinya, kita bisa menggunakan fitur immutable.

chattr +i /home/user01/backup_db/backup_db.sh

Pasang Crontab

Kemudian terakhir kita pasang crontab. Kemudian kita sesuaikan jam berapa script ini akan dijalankan. Biasanya rekomendasi saya untuk running backup database adalah malam hari atau pagi hari sekali. Namun lebih dominan jam 21.00 WIB. Kamu bisa ubah sesuka hati.

crontab -e

Lalu isikan

0 21 * * * sh /home/user01/backup_db/backup_db.sh > /dev/null 2>&1

Secara otomatis backup script database tersebut akan berjalan pada jam 21.00 WIB dengan waktu yang sama seperti server. Jadi pastikan server kamu sudah di set waktunya ke zona waktu yang diinginkan. Keseringan waktu server di set masih default (EST atau UTC) jadi malah mengacaukan jadwal backup dan development website kamu.

Semoga membantu ya! Jangan lupa share dan bagikan, dan cantumkan link ini =D

Leave a Reply

Your email address will not be published. Required fields are marked *