Postgresql Backup
Postgresql veritabanınız varsa belirli periyotlarda veritabanınızın yedeğini almanız yararınıza olacaktır. Her hangi bir problemden dolayı datalarınızı yitirdiğinizde geri dönüşü mümkün olmayan durumlara mahal vermemek için hazırlamış olduğum yedekleme scriptini kullanabilirsiniz.
Aşağıda bulunan script veritabanı VACUUM ANALYZE işlemi yaptıktan sonra istenilen veritabanını dump alıp sıkıştırarak yedeklerin olduğu klasöre kopyalıyor. Bununla birlikte yedeklerin bulunduğu klasör altında 30 günden eski yedekleri de temizliyor. Daha sonra tüm işlemlerin çıktılarını backup.log dosyasında istediğimiz zaman inceleyebilmemiz için logluyor.
Scripti kendinize göre konfigüre ettikten sonra crontab a istediğiniz zaman diliminde çalıştıracak şekilde ekleyebilirsiniz.
#!/usr/local/bin/bash
DUMP_CMD=/usr/local/bin/pg_dump
VACUUM_CMD=/usr/local/bin/vacuumdb
BACKUP_DIR= /your/ backup/ directory
DBUSER=”pgsql”
DBNAME=”your database name”
DATE=date +%Y-%m-%d_%Hh%Mm
LOGFILE=$BACKUP_DIR/../log/backup.log
# Make logfile
# Membuat logfile
exec 6>&1
exec >> $LOGFILE # Link file descriptor #6 with stdout.
# Saves stdout.
exec 7>&2 # Link file descriptor #7 with stderr.
# Saves stderr.
exec 2>> $LOGFILE # stderr replaced with file $LOGERR.
echo “—————————————————-”
echo Backup Procedure is starting..
echo $DATE
echo Starting vacuum operation..
$VACUUM_CMD -z -a -U $DBUSER
echo Vacuum finished…
echo Starting backup of $DBNAME databases…
$DUMP_CMD -U $DBUSER $DBNAME | gzip -c > $BACKUP_DIR/database-$DATE.dump.gz
echo Backup finished…
echo “Deleting old backup files…”
oldbackup=find $BACKUP_DIR -type f -mtime 30 -name "*.dump.gz"
for current_file in echo $oldbackup
do
rm -f $current_file
echo $current_file deleted
done
echo “Old file deletion finished”
echo ” ”
echo “—————————————————-”
ALINTI
bayramkaragoz.org