PostgreSQL技術(shù)大講堂 - 第42講:pg_rman部署與使用
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯(lián)系在線老師,甲骨文官方認證,報名從速!
我要咨詢
PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內(nèi)容包括對PG基礎(chǔ)的認知、包括安裝使用、包括角色權(quán)限、包括維護管理、、等內(nèi)容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續(xù)關(guān)注CUUG PG技術(shù)大講堂。
第42講:pg_rman部署與使用
PostgreSQL第42講:1月20日(周六)19:30,釘釘群(35822460)& 視頻號(數(shù)據(jù)庫老陳)直播
內(nèi)容1:pg_rman簡介
內(nèi)容2:Pg_rman部署
內(nèi)容3:使用pg_rman進行備份與恢復
內(nèi)容4:制定自動維護策略
pg_rman簡介
pg_rman是一款開源的備份恢復軟件,支持在線和基于PITR的備份恢復方式。
pg_rman類似于oracle的rman,可以進行全量、增量、歸檔日志的備份。
http://github.com/ossc-db/pg_rman/releases,注意跟數(shù)據(jù)庫版本配套。
pg_rman特點:
使用簡單,一個命令即可完成備份和恢復。
支持在線全備、增量、歸檔日志備份
支持備份壓縮。
支持自動備份維護,自動刪除過期的WAL備份文件。
支持備份驗證。
支持基于PITR的配置文件生成器。
pg_rman部署
1、上傳安裝包并解壓安裝(postgres用戶安裝)
# tar vxf pg_rman-1.3.9-pg12.tar.gz
# cd pg_rman-1.3.9-pg12
# make
# make install
默認會安裝到$PG_HOME/bin目錄下。
2、初始化環(huán)境
--設(shè)置備份目錄,在用戶配置文件里面添加如下:
export BACKUP_PATH=/home/postgres/pg_rman_bk1
--讓環(huán)境變量生效
source .bash_profile
--初始化備份目錄,驗證歸檔路徑,日志目錄,同時在備份路徑下產(chǎn)生跟目標數(shù)據(jù)庫相關(guān)的文件。
$ pg_rman init
INFO: ARCLOG_PATH is set to '/home/postgres/arch'
INFO: SRVLOG_PATH is set to '/usr/local/pg12.2/data/pg_log'
--查看備份路徑下的內(nèi)容:
20200603 backup pg_rman.ini system_identifier timeline_history
pg_rman命令
語法:
pg_rman [OPTION] COMMAND
COMMAND:
init 初始化備份目錄
backup 在線備份
restore 恢復
show 查看備份歷史
validate 驗證備份
delete 從知識庫中刪除備份信息
purge 從備份目錄中刪除已實際的備份文件
全量備份
對數(shù)據(jù)庫做全備:
pg_rman backup --backup-mode=full -C -P
驗證數(shù)據(jù)庫備份(必須要驗證,否則后續(xù)無法做增量備份):
pg_rman validate
查看備份信息:
pg_rman show
=====================================================================
StartTime EndTime Mode Size TLI Status
=====================================================================
2022-11-16 21:41:18 2022-11-16 21:41:21 FULL 139MB 3 OK
增量備份
對數(shù)據(jù)庫做增量備份:
pg_rman backup --backup-mode=incremental
驗證數(shù)據(jù)庫備份(必須要驗證,否則后續(xù)無法做增量備份):
pg_rman validate
查看備份信息:
pg_rman show
=====================================================================
StartTime EndTime Mode Size TLI Status
=====================================================================
2022-11-16 21:44:32 2022-11-16 21:44:34 INCR 33MB 3 OK
2022-11-16 21:41:18 2022-11-16 21:41:21 FULL 139MB 3 OK
歸檔備份
歸檔備份:
pg_rman backup --backup-mode=archive
驗證數(shù)據(jù)庫備份(必須要驗證,否則后續(xù)無法做增量備份):
pg_rman validate
查看備份信息:
pg_rman show
=====================================================================
StartTime EndTime Mode Size TLI Status
=====================================================================
2022-11-16 21:51:50 2022-11-16 21:51:51 ARCH 16MB 3 OK
2022-11-16 21:44:32 2022-11-16 21:44:34 INCR 33MB 3 OK
2022-11-16 21:41:18 2022-11-16 21:41:21 FULL 139MB 3 OK
完全恢復
恢復數(shù)據(jù)文件:
pg_rman restore
恢復過程會自動修改和生成需要的文件:
INFO: restoring WAL files from backup "2022-11-16 21:51:50"
INFO: restoring online WAL files and server log files
INFO: add recovery related options to postgresql.conf
INFO: generating recovery.signal
INFO: restore complete
HINT: Recovery will start automatically when the PostgreSQL server is started.
啟動數(shù)據(jù)庫:
pg_ctl start
時間點恢復
恢復數(shù)據(jù)文件:
pg_rman restore --recovery-target-time="2022-11-16 22:05:22"
恢復過程會自動修改和生成需要的文件:
INFO: restoring WAL files from backup "2022-11-16 21:51:50"
INFO: restoring online WAL files and server log files
INFO: add recovery related options to postgresql.conf
INFO: generating recovery.signal
INFO: restore complete
HINT: Recovery will start automatically when the PostgreSQL server is started.
啟動數(shù)據(jù)庫:
pg_ctl start
執(zhí)行函數(shù):
Select pg_wal_replay_resume() ;
備份數(shù)據(jù)維護
刪除指定時間點的備份,如果只有一個可用備份,則需要加上-f選項:
pg_rman delete "2022-11-16 21:44:34" -f
上面刪除操作只是刪除pg_rman目錄中的記錄,實際的備份數(shù)據(jù)沒有刪除,需要purge才能夠真正刪除:
pg_rman purge
INFO: DELETED backup "2022-11-16 21:44:32" is purged
INFO: DELETED backup "2022-11-16 21:41:18" is purged
pg_rman.ini文件
可以根據(jù)備份策略,制定自動維護配置,在進行備份操作時會自動檢查:
RCLOG_PATH='/home/postgres/arch' --歸檔目錄
SRVLOG_PATH='/home/postgres/data/log' --數(shù)據(jù)庫錯誤日志目錄
COMPRESS_DATA = YES --壓縮數(shù)據(jù)
KEEP_ARCLOG_FILES = 10 --保存歸檔文件個數(shù)
KEEP_ARCLOG_DAYS = 10 --保存歸檔的天數(shù)
KEEP_DATA_GENERATIONS = 3 --備份冗余度
KEEP_DATA_DAYS = 10 --保存?zhèn)浞菁瘯r間
KEEP_SRVLOG_FILES = 10 --保存日志文件個數(shù)
KEEP_SRVLOG_DAYS = 10 --保存日志文件天數(shù)
自動維護操作
在進行備份操作時會自動檢查:
pg_rman backup --backup-mode=full
INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 10, keep days = 10)
INFO: the threshold timestamp calculated by keep days is "2022-11-06 00:00:00"
INFO: start deleting old backup (keep generations = 3 AND keep after = 2022-11-06 00:00:00)
CUUG PostgreSQL技術(shù)大講堂系列公開課第42講-pg_rman部署與使用,往期視頻及文檔,請聯(lián)系CUUG。
- 陳衛(wèi)星-老師CUUG金牌講師
- 陳老師 CUUG金牌講師 精通Oracle管理、備份恢復、性能優(yōu)化 11年Ora...[詳細了解老師]
