PostgreSQL增量備份策略


一、備份要求:

1、每天進行一起全備,保留7天
2、每個月進行一次全備,保留一個月
3、開啟歸檔模式
4、要定期刪除無效的歸檔日志

二、具體操作:

1、創建所需文件夾

mkdir -p /u01/pg_backup/archive_wals
mkdir -p /u01/pg_backup/basebackup/backups-tmp
mkdir -p /u01/pg_backup/scripts
chown -R postgres:postgres /u01/pg_backup/

2、開啟歸檔模式,修改postgresql.conf

archive_mode = on
archive_command = 'test ! -f /u01/pg_backup/archive_wals/%f && /usr/bin/lz4 -q -z %p /u01/pg_backup/archive_wals/%f.lz4'

3、創建每天全備腳本pg_basebackup.sh

#!/bin/bash
#auth:cuckoo

DATE=$(date '+%Y%m%d')
sevendays_time=$(date -d -7days '+%Y%m%d')
pgpath=/opt/pgsql/bin/
port=15432
pguser=postgres
bkpath=/u01/pg_backup/basebackup
bktmp=$bkpath/backups-tmp

#START BACKUP
echo "START BACKUP..............."
rm -rf $bkpath/base_$sevendays_time.tar.gz                  
$pgpath/pg_basebackup -Ft -Pv -Xf -z -Z5 -p $port -U $pguser -D $bktmp
mv $bktmp/base.tar.gz $bkpath/base_$DATE.tar.gz
$pgpath/psql -p $port -U $pguser -c "select pg_switch_wal()"
echo "BACKUP  END"

4、創建每個月全備腳本pg_basebackup_m.sh

#!/bin/bash
#auth:cuckoo
  
DATE=$(date '+%Y%m%d')
ONE_MONTH=$(date -d -1month +'%Y%m%d')
bkpath=/u01/pg_backup/basebackup

cp $bkpath/base_$DATE.tar.gz $bkpath/base_month_$DATE.tar.gz
rm -rf $bkpath/base_month_$ONE_MONTH.tar.gz

5、設置定時任務

0 2 1 * * /u01/pg_backup/scripts/pg_basebackup_m.sh
30 0 * * * /u01/pg_backup/scripts/pg_basebackup.sh
0 3 1 * * /usr/bin/find /u01/pg_backup/archive_wals -name "*.lz4" -mtime +35 |xargs rm -rf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM