sing ade ape de ..

Icon

Just another WordPress.com weblog

Script dump database MySQL dengan Bash

Salah satu metode backup MySQL adalah dengan mengekspor database menjadi file *.sql dengan tool ‘mysqldump’. Strateginya adalah ngedump secara berkala dan menyimpannya di direktori khusus. Agar tidak bikin harddisk penuh dilakukan juga penghapusan file-file backup tadi secara berkala juga. Ini bisa dilakukan dengan membuat script bash sederhana.
Ini script yang aku punya


#!/bin/bash
#----Config-----#
host=$(hostname)
sqldir=/sqldump
dbhost=localhost
port=3306
umurhapus=1 #dalam bulan
user=root
pass=
database="database-1 database-n"
mysqldump="/usr/bin/mysqldump"
#---------------#
date=$(date +%d%b%Y_%H%M)
n=$(echo $umurhapus*30 | bc)
checkdirexist()
{
if [ ! -d "$sqldir" ]; then
echo $sqldir "not found, creating one..";
mkdir -p $sqldir
fi
}
dumpit()
{
$mysqldump -u$user -p$pass -P$port $db > $sqldir/$db-$host-$date.sql
/bin/gzip -f $sqldir/$db-$host-$date.sql
}
deleteold()
{
/usr/bin/find $sqldir -type f -mtime $n -print | xargs /bin/rm -f
}
checkdirexist

for db in $database
do
dumpit
done
deleteold
exit 0

Perhatikan bagian config. Sesuaikan dengan konfigurasi MySQL yang kamu punya. Kalau perlu bikin satu user khusus dengan privilege dump saja.
Script ini hanya untuk eksport biasa saja, kalau ada database yang menggunakan function dan procedure tambahkan -K -R –triggers pada function dumpit() setelah $db, seperti ini

$mysqldump -u$user -p$pass -P$port $db -R -K –triggers > $sqldir/$db-$host-$date.sql

Script ini juga dilengkapi fasilitas menghapus file backup dengan parameter usia file, perhatikan config. Isi umurhapus dengan angka bulat (integer), gak pake koma, yang menunjukkan usia file dalam bulan yang akan dihapus. Perhatikan ukuran file hasil backup, perkirakan berapa jumlah besar file dan kapasitas hd jika script ini berjalan secara regular.

Perhatian, script ini hanya untuk satu MySQL server saja, gimana kalau pingin mengabungkan lebih dari 1 MySQL server dalam 1 script??
Nggak tau :D , kalau bisa akan ada rilis selanjutnya :)

Untuk menjalankan script ini jangan lupa tambahkan mode x pada file

chmod a+x namafilescript

Kalau mau dijalankan otomatis secara berkala pakai fasilitas crontab. Misalnya untuk backup tiap hari dan tiap jam pada menit ke 23

23 * * * * namafilescriptbackup

Banyak sekali contoh-contoh script yang sama di luar sana, tapi ini script yang aku bikin :)

Semoga bermanfaat.

Silahkan dipakai, semoga berbahagia :)

Filed under: Linux, , , ,

Follow

Get every new post delivered to your Inbox.