在適用於 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 (恢復點目標) 最多可達 5 分鐘。
備份備援選項
適用於 PostgreSQL 的 Azure 資料庫彈性伺服器會儲存備份的多個複本,藉以協助保護您的資料免於計劃性和非計劃性事件。 這些事件可能包括暫時性硬體故障、網路或電源中斷,以及自然災害。 備份備援有助於資料庫即使在發生失敗時也能滿足可用性和持久性目標。
適用於 PostgreSQL 的 Azure 資料庫彈性伺服器提供三個選項:
區域備援備份儲存體:此選項會自動針對支援可用性區域的區域選擇。 當備份儲存在區域備援備份記憶體中時,數據復本會保留在裝載伺服器的可用性區域內。 此外,數據會復寫至另一個可用性區域,以供新增保護。
此選項提供跨可用性區域的備份資料可用性,並將資料複寫限制在國家/地區內,藉以符合資料落地需求。 此選項提供在一年中至少 99.9999999999% (12 個 9) 的備份物件持久性。
本地備援備份儲存體:此選項會自動針對尚未支援可用性區域的區域選擇。 當備份儲存在本地備援備份儲存體時,備份的多個複本會儲存在相同的資料中心。
此選項有助於保護資料以避免伺服器機架和磁碟機失敗。 這提供在一年中至少 99.999999999% (11 個 9) 的備份物件持久性。
根據預設,具有相同區域高可用性 (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 入口網站中使用的備份儲存體計量來監視伺服器所使用的備份儲存體。 使用的備份儲存體計量代表根據為伺服器設定的備份保留期間,保留的全部資料庫備份和記錄備份所耗用的儲存空間總和。
注意
不論資料庫大小為何,伺服器上的大量交易活動會產生更多 WAL 檔案。 檔案的增加也會增加備份儲存體。
時間點復原
在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中,執行 PITR 會在與來源伺服器相同的區域中建立新的伺服器,但您可以選擇可用性區域。 其使用來源伺服器的設定來建立,包含價格層、計算世代、虛擬核心數目、儲存體大小、備份保留期限,以及備份備援選項。
實體資料庫檔案會先從快照集備份還原到伺服器的資料位置。 系統會自動選擇並還原早於所需時間點的適當備份。 然後,復原程序會從使用 WAL 檔案開始,讓資料庫處於一致的狀態。
例如,假設備份會在每天晚上 11:00 執行。 如果還原點是 8 月 15 日上午 10:00,則會還原 8 月 14 日的每日備份。 資料庫將在 8 月 15 日上午 10:00 之前復原,方法是使用 8 月 14 日晚上 11:00 到 8 月 15 日上午 10:00 的交易記錄備份。
若要還原資料庫伺服器,請參閱下列步驟。
重要
在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中的還原作業一律會以您提供的名稱建立新資料庫伺服器。 這不會覆寫現有的資料庫伺服器。
PITR 在如下情節中很有用:
- 使用者不小心刪除資料、資料表或資料庫。
- 應用程式可能會因為應用程式缺陷,而意外以不正確的資料覆寫正確資料。
- 建議您複製伺服器以進行測試、開發或資料驗證。
使用交易記錄的連續備份,您可以還原至最後一筆交易。 您可以選擇下列其中一個還原選項:
最新還原點 (現在):這是預設選項,可讓您將伺服器還原到最新時間點。
自訂還原點:此選項可讓您在為此適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體定義的保留期間內選擇任何時間點。 根據預設,會自動選取 UTC 的最新時間。 如果您想要還原至最後一個認可的交易以供測試之用,則自動選取會很有用。 您可以選擇性選擇其他天數和時間。
快速還原點:此選項可讓使用者在為其適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體定義的保留期間內,盡可能以最快的時間還原伺服器。 您可以直接從備份清單中選擇時間戳記以快速還原。 此還原作業會佈建伺服器,並直接還原完整快照集備份,而且不需要復原任何記錄,因此可加快速度。 我們建議您選取大於成功還原作業最早還原點的備份時間戳記。
使用最新和自訂還原點選項進行復原所需的時間因因素而異,例如自上次備份以來要處理的交易記錄量以及同一區域中同時復原的資料庫總數。整體復原時間通常需要幾分鐘到幾個小時。
如果您在虛擬網路內設定伺服器,您可以還原至相同或不同的虛擬網路。 不過,您無法還原至公用存取。 同樣地,如果您使用公用存取來設定伺服器,則無法還原至私人虛擬網路存取。
重要
可以還原已刪除的伺服器。 如果您刪除伺服器,可以按照我們的指引還原已捨棄的適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器來進行復原。 使用 Azure 資源鎖定來協助防止伺服器意外遭到刪除。
異地備援備份和還原
若要從 Azure 入口網站 中的 [計算 + 記憶體] 窗格啟用異地備援備份,請參閱建立 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的實例。
重要
異地備援備份只能在伺服器建立時設定。
使用異地備援備份來設定伺服器之後,您可以將其還原至異地配對區域。 如需詳細資訊,請參閱異地備援備份的支援區域。
伺服器設定為異地備援備份時,備份資料和交易記錄會透過儲存體複寫以非同步方式複製到配對的區域。 建立伺服器之後,請至少等候一小時,再起始異地還原。 這可讓第一組的備份資料複寫到配對區域。
稍後,交易記錄和每日備份會以非同步方式複製到配對的區域。 資料傳輸最多可能會有一小時的延遲。 因此,當您還原時,最多可以預期一小時的 RPO。 您只能還原至配對區域中可用的最後一個可用備份資料。 目前無法使用異地備援備份的 PITR。
復原伺服器 RTO 的估計時間(復原時間目標)取決於資料庫大小、上次資料庫備份時間,以及要處理到上次接收備份數據為止的 WAL 數量。 整體復原時間通常需要幾分鐘到數小時。
在異地還原期間,可變更的伺服器設定包括虛擬網路設定,以及從還原的伺服器移除異地備援備份的能力。 不支援在異地還原期間變更其他伺服器設定,例如計算、儲存體或價格層 (高載、一般用途或記憶體最佳化)。
如需詳細資訊,請參閱 還原至配對區域 (異地還原) 。
重要
當主要區域關閉時,無法在個別的異地配對區域中建立異地備援伺服器,因為主要區域中無法佈建儲存體。 您必須等候主要區域啟動,才能在異地配對區域中佈建異地備援伺服器。
在主要區域關閉後,您仍然可以將來源伺服器異地還原至異地配對區域。 如需詳細資訊,請參閱 還原至配對區域 (異地還原) 。 如果您需要將DR設定為任何區域,或主要區域不支援異地備援備份,您應該使用異地複本作為災害復原 (DR) 策略
還原和網路功能
時間點復原
如果您的來源伺服器已設定「公用存取」網路,則您只能還原至公用存取。
如果您的來源伺服器已使用「私人存取」虛擬網路進行設定,則您可以還原至相同或不同的虛擬網路。 您無法跨公用和私人存取執行 PITR。
異地復原
如果您的來源伺服器已設定「公用存取」網路,則您只能還原至公用存取。 來源伺服器中的現有防火牆將複製到還原的伺服器。 不會接管私人端點。 還原作業完成之後,請檢閱您是否需要調整任何延續的防火牆規則,並建立您可能需要的任何私人端點。
如果您的來源伺服器已設定為「私人存取」虛擬網路,則您只能還原至不同的虛擬網路,因為虛擬網路無法跨越區域。 您無法跨公用和私人存取執行異地還原。
還原後工作
還原伺服器之後,您可以執行下列工作,讓您的使用者和應用程式回復正常執行狀態︰
如果新伺服器用來取代原始伺服器,則系統會將用戶端和用戶端應用程式重新導向至新伺服器。 將連接字串的伺服器名稱變更為指向新的伺服器。
原始伺服器上的所有 伺服器參數 值不會自動套用至新的伺服器。 請確定根據新伺服器的需求重新設定新伺服器上的所有伺服器參數。
確定有適當的伺服器層級防火牆、私人端點與虛擬網路規則可供使用者連線。 在公用存取網路中,規則會從原始伺服器複製,但這些規則可能不是還原環境中所需的規則。 因此,請根據您的需求進行調整。 不會延續私人端點。 建立還原的伺服器中任何您可能需要的私人端點。 在私人存取虛擬網路中,還原不會將任何網路基礎結構成品從來源複製到還原的伺服器網路。 與 VNET(虛擬網絡)、子網或網路安全組的設定相關的任何專案,都必須以還原後工作的形式處理。
視需要擴大或縮小還原伺服器的計算。
確定有適當的登入和資料庫層級權限。
視情況設定警示。
如果您從中還原的來源伺服器設定了高可用性,而且您想要將還原的伺服器設定為高可用性,則可以遵循這些步驟。
如果您從中還原的來源伺服器設定了讀取複本,而且您想要在還原的伺服器上設定讀取複本,則可以遵循這些步驟。
隨選備份 (預覽)
適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器會自動產生整個資料庫實例的記憶體磁碟區快照集,涵蓋所有資料庫,做為其排程備份的一部分。 此外,您可以視需要建立隨選備份,這適用於準備可能具風險的作業,或在一般備份排程之外執行定期重新整理等案例。
除了排程的自動備份之外,還可以進行隨選備份。 這些備份會根據您的備份保留時間範圍保留。 如果不再需要,您可以隨時刪除這些隨選備份。 若要起始隨選備份,只需選取您想要備份的資料庫實例並指定備份名稱。 這些備份會與自動備份一起儲存,但使用者只能刪除隨選備份,因為彈性伺服器服務會管理並保留自動備份,以符合備份保留需求。
如需詳細資訊,請參閱 隨選備份。
限制
高載伺服器計算層目前不支援隨選備份功能。
已知問題
我們知道現有的 Bug 允許在複本上進行隨選備份,即使此內容不支持時間點還原 (PITR)。 此問題將會解決,以確保只能在主伺服器上執行隨選備份。
長期保留 (預覽)
適用於 PostgreSQL 的 Azure 備份和 Azure 資料庫彈性伺服器服務已針對適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體建置企業級的長期備份解決方案,可保留最多 10 年的備份。 除了 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器所提供的自動化備份解決方案之外,您也可以獨立使用長期保留 (LTR),以提供最多 35 天的保留期。 自動備份是適用於作業復原的實體備份,當您想要從最新的備份還原時,尤其適用。 長期備份可協助您符合合規性需求、更細微,並使用原生 pg_dump 作為邏輯備份。 除了長期保留之外,此解決方案還提供下列功能:
- 在個別資料庫層級進行客戶控制的排程和隨需備份。
- 集中監視所有作業和工作。
- 儲存在個別安全性和容錯網域中的備份。 如果來源伺服器或訂用帳戶遭入侵,備份保存庫中的備份仍安全無虞 (在 Azure 備份受控儲存體帳戶中)。
- 使用 pg_dump 可讓您在不同資料庫版本還原資料時有更大的彈性。
- Azure 備份保存庫支援不變性和虛刪除 (預覽版) 功能,以保護資料。
- 支援啟用 CMK 伺服器的 LTR 備份
限制與考量
- LTR 還原目前僅適用於記憶體帳戶的「還原為檔案」,並規劃未來「還原為伺服器」功能。
- LTR 會備份彈性伺服器實例中的所有資料庫,而且無法針對 LTR 組態選取個別資料庫。
- 異地復本不支援 LTR 備份,但可以從主伺服器執行。
- 長期保留 (LTR) 備份支援的資料庫大小上限為 4 TiB。 雖然可以在超過 4 TiB 的伺服器上嘗試備份,但未正式支援這些備份,因此無法保證這類伺服器的 LTR 備份成功。
- LTR 備份可以排程每周、每月或每年。 目前不支援每日備份排程。
如需執行長期備份的詳細資訊,請瀏覽操作指南。
常見問題集
備份相關問題
Azure 如何處理伺服器的備份?
根據預設,適用於 PostgreSQL 的 Azure 資料庫彈性伺服器會啟用整個伺服器的自動備份 (包括已建立的所有資料庫),保留期間為預設的 7 天。 自動備份包含資料庫的每日增量快照集。 (WAL) 檔案的記錄檔會持續封存到 Azure Blob 儲存體。
我可以設定自動備份以長期保留資料嗎?
否。 目前,適用於 PostgreSQL 的 Azure 資料庫彈性伺服器支援最多 35 天的保留期。 您可以使用 Azure 備份,針對長期保留需求使用手動備份。
如何手動備份適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體?
您可以使用隨選備份功能手動擷取實體快照集,也可以使用PostgreSQL工具 pg_dump進行邏輯備份。 如需範例,請參閱使用傾印和還原遷移適用於 PostgreSQL 的 Azure 資料庫彈性伺服器資料庫。
我的伺服器備份時段為何? 是否可自訂?
Azure 會管理備份視窗,而且您無法加以自訂。 建立伺服器之後,會立即排程第一次完整快照集備份。 後續快照集備份是累加式備份,一天進行一次。
備份是否會加密?
是。 所有 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器數據、備份和查詢執行期間建立的暫存盤都會透過 AES(進階加密標準)256 位加密來加密。 儲存體加密會一律啟用,且無法停用。
我可以還原伺服器中的單一資料庫或一些資料庫嗎?
不直接支援還原一個資料庫或一些資料庫或資料表。 不過,您可以將整個伺服器還原到新的伺服器,然後卸除新伺服器上不需要的數據表或資料庫。
備份進行時,我的伺服器是否可用?
是。 備份是使用快照集的線上作業。 快照集作業只需要幾秒鐘的時間,且不會干擾生產工作負載,有助於確保伺服器的高可用性。
設定伺服器的維護時段時,我們需要考慮備份時段嗎?
否。 備份會在內部觸發為受控服務的一部分,且與維護時段無關。
我的自動備份會儲存在何處,以及如何管理其保留?
適用於 PostgreSQL 的 Azure 資料庫彈性伺服器會自動建立伺服器備份和存放區:
- 區域備援儲存體,在支援多個區域的區域中。
- 在尚未支援多個區域的區域中,本地備援儲存體。
- 如果您設定異地備援備份,則為配對的區域。
這些備份文件無法匯出,因為它們儲存在Microsoft管理的記憶體帳戶中。 客戶具有還原這些檔案的唯讀存取權,但無法修改或刪除這些檔案。 備份檔會在保留期間之後自動刪除
您可以使用備份來僅將伺服器還原至某個時間點。 預設的備份保留期間是 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 資料庫彈性伺服器目前不支援跨公用和私人存取還原伺服器。
如何追蹤我的還原作業?
目前無法追蹤還原作業。 您可以監視活動記錄檔,藉以查看作業是否正在進行或完成。