PostgreSQL 是功能強大的開放原始碼物件關聯式資料庫系統,使用並擴充 SQL 語言,結合多項功能,可安全地儲存及擴充最複雜的資料工作負載。
備份和災難復原使用的 PostgreSQL 備份 API
磁碟區層級 (Linux 變更區塊追蹤和 LVM 快照) 備份: 使用 Linux 變更區塊追蹤和 LVM 快照執行備份時,備份和災難復原 會使用 PostgreSQL
pg_start_backup(label)和pg_stop_backup()指令。完整 + 增量 (以檔案為基礎的傳統) 備份:備份和災難復原 會使用 PostgreSQL
pg_dump以檔案為基礎的備份指令。pg_dump指令沒有擷取資料庫增量變更的選項,因此每次備份都是完整的資料庫傾印備份。還原資料庫時,系統會實際覆寫資料區域,藉此復原資料庫。
PostgreSQL 記錄檔備份:在記錄檔備份期間,備份和災難復原 會實際複製所有 PostgreSQL WAL (
WriteAheadLog)。如要清除記錄檔,備份和災難復原 會使用 OS 層級的指令。
運作方式:使用 Linux CBT 進行備份和災難復原的磁碟區備份
點陣圖只會追蹤變更的區塊,不會執行寫入時複製作業,也不會進行 I/O 密集型作業。
以下步驟說明資料備份和復原程序:
備份和災難復原代理程式具有 CBT,可追蹤資料庫資料區域中變更的區塊。
代理程式會呼叫資料庫 API,凍結或暫停資料庫以備份資料。
代理程式會建立資料庫資料區域的 LVM 快照,並合成點陣圖。
代理程式呼叫資料庫 API,以解除凍結資料庫。
代理程式會將異動的區塊複製到備份/復原設備,然後刪除快照並編目備份。
設備會發出內部快照,並合成時間點虛擬完整備份。
進行資料復原時,「備份和災難復原」會立即掛接可重寫的暫存磁碟,並將資料庫上線。
在主要上執行 quiesce 或 unquiesce 指令,以進行磁碟區層級的快照工作:
select pg_start_backup(<label>);
select pg_stop_backup();
在待命節點上執行 quiesce 和 unquiesce 指令,以進行磁碟區層級快照工作:
如果 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 適用的備份和災難復原其他說明文件
- PostgreSQL 備份和災難復原
- 準備備份和災難復原用的資料庫
- 新增 PostgreSQL 資料庫主機並探索資料庫
- 定義政策範本和資源設定檔
- 設定應用程式詳細資料和設定
- 檢查暫存磁碟格式和備份方法
- 保護 PostgreSQL 資料庫及其記錄
- 掛接 PostgreSQL 資料庫
- 復原 PostgreSQL 備份
- 建立 PostgreSQL 備份和災難復原工作流程