PostgreSQL定時自動備份


PostgreSQL定時自動備份

簡介

PostgreSQL數據庫中未提供數據庫的定時備份功能,所以需要結合備份和定時job功能來共同實現。

這里我選取了2種定時job方式,crontab是Linux中的定時job功能,故只能支持Linux系列操作系統;其中pgAgent是基於數據庫的定時備份,可適用於各種操作系統。

實驗環境

  • PostgreSQL:
操作系統:CentOS Linux release 7.3.1611 (Core)

數據庫系統: PostgreSQL 9.5.9

IP: 192.168.230.134

port: 5432

冷備份腳本

業務需求: 
每日按日期執行自動備份,生產dmp的壓縮文件。備份文件保存7天

[postgres@localhost ~]$vim backup.sh #!/bin/bash cur_time=$(date '+%Y-%m-%d') sevendays_time=$(date -d -7days '+%Y-%m-%d') export PGPASSWORD=oracle echo "Starting Backup PostgreSQL ..." rm -rf pgsql-backup.$sevendays_time.tar.gz pg_dumpall -U postgres -p 5432>"pgsql-backup.$cur_time.dmp" tar zcvf "/var/lib/pgsql/pgsql-backup.$cur_time.tar.gz" *.dmp echo "Remove temp file ..." rm -rf pgsql-backup.*.dmp echo "Finish Backup ..." [postgres@localhost ~]$chmod 755 ./backup.sh

此腳本備份並壓縮整個數據庫,刪除7天前的備份

[postgres@localhost ~]$ls
9.5  backup.sh  pgsql-backup.2017-09-04.tar.gz
[postgres@localhost ~]$./backup.sh 
Starting Backup PostgreSQL ...
./backup.sh: line 7: 5432: Bad file descriptor
pgsql-backup.2017-09-11.dmp
Remove temp file ...
Finish Backup ...
[postgres@localhost ~]$ls
9.5  backup.sh  pgsql-backup.2017-09-11.tar.gz

熱備份腳本

業務需求:每天對整個數據庫數據進行熱備份,不能影響實際業務

#!/bin/bash DATE=$(date '+%Y%m%d'); PG_ARCHIVE=/var/lib/pgsql/9.5/data/pg_arch PG_DATA=/var/lib/pgsql/9.5/data PG_HOME=/var/lib/pgsql #START BACKUP echo "START BACKUP..............." psql postgres -c "select pg_start_backup('hot_back')" cd $PG_HOME tar zcvf ${PG_HOME}/pg_hotbackup_$DATE.tar.gz $PG_DATA psql postgres -c "select pg_stop_backup()" psql postgres -c "select pg_switch_xlog()" psql postgres -c "select pg_current_xlog_location()" echo "BACKUP END"

crontab設定定時備份

創建執行計划

業務需求為每天臨晨2點自動執行備份腳本

[root@localhost ~]# crontab -e 0 2 * * * /var/lib/pgsql/backup.sh no crontab for root - using an empty one crontab: installing new crontab

詳情可參見

http://blog.csdn.net/sunbocong/article/details/77883797

pgAgent設定定時備份

使用pgadmin III 工具連接目標庫 
新建作業daily_backup

創建計划daily_backup,設定開始時間

選定時間為每天凌晨2點00分

新建步驟daily_backup,選擇批處理

設定其執行之前我們編寫的backup.sh腳本

這樣我們就設定好了每天凌晨2點00分執行backup.sh腳本的執行計划

詳情可參見 
http://blog.csdn.net/sunbocong/article/details/77870205


免責聲明!

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



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