pgAgent設定定時備份
阿新 • • 發佈:2018-06-07
one AC fill log 我們 remove bsp postgres 適用於
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腳本的執行計劃
pgAgent設定定時備份