PostgreSQL 資料庫備份:兩種 .dump 導出方式的差異與建議
Copyright Notice: This article is an original work licensed under the CC 4.0 BY-NC-ND license.
If you wish to repost this article, please include the original source link and this copyright notice.
Source link: https://v2know.com/article/1124
在日常維運 PostgreSQL 資料庫時,資料備份是不可或缺的一環,而 pg_dump
是官方提供的備份工具。本文將探討常見的兩種導出 .dump
檔案方式,並分析其格式、用途及優劣差異,幫助你選擇更合適的備份策略。
🧰 常見兩種導出寫法
✅ 方式一:純 SQL 格式(文字形式)
pg_dump -U <使用者> -d <資料庫名稱> -E UTF-8 > /path/to/backup/backup_name.dump
-
使用
>
將標準輸出重定向為.dump
檔案。 -
未指定
-F
時,預設輸出為 純文字 SQL 格式(plain format)。 -
實際上這種
.dump
是一份.sql
腳本,只是副檔名習慣上可能被寫為.dump
。
✅ 方式二:自定義格式(Custom Format)
pg_dump -U <使用者> -F c -f /path/to/backup/backup_name.dump <資料庫名稱>
-
使用
-F c
指定導出為 自定義格式(custom format)。 -
使用
-f
指定輸出檔案名稱。 -
輸出為壓縮的
.dump
二進位格式,需使用pg_restore
還原。
🧠 -F c
是什麼?
pg_dump
支援多種備份格式,透過 -F
參數指定格式:
參數 | 格式全名 | 說明 |
---|---|---|
-F p |
plain | 純文字 SQL 腳本(預設) |
-F c |
custom | ✅ 自定義格式(壓縮 + 支援選擇還原) |
-F d |
directory | 每個物件獨立輸出成目錄內的檔案 |
-F t |
tar | tar 格式封裝(適合傳輸) |
其中 -F c
是實務上最推薦的格式。
🧪 差異比較
項目 | 方式一:SQL 格式 (> ) |
方式二:自定義格式 (-F c ) |
---|---|---|
輸出內容 | 純文字 SQL 腳本 | ✅ 壓縮的二進位備份檔 |
還原方式 | psql -f |
pg_restore (功能更強) |
可選擇性還原 | ❌ 不支援 | ✅ 支援(可還原單表、單索引) |
多執行緒支援 | ❌ 無 | ✅ 可用 pg_restore -j N |
壓縮效果 | 無壓縮,檔案較大 | ✅ 內建壓縮,檔案更小 |
可讀性 | ✅ 可人工檢查 SQL 語句 | ❌ 為二進位格式不可讀 |
適合場景 | 單次手動檢查或匯入 | ✅ 正式備份、CI/CD、自動化流程 |
✅ 還原指令對應
SQL 格式的還原:
psql -U <使用者> -d <資料庫> -f backup.sql
自定義格式的還原(建議):
pg_restore -U <使用者> -d <資料庫> -c backup.dump
進階還原方式(多執行緒並行還原):
pg_restore -U <使用者> -d <資料庫> -c -j 4 backup.dump
✅ 實例:跨平台備份差異
假設你在 Linux 環境看到如下備份指令:
pg_dump -U dbuser -d sampledb -E UTF-8 > /var/lib/pgsql/sample_20240401.dump
這樣其實產出的是一份 SQL 腳本,而不是可以用 pg_restore
操作的 .dump
檔。
而在 Windows 上,如果你使用的是以下指令:
pg_dump -U dbuser -F c -f sample_20240401.dump sampledb
這樣才是真正的自定義格式備份,可以更安全、彈性地還原。
🔐 小技巧:避免密碼提示
在指令前設置環境變數可自動提供密碼:
PGPASSWORD=yourpassword pg_dump ...
也適用於 pg_restore
。
🧾 建議與結語
建議 | 說明 |
---|---|
優先使用 -F c 自定義格式備份 |
兼顧安全、壓縮與還原彈性 |
不建議單純使用 > 重定向備份 .dump |
容易誤導,實際是 SQL 檔案 |
定期測試還原流程 | 備份只是第一步,驗證還原才是真正保障 |
搭配 pg_restore 熟悉細節操作 |
如 -j 並行還原、-t 指定表、--schema 指定 schema 等 |
有了這些知識,你就能根據實際需求選擇正確的備份方式,確保 PostgreSQL 資料的完整與可靠。
This article was last edited at