簡(jiǎn)單介紹一下:
pg_rman可以在線備份整個(gè)數(shù)據(jù)庫(kù),支持增量備份和備份壓縮,支持存儲(chǔ)快照。
pg_rman使用的是pg_start_backup(), copy, pg_stop_backup()的備份模式。
pg_rman跑的不是流復(fù)制協(xié)議,而是文件拷貝,所以pg_rman必須和數(shù)據(jù)庫(kù)節(jié)點(diǎn)跑在一起。
如果在standby節(jié)點(diǎn)跑pg_rman,pg_rman則需要通過網(wǎng)絡(luò)連接到主節(jié)點(diǎn)執(zhí)行pg_start_backup和pg_stop_backup。
下載安裝:
wget https://github.com/ossc-db/pg_rman/releases/download/V1.3.11/pg_rman-1.3.11-pg12.tar.gz
tar -zxvf pg_rman-1.3.11-pg12.tar.gz
cd soft/pg_rman-1.3.11-pg12
make && make install
使用pg_rman的先決條件:
postgres=# show log_destination ;
log_destination
-----------------
csvlog
(1 row)
postgres=# SHOW log_directory ;
log_directory
---------------
log
(1 row)
postgres=# SHOW archive_command ;
archive_command
--------------------------------------------
cp %p /pgarchive/%f
(1 row)
初始化備份目錄:
初始化需要兩個(gè)參數(shù),分別為備份目標(biāo)目錄,以及數(shù)據(jù)庫(kù)的$PGDATA
pg_rman init -B /pgbackup -D /opt/pgdata/pg_root
INFO: ARCLOG_PATH is set to '/pgarchive'
INFO: SRVLOG_PATH is set to '/opt/pgdata/pg_root/log'
查看配置文件:
cat pg_rman.ini
ARCLOG_PATH='/pgarchive'
SRVLOG_PATH='/opt/pgdata/pg_root/log'
cat system_identifier
SYSTEM_IDENTIFIER='6940149485915408008'
可見和控制文件的系統(tǒng)標(biāo)識(shí)號(hào)一致
pg_controldata | grep system
Database system identifier: 6940149485915408008
備份:
全量備份
pg_rman backup -B /pgbackup -D /opt/pgdata/pg_root -b full -s -Z -C --keep-data-days=10 --keep-arclog-files=15 --keep-arclog-days=10 --keep-srvlog-files=10 --keep-srvlog-days=15 -h 127.0.0.1 -p 1921 -U postgres -d postgres
INFO: copying database files
INFO: copying archived WAL files
INFO: copying server log files
INFO: backup complete
INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.
INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 15, keep days = 10)
INFO: the threshold timestamp calculated by keep days is "2021-03-08 00:00:00"
INFO: start deleting old server files from SRVLOG_PATH (keep files = 10, keep days = 15)
INFO: the threshold timestamp calculated by keep days is "2021-03-03 00:00:00"
INFO: start deleting old backup (keep after = 2021-03-08 00:00:00)
INFO: does not include the backup just taken
驗(yàn)證
pg_rman validate -B /pgbackup/
增量備份
pg_rman backup -B /pgbackup -D /opt/pgdata/pg_root -b incremental -s -Z -C --keep-data-days=10 --keep-arclog-files=15 --keep-arclog-days=10 --keep-srvlog-files=10 --keep-srvlog-days=15 -h 127.0.0.1 -p 1921 -U postgres -d postgres
INFO: copying database files
INFO: copying archived WAL files
INFO: copying server log files
INFO: backup complete
INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.
INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 15, keep days = 10)
INFO: the threshold timestamp calculated by keep days is "2021-03-08 00:00:00"
INFO: start deleting old server files from SRVLOG_PATH (keep files = 10, keep days = 15)
INFO: the threshold timestamp calculated by keep days is "2021-03-03 00:00:00"
INFO: start deleting old backup (keep after = 2021-03-08 00:00:00)
INFO: does not include the backup just taken
INFO: backup "2021-03-18 19:37:45" should be kept
DETAIL: This is taken after "2021-03-08 00:00:00".
再次驗(yàn)證
pg_rman validate -B /pgbackup/
查看備份信息
INFO: validate: "2021-03-18 19:59:19" backup, archive log files and server log files by CRC
INFO: backup "2021-03-18 19:59:19" is valid
postgres@nano-dev-nano-python-test-database-02-> pg_rman show detail -B /pgbackup/
======================================================================================================================
StartTime EndTime Mode Data ArcLog SrvLog Total Compressed CurTLI ParentTLI Status
======================================================================================================================
2021-03-18 19:59:19 2021-03-18 19:59:21 INCR 17kB 33MB 0B 33kB true 1 0 OK
2021-03-18 19:37:45 2021-03-18 19:37:48 FULL 50MB 33MB 71kB 6689kB true 1 0 OK
相關(guān)option:
init #初始化備份目錄
backup #在線備份
restore #恢復(fù)選項(xiàng)
show #顯示備份集歷史,detail選項(xiàng)會(huì)顯示每個(gè)備份集更多的信息
validate #驗(yàn)證備份文件,如果不驗(yàn)證,備份無法用于恢復(fù)和增量備份
delete #刪除備份文件
purge #從備份目錄刪除備份
為了減輕主節(jié)點(diǎn)的壓力,當(dāng)然我們更加喜歡在備節(jié)點(diǎn)做備份,以下附上參數(shù)解釋
pg_rman backup \
-b full \ # 全量備份
-B /pgbackup \ # 備份目錄
-D /opt/pgdata/pg_root \ # 備庫(kù)的$PGDATA
-s \ # 備份pg_log
-Z \ # 壓縮
--keep-data-generations=3 \ # 保留3個(gè)全量備份,刪除不需要的全量備份
--keep-data-days=10 \ # 保證能恢復(fù)到10天內(nèi)的任意時(shí)間點(diǎn),刪除不需要的
--keep-arclog-files=30 \ # 保留最近30個(gè)歸檔文件
--keep-arclog-days=20 \ # 保留20天內(nèi)的歸檔文件
--keep-srvlog-files=10 \ # 保留最近10個(gè)日志文件(pg_log)
--keep-srvlog-days=20 \ # 保留20天內(nèi)的日志文件(pg_log)
--standby-host=127.0.0.1 \ # 如何連接standby
--standby-port=1921 \ # 如何連接standby
-h 10.4.9.166 \ # 如何連接primary
-p 1921 \ # 如何連接primary
-U postgres \ # 如何連接primary, standby(超級(jí)用戶)
-d postgres # 如何連接primary, standby(database name)
備節(jié)點(diǎn)備份:
備節(jié)點(diǎn)做一次全備
pg_rman backup -b full -B /pgbackup -D /opt/pgdata/pg_root -s -Z --keep-data-generations=3 --keep-data-days=10 --keep-arclog-files=30 --keep-arclog-days=20 --keep-srvlog-files=10 --keep-srvlog-days=20 --standby-host=127.0.0.1 --standby-port=1921 -h 10.4.9.166 -p 1921 -U postgres -d postgres
INFO: copying database files
INFO: copying archived WAL files
INFO: copying server log files
INFO: backup complete
INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.
INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 30, keep days = 20)
INFO: the threshold timestamp calculated by keep days is "2021-02-26 00:00:00"
INFO: start deleting old server files from SRVLOG_PATH (keep files = 10, keep days = 20)
INFO: the threshold timestamp calculated by keep days is "2021-02-26 00:00:00"
INFO: start deleting old backup (keep generations = 3 AND keep after = 2021-03-08 00:00:00)
INFO: does not include the backup just taken
WARNING: backup "2021-03-18 20:25:44" is not taken into account
DETAIL: This is not a valid backup.
WARNING: backup "2021-03-18 20:24:48" is not taken into account
DETAIL: This is not a valid backup.
WARNING: backup "2021-03-18 20:23:52" is not taken into account
DETAIL: This is not a valid backup.
WARNING: backup "2021-03-18 20:22:47" is not taken into account
DETAIL: This is not a valid backup.
pg_rman validate -B /pgbackup/
INFO: validate: "2021-03-18 20:27:12" backup, archive log files and server log files by CRC
INFO: backup "2021-03-18 20:27:12" is valid
驗(yàn)證備份
pg_rman validate -B /pgbackup/
INFO: validate: "2021-03-18 20:27:12" backup, archive log files and server log files by CRC
INFO: backup "2021-03-18 20:27:12" is valid
查看備份
pg_rman show detail -B /pgbackup/
StartTime EndTime Mode Data ArcLog SrvLog Total Compressed CurTLI ParentTLI Status
2021-03-18 20:27:12 2021-03-18 20:27:17 FULL 49MB 0B 18kB 5749kB true 1 0 OK
————————————————
版權(quán)聲明:本文為CSDN博主「dazuiba008」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/dazuiba008/article/details/114977280