Backup MySQL
Posted by Endy Muhardin | Filed under Lain2
Sebelumnya, saya telah membahas script backup untuk Trac maupun Subversion. Kali ini, kita akan bahas backup script untuk MySQL.
Sama seperti backup script sebelumnya, script ini akan membuat folder sesuai dengan tanggal dan jam backup. Selanjutnya, script akan melakukan backup terhadap database MySQL sesuai dengan nama database yang ditentukan. Backup ini akan disimpan di folder yang kita tentukan.
Berikut backup scriptnya.
[Update - 7 Des 2009] Sudah ditambahkan perintah untuk kompresi hasil backupnya.
#!/bin/sh
test -x /bin/date || exit -1
test -x /usr/bin/mysqldump || exit -1
test -x /bin/tar || exit -1
test -x /bin/bzip2 || exit -1
DBHOST=$1
DBNAME=$2
USERNAME=$3
PASSWORD=$4
BACKUP_FOLDER=$5
CURR_DATE="$(/bin/date +%Y%m%d-%H%M)"
if [ "$1" = '' ]; then
echo "Usage : $0 <db name> <username> <password> <backup folder>"
return 1
fi
if [ "$2" = '' ]; then
echo "Usage : $0 <db name> <username> <password> <backup folder>"
return 1
fi
if [ "$3" = '' ]; then
echo "Usage : $0 <db name> <username> <password> <backup folder>"
return 1
fi
if [ "$4" = '' ]; then
echo "Usage : $0 <db name> <username> <password> <backup folder>"
return 1
fi
echo "Create backup folder $BACKUP_FOLDER/$CURR_DATE"
echo "..."
/bin/mkdir "$BACKUP_FOLDER/$CURR_DATE"
echo "Backup $DBNAME schema to $BACKUP_FOLDER/$CURR_DATE/$DBNAME-schema-$CURR_DATE.sql"
echo "..."
/usr/bin/mysqldump $DBNAME -u $USERNAME -p$PASSWORD -h$DBHOST -d > "$BACKUP_FOLDER/$CURR_DATE/$DBNAME-schema-$CURR_DATE.sql"
echo "Backup $DBNAME data to $BACKUP_FOLDER/$CURR_DATE/$DBNAME-data-$CURR_DATE.sql"
echo "..."
/usr/bin/mysqldump $DBNAME -u $USERNAME -p$PASSWORD -h $DBHOST -n -c -t --single-transaction > "$BACKUP_FOLDER/$CURR_DATE/$DBNAME-data-$CURR_DATE.sql"
echo "Compressing folder $CURR_DATE"
echo "..."
/bin/tar cvf - "$BACKUP_FOLDER/$CURR_DATE" | /bin/bzip2 -c9 > "$BACKUP_FOLDER/$CURR_DATE.tar.bz2"
echo "Removing folder $BACKUP_FOLDER/$CURR_DATE"
echo "..."
/bin/rm -rf "$BACKUP_FOLDER/$CURR_DATE"
echo "Completed"
Script di atas dapat dijalankan setiap Jumat malam jam 23.00 dengan konfigurasi sebagai berikut.
0 23 * * 5 /bin/sh /path/ke/mysql-backup.sh db_user db_pass db_name backup_folder_mysql
June 6, 2009 at 7:13 am
Pak Endy, menurut saya kurang kompresinya pak.kan lebih enak kalo ukuran filenya lebih kecil.
Ini versi windows saya yang lebih jelek tapi udan dengan kompresi
http://mutualbehavior.blogspot.com/2009/05/php-simple-backup.html
December 7, 2009 at 4:46 pm
Tuh udah ditambahin kompresinya. Pake bzip2 kompresi maksimum (level 9) biar benar2 kecil.