Sebagai Admin sebuah server sudah sewajarnya jika kita membuat backup database yang ada di server kita secara automatis. Untuk ini berikut akan saya sampaikan cara untuk membuat script backup MySQL secara automatis dengan operating system under linux dan langsung mengirimkannya ke sever backup dengan metode ftp.

1. Buat dahulu sebuah file applikasi yang dapat kita eksekusi.
[root@maulana]#touch /home/Maulana/mysql_backup.sh

2. Buka file tersebut dan isikan dengan script dibawah ini.
[root@maulana]#vim /home/Maulana/mysql_backup.sh

#########################
######TO BE MODIFIED#####

### System Setup ###
BACKUP=/home/Maulana/backup/mysql

### MySQL Setup ###
MUSER="root" #MySQL User
MPASS="" #MySQL Password
MHOST="localhost" #MySQL Host

### FTP server Setup ###
FTPD="/mysql" #FTP Direktori
FTPU="mysql" #FTP User
FTPP="12345" #FTP Password
FTPS="192.168.5.4" #FTP Server

######DO NOT MAKE MODIFICATION BELOW#####
#########################################

### Binaries ###
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"

### Today + hour in 24h format ###
waktu="$(date +%d%m%Y)"
jam="$(date +%H%M%S)"
#NOW=$(date +"%d%H")
NOW="ALL_DATABASES.$waktu$jam"

### Create hourly dir ###
if [ -d $BACKUP/$NOW ];
then
echo Direktori sudah ada, proses akan dilanjutkan
else
echo Direktori backup belum dibuat, proses akan dilanjutkan
fi
mkdir -p $BACKUP/$NOW

### Get all databases name ###
DBS="$($MYSQL –user=$MUSER -h $MHOST –password=$MPASS -Bse 'show databases')"
for db in $DBS
do

## Create dir for each databases, backup tables in individual files ##
  mkdir -p $BACKUP/$NOW/$db

# for i in 'echo "show tables" | $MYSQL -u $MUSER -h $MHOST -p$MPASS $db|grep -v Tables_in_';
# do
#FILE=$BACKUP/$NOW/$db/$i.sql.gz
#echo $i; $MYSQLDUMP –add-drop-table –allow-keywords -q -c -u $MUSER -h $MHOST -p$MPASS $db $i | $GZIP -9 > $FILE
FILE=$BACKUP/$NOW/$db/$db.sql.gz
$MYSQLDUMP –add-drop-table –allow-keywords -q -c –user=$MUSER -h $MHOST –password=$MPASS $db | $GZIP -9 > $FILE
done
#done

### Compress all tables in one nice file to upload ###

ARCHIVE=$BACKUP/$NOW.tar.gz
ARCHIVED=$BACKUP/$NOW

$TAR -cvf $ARCHIVE $ARCHIVED

### Dump backup using FTP ###
cd $BACKUP
DUMPFILE=$NOW.tar.gz
$FTP -n $FTPS quote PASS $FTPP
mkdir $waktu
cd $FTPD/$waktu
mput $DUMPFILE
disconnect
close
END_SCRIPT

### Delete the backup dir and keep archive ###

rm -rf $ARCHIVED

#End Script

3. Edit script ini sesuai konfigurasi database dan ftp server anda.
MUSER, MPASS, MHOST, FTPD, FTPU, FTPP dan FTPS.

Setelah selesai kita membuat file diatas maka tekan Esc + : x, lalu jangan lupa set chmod 700 di file mysqlbackup.sh
[root@maulana]#chmod 700 /home/Maulana/mysql_backup.sh

Untuk mengeksekusi file tersebut pada waktu-waktu tertentu, maka yang perlu kita lakukan adalah mengkonfigurasi crontab, berikut langkah-langkahnya:

[root@maulana]# crontab -e

Tambahkan :
44 12 * * * /home/Maulana/mysql_backup.sh

Keterangan:
44 yaitu setiap menit ke 44
12 yaitu setiap jam 12
maka backup akan terjadi setiap hari pada pukul 12:44 siang

Hasil dari sistem ini adalah :

  1. File akan terbackup di folder /home/Maulana/backup/mysql/ dan file hanya 1 per nama.
  2. File sudah di comprese dengan *.gz
Share