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
, 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, bash script, Linux, mysql backup script, script backup mysql