pg_rman的安裝與使用


1.安裝

1.1.下載

下載要根據數據庫版本下載

pg_rman下載地址

1.2.解壓安裝

用root用戶安裝

# root用戶執行
cd /data/soft
tar vxf pg_rman-1.3.13-pg10.tar.gz
cd pg_rman-1.3.13-pg10
# pg_rman執行的時候,需要使用pg_config命令,所以要在PATH中加入pg_config命令路徑
export PATH=$PATH:/usr/local/pgsql/bin/
make
make install
# make install后,會將pg_rman安裝到$PGHOME/bin下

用postgres用戶安裝

# 和用root安裝不同,需要軟體所在目錄權限和$PGHOME權限
# 因為自身的環境變量已有$PGHOME的路徑,因此不需要聲明pg_config的路徑
cd /data/soft
tar vxf pg_rman-1.3.13-pg10.tar.gz
cd pg_rman-1.3.13-pg10
make
make install

1.3.初始化

# 使用數據庫所屬用戶,一般為postgres用戶
vi .bash_profile
export BACKUP_PATH=/data/pg_rman
source .bash_profile
pg_rman init

使用pg_rman init命令后,會在$BACKUP_PATH下生成pg_rman.ini文件,里面會有pg_rman通過查看postgresql.conf中找到的歸檔路徑(archive_command)和數據庫日志路徑(log_directory)

2.管理

2.1.備份

2.1.1.普通備份
# 全備
# -b備份類型,-s包含數據庫日志,-Z啟動壓縮,需要數據庫支持zlib,-C做一個檢查點,-P顯示備份進度
pg_rman -b full -s -Z -C -P backup;pg_rman validate
# 歸檔
pg_rman -b archive -s -Z -C -P backup;pg_rman validate
# 增量備份,增量備份需要有一次全備作為基礎
pg_rman -b incremental -s -Z -C -P backup;pg_rman validate
# 顯示備份信息
pg_rman show detail
2.1.2.高級備份
# oracle的rman可以設置時間窗口,備份冗余,自動刪除過期備份,pg_rman也提供了類似的功能
keep-data-days # 時間窗口,備份需要保證數據庫可以恢復到時間窗口內的任意時間點
keep-data-generations # 保留幾代全備,如果設置為2,本次備份后不會刪除上次備份
keep-arclog-files # 保留多少個歸檔文件
keep-arclog-days # 保留幾天內的歸檔文件
keep-srvlog-files # 保留幾個數據庫日志文件
keep-srvlog-days # 保留幾天內的數據庫日志文件
pg_rman -b full -s -Z -C -P --keep-data-generations=1 --keep-arclog-days=1 backup

以上的選項也可以寫入pg_rman.ini中,這樣全備,歸檔,增量備份都可以使用以上保留策略

vi $BACKUP_PATH/pg_rman.ini

ARCLOG_PATH='/pgdata/archlog'
SRVLOG_PATH='/pgdata/data/log'
keep-arclog-days=1
keep-srvlog-days=1
compress_data=yes
with-serverlog=yes
smooth-checkpoint=yes
2.1.3.實戰

本次全備完,刪除之前的所有備份

# pg_rman.ini配置參考2.1.2節,定時執行如下腳本即可
vi pg_full_backup.sh
source ~/.bash_profile
pg_rman -b full -P backup
pg_rman validate
sleep 10
DeleteDate=$(date +%Y-%m-%d\ %H:%M:%S)
pg_rman delete \"$DeleteDate\"
pg_rman purge

# 如果要在終端執行全備,而全備需要很長時間
# nohup(no hang up,關閉終端的時候,會發出掛起的命令,所有正在執行的任務會被迫退出,加上后,關閉終端也不會退出)
# & 后台運行,直接放回,不會阻擋你其他工作
nohup pg_rman backup -b full -P > /archlog/pg_rman_backup/full_backup.log 2>&1 &

2.2.刪除

# 刪除之前備份
pg_rman show detail
pg_rman delete "2021-11-24 13:52:53";pg_rman purge
# 刪除歸檔
show archive_command; #查看歸檔路徑
pg_archivecleanup -d /archlog/archivedir 000000010000EEF700000060


免責聲明!

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



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