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 "----------------------------------------------------"






