Backup database ini dilakukan untuk menjaga jika terjadi masalah pada database baik berupa data yg terhapus secara tidak sengaja, hardisk dari tempat penyimpanan data tersebut corrupt dll, maka kita akan membutuhkan data backup ini yg akan di restore menggantikan data yg rusak tadi.
Media/hardisk tempat menyimpan data backup tersebut sebaiknya berbeda dengan tempat database yg terpakai / sedang digunakan. Hal ini dilakukan untuk :
1. Menghindari hardisk cepat penuh karena bercampur antara database dan data backup.
2. Jika hardisk database corrupt, maka data backup tidak ikut corrupt.
Untuk membackup database pada Postgresql dapat menggunakan command pg_dump atau pg_dumpall untuk membackup semua database. Kita dapat membatasi backup database hanya selama 7 hari saja dan membuatkan LOG FILE backup database.
Script di bawah ini akan menjalankan backup database selama 7 hari, jadi jika ada data backup yg melebihi 7 hari maka data tersebut akan di hapus. Linux yg digunakan adalah Linux Ubuntu.
Script backupdata.sh sebagai berikut :
#!/bin/bash
DATE=`date +%Y%m%d`
dataexp=`date --d 7yesterday +%Y%m%d`
LOGFILE=Log`date +%Y%m%d`.log
touch $LOGFILE
pg_dump -F c -d db_name > /var/lib/postgresql/backup/db_name$DATE.backup
echo `date +%Y/%m/%d` `date +%H:%m` "/var/lib/postgresql/backup/db_name$DATE.backup" > $LOGFILE
gzip -f /var/lib/postgresql/backup/db_name$DATE.backup
#hapus file seminggu yg lalu.
#cek dulu jika sdh lebih dari 7 file.
if [ $(ls /var/lib/postgresql/backup | wc -l) -gt 7 ]
then
#echo 'ada lebih dari 7 file'
cd /var/lib/postgresql/backup/harian
rm *$dataexp.backup.gz
fi
#hapus seminggu yg lalu selesai
Penjelasan :
DATE=`date +%Y%m%d` adalah mengambil tanggal system yg akan digunakan sebagai nama file backup.
dataexp=`date --d 7yesterday +%Y%m%d` adalah untuk mengambil file data backup yg sudah lebih tujuh hari.
LOGFILE=Log`date +%Y%m%d`.log adalah digunakan sebagai nama file LOG berdasarkan tanggal system.
touch $LOGFILE adalah untuk membuat nama file LOG berdasarkan LOGFILE.
pg_dump -F c -d db_name > /var/lib/postgresql/backup/harian/db_name$DATE.backup adalah untuk menjalankan proses backup database db_name yg akan disimpan pada folder /var/lib/postgresql/backup/harian/.
echo `date +%Y/%m/%d` `date +%H:%m` "/var/lib/postgresql/backup/harian/db_name$DATE.backup" > $LOGFILE adalah untuk menginput hasil backup pada LOGFILE.
gzip -f /var/lib/postgresql/backup/harian/db_name$DATE.backup adalah untuk menkompres file backup.
Setelah itu simpan script backupdata.sh pada folder /usr/local/bin. Jalankan command chmod backupdata.sh 755. Agar script tersebut dapat dijalankan otomatis oleh postgres jalankan proses mengaktifkan permission-nya sebagai berikut :
1. Ubah owner dari script backupdata.sh tersebut menjadi postgres, yaitu :
Chown postgres backupdata.sh
2. Buat cron job dengan aktif terlebih dulu sebagai user postgres, yaitu :
su – postgres [enter]
crontab –e [enter]
0 1 * * * /usr/local/bin/backupdata.sh (data akan di backup setiap jam 01.00) [CTRL+X] jawab Yes
3. Buat hardisk slave (harian) aktif pada folder “/var/lib/postgresql/backup”, yaitu :
Mount /dev/sdb1 /var/lib/postgresql/backup/
Script backupdata.sh ini akan otomatis menyimpan data backup pada folder harian yg telah terlebih dulu di mount, serta akan membuatkan log file berdasarkan tanggal system sehingga kita akan dengan mudah mendapatkan catatan dari hasil backup yg telah dijalankan. Dan data yg di backup sudah terkompres sehingga file tersebut tidak terlalu besar.
Dari script di atas, anda dapat membuatkan backup bulanan secara otomatis dengan menghapus perintah hapus data dan menambahkan pada cron job untuk menjalankan perintah backup data bulanan.
Tidak ada komentar:
Posting Komentar