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

Yazar: ziyacansari

sitemizde 12 yazı eklemiş...

Share