在適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中備份與還原

適用範圍:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

備份是任何商務持續性策略中不可或缺的一部分。 它們可協助保護數據免於意外損毀或刪除。

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器會自動執行伺服器的一般備份。 然後,您可以在您指定的保留期間內執行時間點復原 (PITR)。 還原和復原的整體時間通常取決於數據大小和要執行的復原量。

備份概觀

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器會擷取數據檔的快照集備份,並根據區域安全地將它們儲存在區域備援記憶體或本地備援記憶體中。 當預先寫入記錄檔 (WAL) 檔案準備好封存時,伺服器也會備份事務歷史記錄。 您可以使用這些備份,將伺服器還原到已設定備份保留期間內的任何時間點。

默認備份保留期限為 7 天,但您可以將期間延長至最多 35 天。 所有備份都會透過 AES 256 位加密來加密待用數據。

這些備份檔無法匯出或用來在 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器外部建立伺服器。 為此,您可以使用 PostgreSQL 工具pg_dump和 pg_restore/psql。

備份頻率

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例上的備份是以快照集為基礎。 建立伺服器之後,系統會立即排程第一次快照集備份。 快照集備份目前每天會進行一次。 如果在建立最後一個快照集備份之後,伺服器中的任何資料庫都未收到任何進一步修改,則快照集備份會暫停,直到任何資料庫中進行新的修改為止,此時會立即建立新的快照集。 第一個快照集是完整備份,連續快照集是差異備份。

交易記錄備份會根據工作負載和 WAL 檔案填滿並準備封存的時間而訂,以不同的頻率來進行。 一般而言,延遲 (復原點目標,或 RPO) 最多可達 15 分鐘。

備份備援選項

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器會儲存多個備份複本,以協助保護您的數據免於計劃性和非計劃性事件。 這些事件可能包括暫時性硬體故障、網路或電源中斷,以及自然災害。 備份備援有助於確保您的資料庫符合其可用性和持久性目標,即使發生失敗也一樣。

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器提供三個選項:

  • 區域備援備份記憶體:此選項會自動針對支援可用性區域的區域選擇。 當備份儲存在區域備援備份記憶體中時,多個復本不僅儲存在相同的可用性區域內,也會復寫到相同區域內的其他可用性區域。

    此選項可跨可用性區域提供備份數據可用性,並限制將數據復寫到國家/區域內以符合數據落地需求。 此選項提供至少 99.99999999999% (129s) 的備份物件一年持久性。

  • 本地備援備份記憶體:此選項會自動針對尚不支援可用性區域的區域選擇。 當備份儲存在本地備援備份記憶體中時,多個備份複本會儲存在相同的數據中心。

    此選項可協助保護您的資料免於伺服器機架和磁碟驅動器故障。 它提供至少 99.99999999999% (119s) 的備份物件一年持久性。

    根據預設,相同區域高可用性 (HA) 或沒有高可用性設定的伺服器備份記憶體會設定為本地備援。

  • 異地備援備份記憶體:您可以在伺服器建立時選擇此選項。 當備份儲存在異地備援備份記憶體中時,除了儲存在伺服器裝載區域內的三份數據外,數據也會復寫到異地配對區域。

    此選項可讓您在發生災害時,在不同的區域中還原伺服器。 這也提供在一年中至少 99.99999999999999% (16 個 9) 的備份物件持久性。

    任何 Azure 配對區域中裝載的伺服器都支援異地備援。

從其他備份儲存體選項移至異地備援備份儲存體

您只能在伺服器建立期間設定異地備援記憶體進行備份。 布建伺服器之後,您無法變更備份記憶體備援選項。

備份保留

備份會根據您為伺服器設定的保留期間來保留。 您可以選取介於 7 天到 35 天的保留期間。 您可以在伺服器建立期間設定保留期間,或稍後加以變更。 即使已停止的伺服器也會保留備份。

備份保留期間會控管使用可用備份擷取 PITR 的時間範圍。 您也可以從還原的觀點將備份保留期間視為復原視窗。

備份保留期間內執行 PITR 所需的所有備份都會保留在備份記憶體中。 例如,如果備份保留期間設定為7天,則復原時間範圍是過去7天。 在此案例中,會保留過去 7 天內還原和復原伺服器所需的所有數據和記錄。

備份儲存體成本

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器最多可提供 100% 的已布建伺服器記憶體作為備份記憶體,而不需要額外費用。 您所使用的任何其他備份記憶體每月會以 GB 為單位收費。

例如,如果您布建的伺服器具有 250 gibibytes (GiB) 的記憶體,則您不需額外費用擁有 250 GiB 的備份記憶體容量。 如果每日備份使用量為 25 GiB,則最多可以有 10 天的免費備份記憶體。 超過 250 GiB 的 備份記憶體耗用量會依定價模式中所定義收費。

如果您使用異地備援備份來設定伺服器,備份數據也會複製到 Azure 配對區域。 因此,您的備份大小會是本機備份複本大小的兩倍。 計費計算為 (2 x 本機備份大小) - 布建的記憶體大小 ) x 價格 @ GB 每月

您可以使用 Azure 入口網站 中使用備份 儲存體 計量來監視伺服器所使用的備份記憶體。 Backup 儲存體 Used 計量代表所有保留的資料庫備份和記錄備份所耗用的記憶體總和,根據針對伺服器設定的備份保留期間。

注意

不論資料庫大小為何,伺服器上的大量交易活動會產生更多WAL檔案。 檔案的增加又會增加備份記憶體。

時間點復原

在 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中,執行 PITR 會在與來源伺服器相同的區域中建立新的伺服器,但您可以選擇可用性區域。 其建立方式為定價層、計算產生、虛擬核心數目、記憶體大小、備份保留期間,以及備份備援選項。 此外,虛擬網路和防火牆設定等標籤和設定也會繼承自來源伺服器。

實體資料庫檔案會先從快照集備份還原到伺服器的數據位置。 系統會自動選擇並還原早於所需時間點的適當備份。 然後,復原程式會從使用WAL檔案開始,讓資料庫處於一致狀態。

例如,假設備份會在晚上 11:00 執行。 如果還原點是 8 月 15 日上午 10:00,則會還原 8 月 14 日的每日備份。 資料庫會使用從 8 月 14 日下午 11:00 到 10:00 上午 10:00 的事務歷史記錄備份,復原到 8 月 15 日上午 10:00 為止。

若要還原資料庫伺服器,請參閱 這些步驟

重要

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的還原作業一律會以您提供的名稱建立新的資料庫伺服器。 它不會覆寫現有的資料庫伺服器。

PITR 在這類案例中很有用:

  • 使用者不小心刪除數據、數據表或資料庫。
  • 應用程式因為應用程式缺陷而意外覆寫不良數據。
  • 您要複製伺服器以進行測試、開發或資料驗證。

透過事務歷史記錄的持續備份,您可以還原至最後一筆交易。 您可以選擇下列還原選項:

  • 最新的還原點(現在):這是預設選項,可讓您將伺服器還原至最新的時間點。

  • 自訂還原點:此選項可讓您在此 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例定義的保留期間內選擇任何時間點。 根據預設,系統會自動選取UTC的最新時間。 如果您想要還原至最後一個認可的交易以供測試之用,則自動選取會很有用。 您可以選擇選擇其他天數和時間。

  • 快速還原點:此選項可讓使用者在為 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例定義的保留期間內,以最快的時間還原伺服器。 您可以直接從備份清單中選擇時間戳,以取得最快的還原。 此還原作業會布建伺服器,並只會還原完整快照集備份,而且不需要復原任何記錄,這可讓記錄變得快速。 建議您選取備份時間戳,其大於成功還原作業的最早還原時間點。

使用最新和自定義還原點選項進行復原所需的時間會根據事務歷史記錄量等因素而有所不同,例如上次備份後要處理的事務歷史記錄數量,以及在同一個區域中同時復原的資料庫總數。整體復原時間通常需要幾分鐘到幾個小時。

如果您在虛擬網路內設定伺服器,則可以還原至相同的虛擬網路或不同的虛擬網路。 不過,您無法還原至公用存取。 同樣地,如果您使用公用存取來設定伺服器,則無法還原至專用虛擬網路存取。

重要

已刪除的伺服器可以還原。 如果您刪除伺服器,您可以遵循我們的指引還原已卸除的 Azure 資料庫以進行 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器進行復原。 使用 Azure 資源鎖定來協助防止伺服器意外遭到刪除。

異地備援備份和還原

若要從 Azure 入口網站 中的 [計算 + 記憶體] 窗格啟用異地備援備份,請參閱快速入門指南

重要

異地備援備份只能在伺服器建立時設定。

使用異地備援備份設定伺服器之後,您可以將它還原到 異地配對區域。 如需詳細資訊,請參閱 異地備援備份的支持區域

伺服器設定為異地備援備份時,備份資料和交易記錄會透過儲存體複寫以非同步方式複製到配對的區域。 建立伺服器之後,請至少等候一小時,再起始異地還原。 這可讓第一組備份數據復寫到配對的區域。

之後,事務歷史記錄和每日備份會以異步方式複製到配對的區域。 數據傳輸可能會延遲最多一小時。 因此,當您還原時,最多可以預期一個小時的 RPO。 您只能還原至配對區域中可用的最後一個可用備份數據。 目前無法使用異地備援備份的 PITR。

復原伺服器的估計時間(復原時間目標或 RTO)取決於資料庫大小、上次資料庫備份時間,以及要處理到上次接收備份數據為止的 WAL 數量。 整體復原時間通常需要幾分鐘到幾個小時。

在異地還原期間,可以變更的伺服器組態包括虛擬網路設定,以及從還原的伺服器移除異地備援備份的能力。 不支援在異地還原期間變更其他伺服器組態,例如計算、記憶體或定價層(高載、一般用途或記憶體優化)。

如需執行異地還原的詳細資訊,請參閱 操作指南

重要

當主要區域關閉時,您無法在個別的異地配對區域中建立異地備援伺服器,因為無法在主要區域中布建記憶體。 您必須先等候主要區域啟動,才能在異地配對區域中布建異地備援伺服器。

在主要區域關閉時,您仍然可以將來源伺服器異地還原至異地配對區域。 如需執行異地還原的詳細資訊,請參閱 操作指南

還原和網路功能

時間點復原

如果您的來源伺服器是使用 公用存取 網路設定的,您只能還原至公用存取。

如果您的來源伺服器已設定為 私人存取 虛擬網路,您可以還原至相同的虛擬網路或不同的虛擬網路。 您無法跨公用和私人存取執行 PITR。

異地復原

如果您的來源伺服器是使用 公用存取 網路設定的,您只能還原至公用存取。 此外,您必須在還原作業完成之後套用防火牆規則。

如果您的來源伺服器已設定為 私人存取 虛擬網路,您就只能還原至不同的虛擬網路,因為虛擬網路無法跨越區域。 您無法跨公用和私人存取執行異地還原。

還原後工作

還原資料庫之後,您可以執行下列工作,讓您的使用者和應用程式備份並執行:

  • 如果新伺服器用來取代原始伺服器,則系統會將用戶端和用戶端應用程式重新導向至新伺服器。 將 連接字串 的伺服器名稱變更為指向新的伺服器。

  • 請確定適當的伺服器層級防火牆和虛擬網路規則已就緒供用戶連線使用。 不會從原始伺服器複製這些規則。

  • 視需要相應增加或相應減少還原伺服器的計算。

  • 請確定已就緒適當的登入和資料庫層級許可權。

  • 視需要設定警示。

  • 如果您還原了設定高可用性的資料庫,而且如果您想要設定具有高可用性的還原伺服器,則可以遵循 下列步驟

長期保留(預覽)

Azure 備份 和 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器服務已針對 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例建置企業級的長期備份解決方案,將備份保留最多 10 年。 除了 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器所提供的自動備份解決方案之外,您也可以獨立使用長期保留,其最多可保留 35 天。 自動備份是適用於作業復原的實體備份,當您想要從最新的備份還原時,尤其適用。 長期備份可協助您符合合規性需求、更細微,並使用原生pg_dump作為邏輯備份。 除了長期保留之外,此解決方案還提供下列功能:

  • 在個別資料庫層級進行客戶控制的排程和隨需備份。
  • 集中監視所有作業和工作。
  • 儲存在個別安全性和容錯網域中的備份。 如果來源伺服器或訂用帳戶遭入侵,備份保存庫中的備份仍安全無虞 (在 Azure 備份受控儲存體帳戶中)。
  • 使用pg_dump可讓您在不同資料庫版本還原數據時有更大的彈性。
  • Azure 備份保存庫支援不變性和虛刪除 (預覽版) 功能,以保護資料。

限制與考量

  • 在預覽中,LTR 還原目前以 RestoreasFiles 的形式提供至記憶體帳戶。 RestoreasServer 功能將會在未來新增。
  • 在預覽版中,您可以為所有資料庫執行 LTR 備份,未來將會新增單一資料庫備份支援。
  • 已啟用 CMK 的伺服器目前不支援 LTR 備份。 未來將會新增這項功能。
  • 異地復本目前不支援 LTR 備份。 您仍然可以從主伺服器執行 LTR 備份。

如需執行長期備份的詳細資訊,請流覽 操作指南

常見問題集

  • Azure 如何處理伺服器的備份?

    根據預設,適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器可讓您自動備份整個伺服器(包含建立的所有資料庫),預設保留期間為7天。 自動備份包含資料庫的每日增量快照集。 記錄檔 (WAL) 檔案會持續封存至 Azure Blob 儲存體。

  • 我可以設定自動備份以長期保留數據嗎?

    否。 目前,適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器最多支援35天的保留期。 您可以針對長期保留需求使用手動備份。

  • 如何? 手動備份 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例?

    您可以使用 PostgreSQL 工具 pg_dump手動進行備份。 如需範例,請參閱使用傾印和還原來移轉您的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器資料庫。

    如果您想要將 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器備份至 Blob 儲存體,請參閱技術社群部落格上的備份 適用於 PostgreSQL 的 Azure 資料庫 至 Blob 儲存體

  • 我的伺服器備份時段為何? 我可以自定義嗎?

    Azure 會管理備份視窗,而且您無法加以自定義。 建立伺服器之後,會立即排程第一次完整快照集備份。 後續的快照集備份為累加式備份,且每天進行一次。

  • 備份是否會加密?

    是。 所有 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器數據、備份和查詢執行期間建立的暫存盤都會透過 AES 256 位加密來加密。 儲存體加密會一律啟用,且無法停用。

  • 我可以還原單一資料庫或伺服器中的一些資料庫嗎?

    不支援還原單一資料庫或少數資料庫或數據表。 不過,您可以將整個伺服器還原到新的伺服器,然後擷取數據表或資料庫,並將其匯入新伺服器。

  • 備份進行時,我的伺服器是否可用?

    是。 備份是使用快照集的在線作業。 快照集作業只需要幾秒鐘,而且不會干擾生產工作負載,以協助確保伺服器的高可用性。

  • 當我設定伺服器的維護期間時,是否需要考慮備份視窗?

    否。 備份會在內部觸發,做為受控服務的一部分,且不會影響維護期間。

  • 我的自動備份儲存在哪裡,以及如何管理其保留?

    適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器會自動建立伺服器備份,並將其儲存在:

    • 區域備援記憶體,位於支援多個區域的區域。
    • 本地備援記憶體,在尚不支援多個區域的區域中。
    • 如果您設定異地備援備份,則為配對的區域。

    這些備份檔案無法匯出。

    您只能使用備份將伺服器還原到某個時間點。 默認備份保留期限為 7 天。 您可以選擇性地設定最多 35 天的備份保留期。

  • 使用異地備援備份,備份會複製到配對區域的頻率?

    當伺服器設定為異地備援備份時,備份數據會儲存在異地備援記憶體帳戶中。 儲存體帳戶會在主伺服器進行每日備份時,將數據檔複製到配對的區域。 WAL 檔案會在準備封存時進行備份。

    備份數據會以連續方式以異步方式複製到配對的區域。 在接收備份數據時,您最多可以預期有一個小時的延遲。

  • 我可以在遠端區域執行 PITR 嗎?

    否。 數據會復原到遠端區域中的最後一個可用備份數據。

  • 在已啟用HA的伺服器中如何執行備份?

    適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中的數據磁碟區會透過來自主伺服器的受控磁碟增量快照集進行備份。 WAL 備份是從主伺服器或待命伺服器執行。

  • 如何驗證備份是否在伺服器上執行?

    檢查備份的最佳方式是執行定期 PITR,並確保備份有效且可還原。 備份作業或檔案不會向終端使用者公開。

  • 我可以在哪裡查看備份使用量?

    在 Azure 入口網站 的 [監視] 底下,選取 [計量]。[備份] 儲存體 [已使用] 中,您可以監視備份使用量總計。

  • 如果我刪除伺服器,我的備份將會如何?

    如果您刪除伺服器,則也會刪除屬於伺服器的所有備份,而且無法復原。 為了協助保護伺服器資源免於在部署後意外刪除或非預期的變更,系統管理員可以使用管理鎖定。

  • 已停止伺服器的備份如何保留?

    不會為已停止伺服器執行任何新的備份。 在停止伺服器時,所有較舊的備份(在保留期間內)都會保留,直到伺服器重新啟動為止。 之後,作用中伺服器的備份保留會受到其保留時間範圍所控管。

  • 如何支付備份的費用和費用?

    適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器最多可提供 100% 的已布建伺服器記憶體作為備份記憶體,而不需要額外費用。 您所使用的備份記憶體會依每月 GB 為單位收費,如定價模式中所定義。

    您選取的備份保留期間和備份備援選項,以及伺服器上的交易活動,直接影響到備份記憶體和帳單總計。

  • 如何針對已停止的伺服器計費?

    當伺服器實例停止時,不會執行任何新的備份。 您需支付已布建的記憶體和備份記憶體的費用(儲存在指定保留期間內的備份)。

    免費備份記憶體受限於布建資料庫的大小。 任何多餘的備份數據都會根據備份價格收費。

  • 我已設定具有區域備援高可用性的伺服器。 您是否要進行兩次備份,而我是否會收取兩次費用?

    否。 不論HA或非HA伺服器為何,只會維護一組備份複本。 您只需收取一次費用。

  • 如何? 還原我的伺服器嗎?

    Azure 支援 所有伺服器的 PITR。 用戶可以使用 Azure 入口網站、Azure CLI 和 API 還原至最新的還原點或自定義還原點。

    若要使用 pg_dump 之類的工具來從手動備份還原伺服器,您可以先建立 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例,然後使用 pg_restore 將資料庫還原至伺服器

  • 我可以還原至相同區域內的另一個可用性區域嗎?

    是。 如果區域支援多個可用性區域,備份會儲存在區域備援記憶體帳戶上,以便還原至另一個區域。

  • PITR 需要多久時間? 為何還原如此費時?

    快照集的數據還原作業不取決於數據的大小。 但是套用記錄的復原程序時間(要重新執行的交易活動)可能會有所不同,視先前要求的日期/時間和要處理的記錄數目而定。 這適用於在相同區域內還原或將數據還原至不同區域。

  • 如果我還原已啟用HA的伺服器,還原伺服器是否會自動設定高可用性?

    否。 伺服器會還原為單一實例 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例。 還原完成之後,您可以選擇性地設定具有高可用性的伺服器。

  • 我在虛擬網路內設定了我的伺服器。 我可以還原至另一個虛擬網路嗎?

    是。 在還原時,請選擇要還原至的不同虛擬網路。

  • 我是否可以將公用存取伺服器還原至虛擬網路,反之亦然?

    否。 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器目前不支援跨公用和私人存取還原伺服器。

  • 如何? 追蹤我的還原作業?

    目前,無法追蹤還原作業。 您可以監視活動記錄檔,以查看作業是否正在進行中或完成。

下一步