適用於 NoSQL 的 Azure Cosmos DB 復原建議
本文包含針對 NoSQL 的 Azure Cosmos DB 實現復原能力的建議。 許多建議都包含支援 Azure Resource Graph (ARG) 查詢,以協助識別不符合規範的資源。
復原建議影響矩陣
每個建議都會根據下列影響矩陣來標示:
映像 | 影響 | Description |
---|---|---|
高 | 需要立即修正。 | |
中 | 在 3-6 個月內修正。 | |
低 | 需要檢閱。 |
復原建議摘要
類別 | 優先順序 | 建議 |
---|---|---|
可用性 | 為高可用性設定至少兩個區域 | |
災害復原 | 針對具有單一寫入區域的多重區域帳戶啟用服務管理的故障轉移 | |
評估多區域寫入功能 | ||
選擇反映數據持久性需求的適當一致性模式 | ||
設定連續備份模式 | ||
系統效率 | 確定已完全清空查詢結果 | |
在客戶端中維護單一模式 | ||
應用程式復原能力 | 在您的客戶端中實作重試邏輯 | |
監視 | 監視Cosmos DB健康情況並設定警示 |
可用性
為高可用性設定至少兩個區域
請務必讓 Cosmos DB 上的次要區域達到更高的 SLA。 這樣做不會產生任何停機時間,而且它就像選取地圖上的釘選一樣簡單。 使用強式一致性的 Cosmos DB 實例必須設定至少三個區域,以在發生一個區域失敗時保留寫入可用性。
潛在優點: 增強 SLA 和復原能力。
深入瞭解:適用於 No SQL 的 Cosmos DB 可靠性 (高可用性)
Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
array_length(properties.locations) < 2 or
(array_length(properties.locations) < 3 and properties.consistencyPolicy.defaultConsistencyLevel == 'Strong')
| project recommendationId='cosmos-1', name, id, tags
災害復原
針對具有單一寫入區域的多重區域帳戶啟用服務管理的故障轉移
Cosmos DB 擁有高運行時間和復原能力。 即便如此,也可能會發生問題。 使用 服務管理的故障轉移時,如果區域關閉,Cosmos DB 會自動切換至下一個可用的區域,而不需要用戶動作。
Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
array_length(properties.locations) > 1 and
tobool(properties.enableAutomaticFailover) == false and
tobool(properties.enableMultipleWriteLocations) == false
| project recommendationId='cosmos-2', name, id, tags
評估多區域寫入功能
多重區域寫入功能可讓您設計跨多個區域高度可用的應用程式,不過它需要仔細注意一致性需求和衝突解決。 不正確的設定可能會降低可用性,並導致數據損毀,因為發生未處理的衝突。
潛在優點: 增強高可用性。
深入了解:
Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
array_length(properties.locations) > 1 and
properties.enableMultipleWriteLocations == false
| project recommendationId='cosmos-3', name, id, tags
選擇反映數據持久性需求的適當一致性模式
在全域分散式資料庫中,一致性層級會影響區域中斷期間的數據持久性。 瞭解復原規劃的數據遺失容錯。 除非需要更強,否則請使用會話一致性,接受來自唯讀中斷的較高寫入延遲和潛在的寫入區域影響。
潛在優點: 增強數據持久性和復原。
設定連續備份模式
Cosmos DB 的備份一律為開啟,可針對數據提供保護。 連續模式允許自助還原到預先發生點,不同於需要連絡 Microsoft 支援的定期模式,導致還原時間更長。
潛在優點: 更快速的自助數據還原。
深入瞭解:Azure Cosmos DB 中具有時間點還原功能的連續備份
Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
properties.backupPolicy.type == 'Periodic' and
properties.enableMultipleWriteLocations == false and
properties.enableAnalyticalStorage == false
| project recommendationId='cosmos-5', name, id, tags
系統效率
確定已完全清空查詢結果
Cosmos DB 有 4 MB 的回應限制,導致大型或分割區跨越查詢的編頁結果。 每個頁面都會顯示可用性,並提供下一個的接續令牌。 程序代碼中的 while 循環必須周游所有頁面,直到完成為止。
潛在優點: 最大化數據擷取效率。
深入瞭解:適用於 No SQL 的 Azure Cosmos DB 中的分頁。
在客戶端中維護單一模式
針對每個帳戶和應用程式使用SDK用戶端的單一實例非常重要,因為聯機會系結至用戶端。 計算環境有開啟連線的限制,這會影響超過時的連線能力。
潛在優點: 優化連線和效率。
深入瞭解:使用 Azure Cosmos DB SDK 設計復原應用程式。
應用程式復原能力
在您的客戶端中實作重試邏輯
Cosmos DB SDK 會透過重試自動管理許多暫時性錯誤。 儘管如此,應用程式必須實作以 SDK 無法一般解決的特定案例為目標的其他重試原則,以確保更健全的錯誤處理。
潛在優點: 增強錯誤處理復原能力。
深入瞭解:使用 Azure Cosmos DB SDK 設計復原應用程式。
監視
監視Cosmos DB健康情況並設定警示
監視 Azure Cosmos DB 資源的可用性和回應性,併為您的工作負載設定警示是很好的作法。 這可確保您保持主動處理未預期事件。
潛在優點: 主動式問題管理。
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: