想像一下,你的資料庫就像一個超大圖書館,裡面有成千上萬本書。全備份就像每天晚上派快遞把所有書都複製一遍。如果其實沒什麼變化呢?這樣不只慢,還會讓運輸超級忙,佔掉一堆空間。這時候增量備份和差異備份就派上用場啦!我們要聰明一點,只備份真的有變動的部分。
今天我們要聊這幾種備份:
- 全備份:把整個資料庫都複製下來。
- 增量備份:只複製自從上次備份後有變動的部分。
- 差異備份:複製自從上次全備份後所有的變動。
每種方式都有自己的優點、缺點和適用場景。我們來細看一下。
全備份
全備份(Full Backup)就是把當下整個資料庫完整複製一份。它會包含資料庫的結構(像是表格、索引、schema)和所有資料。簡單說,就是幫資料庫拍一張「快照」。
全備份指令範例:
pg_dump -U username -d database_name -F c -f full_backup.dump
這裡:
-U username— PostgreSQL 使用者名稱。-d database_name— 資料庫名稱。-F c— 備份格式(custom,方便用pg_restore還原)。-f full_backup.dump— 備份檔案名稱。
關於 pg_dump 這個指令和它的參數,之後的課程會再細講 :P
全備份的優點:
- 還原超簡單。 如果出事了,全備份可以直接把整個資料庫救回來。
- 完整資料快照。 可以用來搬移資料庫到別的伺服器或環境。
全備份的缺點:
- 資料量大:全備份可能超大,尤其是資料很多的時候。
- 花時間:資料越多,備份越久。
- 佔空間:每次全備份都要一份新空間,會吃掉很多儲存資源。
什麼時候用全備份?
- 第一次做備份的時候。
- 要對資料庫做重大變更前。
- 長期歸檔(做一份全備份丟到「冷」儲存)。
增量備份
增量備份(Incremental Backup)只會存下自從上次備份(不管是全備份還是增量備份)後有變動的檔案。這樣可以大幅省下硬碟空間,也讓備份速度變快。
在 PostgreSQL 裡,增量備份可以用 pgBackRest 這個工具來做——它很強大,支援全備份、增量備份、差異備份的策略。
pgBackRest 怎麼運作?
pgBackRest會用 metadata 和檔案 checksum 來判斷有沒有變動。- 只有真的有變動的檔案才會被納入增量備份。
- 支援自動歸檔 WAL 檔案,可以做到 point-in-time recovery。
增量備份指令範例:
pgbackrest --stanza=main --type=incr backup
這裡:
--stanza=main— 設定檔名稱(針對特定資料庫的一組參數)。--type=incr— 指定這次是增量備份。
第一次做增量備份前,一定要先有一份全備份(--type=full)。
用 pgBackRest 做增量備份的優點:
- 省空間:只複製有變動的檔案。
- 速度快:如果變動不多,備份超快。
- 自動管理 WAL:pgBackRest 會自動歸檔和套用 WAL 檔案。
- 還原彈性高:可以選擇還原到某個時間點(PITR)。
缺點和注意事項:
- 需要先設定:要設定
stanza、repository 目錄、權限等等。 - 新手會覺得複雜:要懂 WAL 跟 PostgreSQL 架構。
- 依賴 repository:所有備份都集中存放,要好好管理儲存空間。
什麼時候用增量備份?
- 資料庫常常有更新。
- 全備份太大或太花時間。
- 想要自動化又可靠的備份策略,還想省資源。
差異備份
差異備份(Differential Backup)會存下自從上次全備份後所有的變動。跟增量備份不一樣的是,每次差異備份都包含自從上次全備份以來的所有變動。所以要還原資料庫,只需要最後一份全備份和最後一份差異備份就夠了。
流程範例:
- 第一天晚上:做一份全備份(A)。
- 第二天晚上(B):做一份差異備份——包含從 A 以來的所有變動。
- 第三天晚上(C):再做一份差異備份——也是從 A 以來的所有變動。
優點:
- 還原簡單:只要全備份和最後一份差異備份就能還原。
- 比全備份快:差異備份只複製變動的部分,比全備份快很多。
缺點:
- 備份檔案會變大:每做一次差異備份,檔案就會更大,因為會累積所有變動。
- 佔空間:長期下來,可能比增量備份更佔空間。
差異備份適合想要簡化還原流程的時候:它會存下自從上次全備份以來的所有變動。這對於資料常常變動,但每次都做全備份太花時間或資源的情況很方便。這時候差異備份就是速度和可靠性的好平衡。
備份類型比較
| 備份類型 | 全備份 | 增量備份 | 差異備份 |
|---|---|---|---|
| 資料量 | 最大 | 最小 | 中等 |
| 備份時間 | 很久 | 很快 | 普通 |
| 還原 | 超簡單 | 比較複雜(要所有備份) | 中等(要全備份和最後一份差異備份) |
| 什麼時候用 | 第一次備份、搬移 | 即時、常常備份 | 定期備份 |
要選哪種備份方式,主要看你對資料安全的要求、資料更新頻率和資源多寡。小型資料庫可以定期全備份。資料庫越大,增量備份越能幫你省空間。如果你很在意還原速度,差異備份會是不錯的選擇。最重要的是——記得定期備份,還有自動化設定!
GO TO FULL VERSION