Berhubung ada kebutuhan untuk mengumpulkan database POS toko – toko yang tersebar itu agar ada backup di kantor pusat, maka setelah muter – muter coba juga, akhirnya selesai juga script yang sesuai dengan kebutuhan yaitu

  • Auto Backup Database MySQL
  • Auto Transfer file ke server pusat via FTP
  • Organize file dengan cara dikumpulkan dalam satu folder dan setelah beberapa hari otomatis dihapus
  • Dijadwalkan sesuai dengan kebutuhan

Oke sekarang langsung masuk ke tahapan pembuatan, eh tapi pastikan dulu prasyarat ini terpenuhi :

  • Internet baik di client ataupun server yang selalu On tentunya
  • Crontab, biasanya kan sudah terinstall
  • Script yang akan menjalankan perintah backup dan transfer file ini

Ok, dan ini script nya, ga terlalu panjang juga koq, dan cukup simpan saja dalam 1 file (gw kasih nama backup_mysql.sh)

###START###

#!/bin/bash

# Specify the temporary backup directory
BKUPDIR=/home/backupdatabase
BARCHIVE=/home/backupdatabase/archive

# Database Name
dbname=namadbnya
dbuser=useranda
dbpasswd=passanda

# store the current date
v_tgl=`date ‘+%Y%m%d_%H%M%S’` ;
v_name=id_db_$v_tgl.sql.gz ;

# Specify Ftp details
ftpserver=ipftp
ftpuser=username
ftppass=passftp

# Dump the mysql database with the current date and compress it.
mysqldump -u$dbname -p$dbuser $dbname | gzip > $BKUPDIR/$v_name;

# Change directory to the backup directory
cd $BKUPDIR

# Upload the backup
ftp -n $ftpserver <<!EOF!
user $ftpuser $ftppass
binary
prompt
cd /backupdatabase/id
mput *.sql.gz
quit
!EOF!

# Move the local backup file
mv /$BKUPDIR/$v_name /$BARCHIVE
find $BARCHIVE/ -mtime +7 -type f -exec rm -rf {} \;

###END###

Sedikit penjelasan script diatas :

# Specify the temporary backup directory
BKUPDIR=/home/backupdatabase
BARCHIVE=/home/backupdatabase/archive

  1. BKUPDIR adalah temporary direktori untuk menyimpan hasil backup mysql di lokal sebelum di kirim via FTP
  2. BARCHIVE adalah folder backup lokal dimana semua file backup database akan disimpan di folder tersebut

# Database Name
dbname=namadbnya
dbuser=useranda
dbpasswd=passanda

  1. Properti dari database yang akan di backup, teridiri dari nama, user dan password buat akses database

# store the current date
v_tgl=`date ‘+%Y%m%d_%H%M%S’` ;
v_name=id_db_$v_tgl.sql.gz ;

  1. v_tgl adalah untuk set tanggal dan jam hari ini sehingga nama file akan ada tambahan tanggal dan jam
  2. v_name adalah penamaan yang diberikan untuk file database, jadi nanti dari contoh ini nama file akan berformat id_db_tgl_jam.sql.gz misal 101_pos_20110726_093451.sql.gz

# Specify Ftp details
ftpserver=ipftp
ftpuser=username
ftppass=passftp

  1. Properties untuk ftp server dimana yang dibutuhkan adalah ip address server ftp, user login ftp dan password login ftp.

# Dump the mysql database with the current date and compress it.
mysqldump -u$dbuser -p$dbpasswd $dbname | gzip > $BKUPDIR/$v_name;

  1. ini adalah perintah untuk menjalankan backup database (dump mysql) dan hasilnya akan disimpan di folder yang telah di set di $BKUPDIR dengan format nama sesuai dengan yang ditentukan di $v_name

# Change directory to the backup directory
cd $BKUPDIR

  1. perintah ini akan membuat lokasi default terminal ubuntu pindah ke folder yang berisi databse dan siap di upload via FTP

# Upload the backup
ftp -n $ftpserver <<!EOF!
user $ftpuser $ftppass
binary
prompt
cd /backupdatabase/id
mput *.sql.gz
quit
!EOF!

  1. Script diatas ini adalah perintah untuk mengupload file via FTP yang perlu diperhatikan adalah bahwa di server FTP harus dibuat dahulu folder tujuannya sebelum script ini jalan, jadi dalam contoh itu harus sudah ada dulu folder /backupdatabse/id di server FTP

# Move the local backup file
mv /$BKUPDIR/$v_name /$BARCHIVE
find $BARCHIVE/ -mtime +7 -type f -exec rm -rf {} \;

  1. Script ini untuk manajemen file di komputer lokal (client) jadi setelah di upload, file akan dipindah ke folder archive (sesuai set di BARCHIVE) dan setelah 7 hari file tersebut akan dihapus otomastis, ini berfungsi agar hardisk kita ga penuh hanya oleh backup database.

Simpan saja script tadi di folder backup database (/home/backupdatabase) dengan nama backup_mysql.sh dan buat menjadi file executable

$ chmod +x /home/backupdatabase/backup_mysql.sh

Sekarang tinggal kita setting di cronjob

$ crontab -e

tambahkan baris berikut :

0 10,15,20 * * * /home/backupdatabase/backup_mysql.sh

Jadi script akan dijalankan setiap hari pada jam 10, jam 15 dan jam 20.

Nah beres deh, sekarang kita akan punya backup database di server.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

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