PostgreSQL 是功能強大的開放原始碼物件關聯式資料庫系統,可使用及擴充 SQL 語言,並結合多項功能,安全地儲存及調整最複雜的資料工作負載。
備份和災難復原服務使用的 PostgreSQL 備份 API
磁碟區層級 (Linux 變更區塊追蹤和 LVM 快照) 備份:在使用 Linux 變更區塊追蹤和 LVM 快照執行備份作業時,備份和 DR 會使用 PostgreSQL
pg_start_backup(label)
和pg_stop_backup()
指令。完整備份 + 增量備份 (檔案式傳統備份):備份和 DR 會使用 PostgreSQL
pg_dump
檔案式備份指令。pg_dump
指令沒有擷取資料庫增量變更的選項,因此每個備份都是完整的資料庫轉儲備份。資料庫還原作業會透過實際覆寫資料區域來復原資料庫。
PostgreSQL 記錄備份:在記錄備份期間,備份和 DR 會實際複製所有 PostgreSQL WAL (
WriteAheadLog
)。如要清除記錄,備份和 DR 會使用作業系統層級指令。
運作方式:使用 Linux CBT 進行備份和災難復原磁碟區備份
只有變更的區塊會在位元陣列中追蹤:沒有寫入時複製,也沒有大量 I/O 的作業。
以下步驟說明資料備份和復原程序:
備份和 DR 代理程式會使用 CBT 追蹤資料庫資料區域中的變更區塊。
代理程式會呼叫資料庫 API,凍結或暫停資料庫,以便備份資料。
代理程式會建立資料庫資料區域的 LVM 快照,並合成點陣圖。
代理人呼叫資料庫 API 來解凍資料庫。
代理程式會將變更的區塊複製到備份/復原設備,然後刪除快照並編目備份。
應用程式會發出內部快照,並合成某個時間點的虛擬完整備份。
在資料復原作業中,備份和災難復原服務會立即掛載可重寫的暫存磁碟,並將資料庫上線。
系統會在主要節點上執行靜默或取消靜默指令,以便執行磁區層級快照工作:
select pg_start_backup(<label>);
select pg_stop_backup();
系統會在待命節點上執行靜默和取消靜默指令,以便執行磁區層級快照工作:
如果 PostgreSQL 版本為 10.x 以上版本:
select pg_wal_replay_pause();
select pg_wal_replay_resume();
如果 PostgreSQL 版本為 9.x:
select pg_xlog_replay_pause();
select pg_xlog_replay_resume();
運作方式:檔案式備份
以下步驟說明如何使用檔案型備份映像檔執行資料備份和復原作業:
備份和災難復原代理已部署在資料庫伺服器中。
在資料庫伺服器上掛接暫存磁碟。
使用備份轉存指令叫用完整備份,將備份寫入已掛載的磁碟。
備份和災難復原會擷取內部快照。系統會在您設定的任何時間表上,直接從檔案系統以類似方式執行記錄備份作業。
在資料復原作業中,備份和災難復原功能會立即將暫存磁碟掛載到資料庫伺服器,並啟動資料庫還原作業。還原資料庫後,您可以隨時播放記錄。
後續步驟
PostgreSQL 備份和 DR 的其他說明文件
- PostgreSQL 的備份和 DR 服務
- 為備份和 DR 服務準備資料庫
- 新增 PostgreSQL 資料庫主機並探索資料庫
- 定義政策範本和資源設定檔
- 設定應用程式詳細資料和設定
- 檢查暫存磁碟格式和備份方法
- 保護 PostgreSQL 資料庫及其記錄
- 掛載 PostgreSQL 資料庫
- 還原 PostgreSQL 備份
- 建立 PostgreSQL 備份和 DR 工作流程