PostgreSQL Hot Backup Script

Bu yazıda postgreSQL’in bash scriptleri ile backup alınmasını paylaşacağım. Bu backup yöntemi sayesinde veritabanınızı kapatmaya gerek kalmadan backup alabiliriniz. Bu işlemi yaparken veritabanınızın archivelog modda olduğu varsayılmaktadır.

Postgresql’in kurulu olduğu dizin yapısı şu şekildedir.

/
postgresql
--10 
----archives
----data 
------base
------pg_wal
------logs
------....
------....
------....
--backup

/postgresql/data dizini postgresql’in base dizinidir. Burdaki dosyaları tar’layıp /postgresql/backup dizinine atacağız. Bunu yapan bash scripti aşağıdadır. Bu scriptin postgres kullanıcısı ile çalıştırılması gerekmektedir.

datetoday=$(date '+%Y-%m-%d')

psql -c "SELECT pg_start_backup('hotbackup start');"

cd /postgres/10/

tar -cf /postgres/backup/PGDBBACKUP_$datetoday.tar data/

psql -c "select pg_stop_backup();"

tar -cf /postgres/backup/PGDBBACKUPARC_$datetoday.tar archives/

find /postgres/backup/ -name '*.tar' -mtime +10 -exec rm {} \;
 
cd ./archives/

for i in $(find . -name "*.backup" -mtime +3); do
   echo "$i"
   walname=$(echo $i | cut -c3-42)
   /usr/pgsql-10/bin/pg_archivecleanup -d /postgres/10/archives "$walname"
done 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.