stanza: cg_test_product
status: ok
cipher: none
db (current)
wal archive min/max (16): 000000010000000000000003/000000040000000000000009
full backup: 20251212-062816F
timestamp start/stop: 2025-12-12 06:28:16+00 / 2025-12-12 06:28:20+00
wal start/stop: 000000010000000000000007 / 000000010000000000000007
database size: 36.4MB, database backup size: 36.4MB
repo1: backup set size: 4.4MB, backup size: 4.4MB
diff backup: 20251212-062816F_20251229-072007D
timestamp start/stop: 2025-12-29 07:20:07+00 / 2025-12-29 07:20:11+00
wal start/stop: 000000040000000000000009 / 000000040000000000000009
database size: 36.4MB, database backup size: 4.9MB
repo1: backup set size: 4.5MB, backup size: 610.8KB
backup reference list: 20251212-062816F
incr backup: 20251212-062816F_20251229-073546I
timestamp start/stop: 2025-12-29 07:35:46+00 / 2025-12-29 07:35:48+00
wal start/stop: 00000004000000000000000B / 00000004000000000000000B
database size: 36.4MB, database backup size: 8.3KB
repo1: backup set size: 4.5MB, backup size: 498B
backup reference list: 20251212-062816F, 20251212-062816F_20251229-072007D
wal archive 的範圍:
000000010000000000000003 / 000000040000000000000009
-
前 8 位數是「時間軸 (Timeline ID)」:
-
Full Backup 在
Timeline 1(00000001...)。 -
最新的 Diff Backup 在
Timeline 4(00000004...)。
-
-
中間 8 位數與後 8 位數是「序號」:
-
從 Timeline 1 跳到 Timeline 4,中間顯然發生了 3 次資料庫狀態的重大變更。
-
Timeline 1:你最初建立 Full Backup 的時候。
-
Timeline 2 & 3:中間執行過還原測試,或是嘗試修復資料庫,每次還原成功並啟動後,Timeline 就會加 1。
-
Timeline 4:你目前資料庫正在運行的狀態。
-
我該擔心「不連號」嗎?
只要 pgBackRest 顯示 status: ok,就不需要擔心。
-
自動處理分支:pgBackRest 會自動處理這種 Timeline 切換。當你要求還原到 Timeline 4 的某個時間點時,它知道要先拉取 Timeline 1 的 Full Backup,然後依序重播 Timeline 1 的 WAL,直到分叉點,再轉向重播 Timeline 4 的 WAL。
-
安全性:你的 Diff Backup (
...072007D) 的wal start/stop是在Timeline 4。這代表這個差異備份是完全基於當前這個「分叉」後的狀態,它是安全的。 -
自動Switch WAL:當 pgBackRest 完成檔案拷貝後,它會呼叫 PostgreSQL 的
pg_stop_backup()(或類似內部函數)。這個動作會強制執行一次pg_switch_wal()。
實戰建議:如果您現在要還原 因為您有 Timeline 切換,如果要進行 PITR,建議在指令中多加一個參數,避免這種時間線的以外增加而導致無法復原期望的時間點。
# 加入 --target-timeline=current 確保它沿著最新的路徑走
sudo -u postgres pgbackrest --stanza=cg_test_prodcut --type=time \
--target="2025-12-29 07:20:00" --target-timeline=current restore