透過備份/復原設備備份及災難復原 PostgreSQL

注意:2027 年 7 月 31 日起,我們將不再支援使用設備管理控制台備份 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. 如要進行資料復原,備份和災難復原會立即掛接可重寫的分段磁碟,並將資料庫上線。

在磁碟區層級快照工作中,暫停或取消暫停指令會在主要執行個體上執行:

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();

運作方式:檔案型備份

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

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

  2. 將測試磁碟掛接至資料庫伺服器。

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

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

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

後續步驟

為備份和災難復原服務準備資料庫

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