Azure Cosmos DB 中具有時間點還原的持續備份

適用於:NoSQL MongoDB Gremlin Table

Azure Cosmos DB 的時間點還原功能在多個案例中都有幫助,包括:

  • 從容器內的意外寫入或刪除作業復原。
  • 還原已刪除的帳戶、資料庫或容器。
  • 在還原時間點還原到任何區域 (備份所在位置)。

Azure Cosmos DB 會在背景中執行資料備份,既不會取用任何額外佈建的輸送量 (RU),也不會影響資料庫的效能和可用性。 系統會在帳戶存在的每個區域中執行連續備份。 例如,帳戶可以在美國西部擁有寫入區域,並在美國東部和美國東部 2 擁有讀取區域。 這些複本區域接著可以備份至每個個別區域中的遠端 Azure 儲存體帳戶。 根據預設,每個區域都會將備份儲存在本地備援儲存體帳戶中。 如果區域已啟用可用性區域,則備份會儲存在區域備援儲存體帳戶中。

說明如何跨多個區域備份容器的圖表。

可供還原的時間範圍 (也稱為保留期間) 是下列兩個選項的較低值:30 天和 7 天。

所選取的選項取決於所選擇的連續備份層。 還原時間點可以是保留期間內的任何時間戳記,但不可早於資源的建立時間點。 在強式一致性模式中,相較於讀取區域,在寫入區域中建立的備份會是最新的。 由於網路或其他暫時性問題,讀取區域可能會落後。 執行還原時,您可以針對特定區域中的指定資源取得最新的可還原時間戳記。 參考最新的可還原時間戳有助於確認資源備份已達指定的時間戳,而且可以在該區域還原。

目前,您可以將特定時間點的 Azure Cosmos DB 帳戶 (API for NoSQL、API for MongoDB、API for Table、API for Gremlin) 內容還原到其他帳戶。 您可以透過 Azure 入口網站Azure CLI (Azure CLI)、Azure PowerShellAzure Resource Manager 範本來執行此還原作業。

[備份儲存體備援]

根據預設,Azure Cosmos DB 會將連續模式備份資料儲存在本地備援儲存體 Blob 中。 針對已設定區域備援的區域,備份會儲存在區域備援儲存體 Blob 中。 在連續備份模式中,您無法更新備份儲存體備援。

不同的還原方法

連續備份模式支援兩種方法來還原已刪除的容器和資料庫。 其可以還原至新帳戶 (如這裡所述),也可以還原至現有帳戶 (如這裡所述)。 這兩種模式之間的選擇取決於案例。 在大部分情況下,最好將已刪除的容器和資料庫還原到現有的帳戶。 這可避免在將數據還原至新帳戶時所需的數據傳輸成本。 針對意外修改數據的情況,還原到新帳戶可能是慣用的選項。

還原至新帳戶的內容為何?

在穩定的狀態下,來源帳戶 (包括資料庫、容器和項目) 上執行的所有突變都會在 100 秒內以非同步方式進行備份。 如果 Azure 儲存體備份媒體關閉或無法使用,變動會保存在本機,直到可以使用媒體。 然後,變動會遭到清除,以避免失去任何可還原作業的精確度。

您可以選擇還原已佈建的輸送量容器、共用輸送量資料庫或整個帳戶的任何組合。 還原動作會將所有資料及其索引屬性還原到新的帳戶。 還原程序會確保帳戶、資料庫或容器中還原的所有資料一定會與指定的還原時間一致。 還原的持續時間將取決於需要還原的資料量。 新還原資料庫帳戶的一致性設定將會與來源資料庫帳戶的一致性設定相同。

注意

使用連續備份模式時,會在可用 Azure Cosmos DB 帳戶的每個區域中執行備份。 根據預設,針對每個區域帳戶所進行的備份會在本地備援,而如果您的帳戶已啟用該區域的可用性區域功能,則會使用區域備援。 還原動作一律會將資料還原至新的帳戶。

哪些項目不會還原?

下列設定不會在時間點復原之後還原:

  • 共用輸送量資料庫下的容器子集無法還原。 整個資料庫可以作為一個整體進行還原。
  • 防火牆、虛擬網絡 VNET、數據平面角色型訪問控制 RBAC 或私人端點設定。
  • 來源帳戶中的所有區域。
  • 預存程序、觸發程序、UDF。
  • 角色型存取控制指派。

還原完成之後,您可以將這些設定新增至還原的帳戶。

適用於運作中帳戶的可還原時間戳記

若要還原未刪除的 Azure Cosmos DB 運作中帳戶,最佳做法是一律識別容器的最新可還原時間戳記。 然後,您可以使用此時間戳記,將帳戶還原為最新版本。

還原實例

時間點還原功能支援下列案例。 情節 [1] 到 [3] 示範如何在事先已知還原時間戳記時觸發還原。 不過,在某些情節下,您可能不知道意外刪除或損毀的確切時間。 情節 [4] 和 [5] 示範如何使用可還原資料庫或容器上的新事件摘要 API 來探索還原時間戳記。

具有可還原帳戶時間戳的生命週期事件。

  1. 還原已刪除的帳戶 - 您可以還原的所有已刪除帳戶,都可以在 [還原] 窗格中看到。 例如,如果在時間戳記 T3 刪除帳戶 A。 在此情況下,剛好在 T3 之前的時間戳記、位置、目標帳戶名稱、資源群組和目標帳戶名稱,就足以從 Azure 入口網站PowerShellCLI 進行還原。

    具有可還原資料庫和容器時間戳的生命週期事件。

  2. 在特定區域中還原帳戶的資料 - 例如,如果帳戶 A 在時間戳記 T3 時存在於兩個區域:美國東部美國西部。 如果您需要美國西部的帳戶 A 複本,您可以從 Azure 入口網站PowerShellCLI 以美國西部作為目標位置,執行時間點還原。

  3. 在具有已知還原時間戳記的容器內從意外寫入或刪除作業復原 - 例如,如果您知道資料庫 1 內的容器 1 在時間戳記 T3 遭到意外修改。 您可以從 Azure 入口網站PowerShellCLI 執行時間點還原到時間戳記 T3 時的另一個帳戶,以復原所需的容器狀態。

  4. 將帳戶還原到資料庫意外刪除之前的先前時間點 - 在 Azure 入口網站中,您可以使用事件摘要窗格來判斷資料庫刪除的時間以及尋找還原時間。 同樣地,使用 Azure CLIPowerShell,您可以藉由列舉資料庫事件摘要來探索資料庫刪除事件,然後使用必要的參數觸發還原命令。

  5. 將帳戶還原到容器屬性意外刪除或修改之前的先前時間點。 - 您可以在 Azure 入口網站中使用事件摘要窗格,判斷容器何時建立、修改或刪除,以尋找還原時間。 同樣地,使用 Azure CLIPowerShell,您可以藉由列舉容器事件摘要來探索所有容器事件,然後使用必要的參數觸發還原命令。

權限

Azure Cosmos DB 可讓您隔離連續備份帳戶的還原權限並將其限制到特定角色或主體。 若要深入瞭解,請參閱權限一文。

定價

具有連續 30 天備份的 Azure Cosmos DB 帳戶每月會收取額外的費用來 儲存備份。 連續備份的 30 天層和 7 天層都會產生資料還原費用。 每次啟動還原作業時,就會新增還原成本。 如果您設定具有連續備份但未還原資料的帳戶,您的帳單中只會包含備份儲存體成本。

下列範例是根據在美國西部部署的 Azure Cosmos DB 帳戶價格。 定價和計算會隨著您使用的區域而不同,如需最新的定價資訊,請參閱 Azure Cosmos DB 定價頁面

  • 啟用 30 天連續備份原則的所有帳戶都會產生備份儲存體的每月費用,計算方式如下:

    $0.20/GB * 帳戶中的資料大小 (以 GB 為單位) * 區域數目

  • 每個還原 API 叫用都會產生一次性費用。 費用是還原的數據量函式:

    $0.15/GB * 資料大小 (以 GB 為單位)。

例如,如果您在兩個區域中有 1TB 的資料,則:

  • 備份儲存體成本的計算方式為 (1000 * 0.20 * 2) = $400/月

  • 還原成本的計算方式為 (1000 * 0.15) = $150/每次還原

提示

如需測量 Azure Cosmos DB 帳戶的目前資料使用量詳細資訊,請參閱探索 Azure 監視器 Azure Cosmos DB 見解。 連續 7 天層不會產生資料備份的費用。

連續 30 天層與連續 7 天層

  • 保留期間層共分成 30 天與 7 天。
  • 備份記憶體會收取 30 天的保留層費用。 7 天保留層不會收費。
  • 這兩個層一律會收取還原的費用

客戶管理的金鑰

請參閱客戶自控金鑰對連續備份有何影響?,以深入了解:

  • 使用客戶自控金鑰搭配連續備份時,如何設定您的 Azure Cosmos DB 帳戶。
  • 客戶自控金鑰對還原有何影響?

目前的限制

時間點還原功能目前具有下列限制:

  • 適用於 SQL、MongoDB、Gremlin 和 Table 的 Azure Cosmos DB API 支援連續備份。 目前不支援 API for Cassandra。

  • 「不支援多重區域寫入帳戶」。

  • 目前可以在連續備份資料庫帳戶中啟用 Azure Synapse Link。 但目前不支援相反的情況,您無法在已啟用 Synapse Link 的資料庫帳戶中開啟連續備份。 備份中未包括分析存放區。 如需備份和分析存放區的詳細資訊,請參閱分析存放區備份

  • 所還原的帳戶會建立在來源帳戶所在的相同區域中。 您無法將帳戶還原到來源帳戶不存在的區域。

  • 連續 30 天層的還原時間範圍只有 30 天,而連續 7 天層的還原時間範圍是 7 天。 這些層級可以進行切換,但無法變更實際數量 (730)。 此外,如果您從 30 天層切換至 7 天層,則超過第七天可能會遺失資料。

  • 備份不會自動具備異地災害防範功能。 應明確新增另一個區域,以復原帳戶和備份。

  • 還原作業進行期間,請勿修改或刪除身分識別與存取權管理 (IAM) 原則。 這些原則會為帳戶授與權限,使其能夠變更任何 VNET、防火牆設定。

  • 具有連續備份的適用於 MongoDB 的 Azure Cosmos DB 帳戶不支援為現有集合建立唯一索引。 針對這類帳戶,必須連同其集合一起建立唯一索引;您可以使用 create 集合 延伸模組命令來完成。

  • 時間點還原功能一律會還原到新的 Azure Cosmos DB 帳戶。 目前不支援還原到現有帳戶。 如果您想要提供有關就地還原的意見反應,請透過客戶代表連絡 Azure Cosmos DB 小組。

  • 還原之後,某些集合可能會重建一致的索引。 您可以透過 IndexTransformationProgress 屬性,檢查重建作業的狀態。

  • 還原程式預設會還原容器的所有屬性,包括其TTL組態,您可以在執行還原時傳遞 參數來停用TTL。 因此,如果您以這種方式設定所還原的資料,該資料可能會立即遭到刪除。 為了避免發生這種情況,還原時間戳記必須在 TTL 屬性新增至容器之前。

  • 當您建立連續備份模式的帳戶時,就無法新增或更新適用於 MongoDB 的 API 中的唯一索引。 當您將帳戶從定期模式移轉至連續模式時,也無法修改唯一索引。

  • 連續模式還原可能不會還原自還原點起有效的輸送量設定。

下一步