Rizal Hans

Membuat Bash file untuk backup database

Untuk membackup database kita dapat menggunakan bash pada server. Mengapa kita menggunakan bash? Kita menggunakan bash karena nantinya kita akan membuat backup ini otomatis berjalan dengan cron.

Untuk membuat file bash silahkan masuk ke ssh dengan aplikasi putty.

Kemudian ketik perintah untuk membuat file bash

vi backupdb.sh

Kemudian insert dan ketikan perintah bash berikut 

#!/bin/sh
# Database yang ingin kita backup 
# Pisahkan dengan spasi untuk tiap database
databases="mydb1 mydb2"
# Waktu saat ini
date=$(date +"%Y-%m-%d")
# User dan password dari database
# Gunakan root supaya lebih enak
user=username
pass=password
# User, password, dan alamat dari FTP servernya
# Untuk folder sesuai selera saja
ftpUser=username
ftpPass=password
ftpHost=ftp.example.com
ftpFolder="backup/"
# Tempat menyimpan database
# Ini di webserver dan bukan di FTP server
bPath="/var/backups/databases"
# Buat folder bPath diatas jika belum ada
if [ ! -d $bPath ]; then
    mkdir -p $bPath
fi
# Hapus file backup di bPath jika umurnya melebihi 3 hari
find $bPath/*.sql.gz -mtime +3 -exec rm {} ;
# Mulai membackup database
for db in $databases; do
    # Nama dari file backupnya
    file=$db-$date.sql.gz
    # Membackup database dengan mysqldump
    echo "Starting to dump the $db database as $file"
    mysqldump --user=$user --password=$pass $db | gzip -9 > $bPath/$file
    # Upload file tadi ke FTP menggunakan CURL
    echo "Starting to upload the $file to FTP server"
    curl --ftp-create-dirs -T $bPath/$file -u $ftpUser:$ftpPass ftp://$ftpHost/$ftpFolder
done
# Clear cache. Hanya untuk KVM, Xen 
# ataupun dedicated server
free && sync && echo 3 > /proc/sys/vm/drop_caches && echo "" && free

Ganti password dan username dengan pada script tersebut sesuai dengan password dan username anda.

Kemudian untuk memastikan file dapat di eksekusi ketik perintah berikut

chmod +x backupdb.sh

Uji coba bash untuk backup tersebut dengan menggunakan perintah

bash backupdb.sh

Lalu cek file di folder yang ditentukan tadi.

Bila anda ingin membuat backup otomatis maka kita harus membuat cron job untuk mengeksekusi file bash tersebut.