Script backup Database Mysql


Pada artikel sebelumnya sudah dijelaskan tentang bagaimana backup dan restore di mysql. Artikel kali ini akan diterangkan bagaimana caranya membackup database pada mysql menggunakan script. Tidak seperti pada backup-backup yang lain, script ini membackup seluruh database yang ada pada mysql dan disertakan juga apakah backup sebuah database berhasil atau tidak dan juga menampilkan ukuran file backup tersebut dan lama waktu proses backup sebuah database.Untuk membackup database mysql menggunakan script ikuti langkah-langkah berikut:

1. Buat file bernama backupmysql.sh

# vim backupmysql.sh

2. Masukkan script berikut ke file backupmysql.sh

#!/bin/bash
date=`date -d "-1 day" +%Y%m%d`
backupdir="/root/backup_mysql/backup-$date/"
echo "Start to backup => `date`"
if [ ! -d $backupdir ]; then
echo "$backupdir not existing, create it now automatically"
mkdir -p $backupdir
fi
cd $backupdir
index=1
nomor=1
dbase=`mysql -uroot -ppassword -e"show databases;"`
echo $dbase | awk '{for (i = NF; i > 1; i--) print $i}' | while read line;
do
echo -n "[$index]Backup Database : `date +%H:%M:%D` $line..."
mysqldump -uroot -ppassword $line > $line.sql
if [ $? -eq 0 ]; then
echo "OK[`du -h $backupdir/$line.sql | awk '{print $1}'`]"
else
echo "Fail"
fi
index=`expr $index + 1`
done
echo "Backup finish => `date`"
echo
ls -1 $backupdir | while read line;
do
echo -n "[$nomor]Compress Database : $line.."
tar cfz $line.tar.gz $line
if [ $? -eq 0 ]; then
echo "OK[`du -h $backupdir/$line.tar.gz | awk '{print $1}'`]"
else
echo "Fail"
fi
nomor=`expr $nomor + 1`
done
echo "Compress finish => `date`"
echo "==============================================================="
rm *.sql

Terlihat bahwa output dari backup ada di /home/weblog. Ubah bagian backupdir ke direktori yang anda inginkan.

3. Ubah file backupmysql.sh menjadi file eksekusi

# chmod +x backupmysql.sh
Kemudian cobalah eksekusi file backupmysql.sh dengan cara:
# ./backupmysql.sh
Di sistem penulis terlihat hasilnya seperti berikut:
Kemudian jika ada database yang tidak ingin kita backup, maka ubah perintah pada bagian:
echo $dbase | awk ‘{for (i = NF; i > 1; i–) print $i}’ | while read line;menjadiecho $dbase | awk ‘{for (i = NF; i > 1; i–) print $i}’ | sed ‘/nama1/d’ | sed ‘/nama2/d’ | sed ‘/nama…/d’| while read line;

Misalnya penulis bermaksud untuk tidak membackup database bawaan mysql yaitu information_schema, mysql, dan test, maka penulis merubahnya menjadi:

echo $dbase | awk ‘{for (i = NF; i > 1; i–) print $i}’ | sed ‘/mysql/d’ | sed ‘/test/d’ | sed ‘/information_schema/d’| while read line;

dan hasilnya terlihat pada gambar:

Tinggalkan Balasan

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s