備份/復原設備上的 PostgreSQL 適用的備份和災難復原服務

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 密集型作業。

以下步驟說明資料備份和復原程序:

  1. 備份和災難復原代理程式具有 CBT,可追蹤資料庫資料區域中變更的區塊。

  2. 代理程式會呼叫資料庫 API,凍結或暫停資料庫以備份資料。

  3. 代理程式會建立資料庫資料區域的 LVM 快照,並合成點陣圖。

  4. 代理程式呼叫資料庫 API,以解除凍結資料庫。

  5. 代理程式會將異動的區塊複製到備份/復原設備,然後刪除快照並編目備份。

  6. 設備會發出內部快照,並合成時間點虛擬完整備份。

  7. 進行資料復原時,「備份和災難復原」會立即掛接可重寫的暫存磁碟,並將資料庫上線。

主要上執行 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();

運作方式:以檔案為基礎的備份

下列步驟說明如何使用檔案型備份執行資料備份和復原:

  1. 備份和災難復原代理程式部署在資料庫伺服器中。

  2. 在資料庫伺服器上掛接暫存磁碟。

  3. 使用傾印備份指令叫用完整備份,將備份寫入已掛接的磁碟。

  4. 備份和災難復原服務會建立內部快照。 記錄備份作業會以類似方式直接從檔案系統執行,並按照您設定的排程進行。

  5. 如要進行資料復原,備份和災難復原會立即將暫存磁碟掛接到資料庫伺服器,並啟動資料庫還原作業。資料庫還原後,記錄可播放至任何時間點。

後續步驟

準備備份和災難復原用的資料庫

PostgreSQL 適用的備份和災難復原其他說明文件