全部產品
Search
文件中心

ApsaraDB for MongoDB:資料恢複概覽

更新時間:Sep 08, 2026

ApsaraDB for MongoDB提供了多種資料恢複方案,可滿足不同情境下MongoDB資料庫的資料恢複需求。

資料恢複至ApsaraDB for MongoDB執行個體

重要

將資料恢複至新執行個體時,請注意以下事項:

  • 新執行個體的資料庫大版本需與原執行個體相同。您需要根據原執行個體的資料庫版本選擇支援部署的可用性區域。不同資料庫版本的執行個體,支援部署的可用性區域不同。關於不同資料庫版本執行個體的可用性區域限制,請參見使用限制。

  • 新執行個體的儲存空間需大於或等於原執行個體的儲存空間。

  • 如果您升級過資料庫的大版本,舊版本的備份檔案將無法恢複到新版本的資料庫中。

  • 恢複資料時建立的執行個體預設為最新核心小版本。

  • 如果您的執行個體中包含時序集合(MongoDB 5.0及以上版本),則進行按時間點恢複時可能會在oplog回放階段遇到問題。

方案

執行個體限制

恢複位置

恢複範圍

適用情境

恢複ApsaraDB for MongoDB單個或多個資料庫

  • 雲端硬碟版複本集執行個體

  • 雲端硬碟版分區叢集執行個體

原執行個體

  • 全部資料庫

  • 部分資料庫

誤刪了某個集合或文檔。

MongoDB 4.0或4.2版本的本地碟版複本集執行個體

說明

執行個體所在地區等限制請參見使用限制。

新執行個體

從備份點建立執行個體

  • 單節點執行個體

  • 複本集執行個體

新執行個體

  • 全部資料庫

  • 部分資料庫

說明

僅本地碟版執行個體支援恢複部分資料庫。

對資料的時效性要求不高的情境。

按時間點建立執行個體

複本集執行個體

新執行個體

  • 全部資料庫

  • 部分資料庫

說明

僅本地碟版執行個體支援恢複部分資料庫。

將資料還原至某個時間點。

分區叢集執行個體

新執行個體

全部資料庫

跨地區恢複資料

  • 複本集雲端硬碟版執行個體

  • 分區叢集雲端硬碟版執行個體

新執行個體

全部資料庫

適用於資料監管或容災恢複等需求情境,可以使用備份檔案將資料恢複到跨地區備份所在地區的新執行個體。

資料恢複至自建資料庫

將資料恢複至自建資料庫時,您需要將ApsaraDB for MongoDB的備份檔案下載到本地。如何下載備份檔案,請參見下載備份檔案。

方案

執行個體限制

注意事項

將MongoDB邏輯備份檔案恢複至自建資料庫

  • 複本集執行個體,且資料庫版本為4.2及以下、儲存類型為SSD本地碟。

  • 分區叢集執行個體,且資料庫版本為4.2及以下、儲存類型為SSD本地碟。

由於MongoDB一直在迭代更新,舊版本的Mongorestore不能相容新版本的MongoDB。請選擇合適的Mongorestore版本,以相容MongoDB,如何選擇Mongorestore版本,請參見mongorestore。

本地碟備份資料恢複

複本集執行個體,且滿足以下條件:

  • 執行個體未開啟透明資料加密TDE(Transparent Data Encryption)功能。關於TDE的更多資訊,請參見TDE功能。

  • 執行個體的儲存引擎:WiredTiger或RocksDB。

無。

常見問題

如何恢複更早之前的資料?

執行個體資料可以恢複到的時間範圍,與備份資料的保留天數相關。如果您希望恢複更早之前的資料,請參見長期保留備份。

恢複資料到新執行個體的時間預估需要多久?

恢複資料到新執行個體的耗時取決於執行個體的儲存類型、備份資料量、需要回放的oplog資料量以及新執行個體規格,通常需要數分鐘到數小時不等。

一次完整的恢複包含以下三個階段,總耗時為三個階段之和:

階段

說明

是否與資料量相關

建立新執行個體

按照您指定的規格建立並配置目標執行個體。

恢複全量備份

將全量備份資料還原到新執行個體。

恢複增量備份(oplog回放)

將全量備份時間點至目標時間點之間的增量資料回放到新執行個體。

說明

從備份點建立執行個體時不涉及增量恢複,無需計算第三階段耗時;按時間點建立執行個體時,需要將資料回放至您指定的時間點,因此包含第三階段。下文中兩種儲存類型的表格對“建立新執行個體”階段做了進一步細分。

雲端硬碟版執行個體

雲端硬碟版執行個體的全量恢複雲端式盤快照實現,通過掛載快照完成資料還原,該階段耗時與資料量基本無關。

以下時間以4核8 GB複本集執行個體為參考:

階段

預計耗時

建立新執行個體

10~15分鐘

恢複全量備份(快照掛載)

通常為5~10分鐘,與資料量基本無關。

執行個體啟動與初始化

2~5分鐘

恢複增量備份(oplog回放)

與增量資料量及內容複雜度相關,詳見下文的影響恢複耗時的因素。

算例:一個4核8 GB的雲端硬碟版複本集執行個體,從備份點建立執行個體時,無論資料量為20 GB還是1 TB,通常在20~30分鐘內完成;如按時間點建立執行個體,需在上述時間基礎上,根據備份點至目標時間點之間產生的oplog資料量追加回放耗時。

本地碟版執行個體

本地碟版執行個體的全量恢複需要先從備份儲存下載備份組,再在目標節點上解壓,因此耗時與備份組大小、資料檔案個數均相關。

以下時間以4核8 GB複本集執行個體為參考:

階段

預計耗時

建立新執行個體

10~15分鐘

下載全量備份組

參考速率為50~200 GB/小時,受執行個體規格與網路狀況影響。

解壓全量備份組

與資料檔案個數相關,詳見下方說明。

下載oplog

參考速率為50~200 GB/小時。

回放oplog

與增量資料量及內容複雜度相關,詳見下文的影響恢複耗時的因素。

說明

解壓階段的耗時主要由備份組中的資料檔案個數決定,而非僅由備份組容量決定。執行個體中的集合數與索引數越多,資料檔案個數越多,解壓耗時越長。常規執行個體的解壓耗時為分鐘級;集合與索引數量達到數十萬量級的執行個體,解壓階段可能耗時數小時甚至更長,屬於正常現象,詳情請參見庫表數太多導致執行個體卡頓或異常。若您的執行個體集合數量較多且對恢複時效有較高要求,建議優先選用雲端硬碟版執行個體。

算例:一個4核8 GB的本地碟版複本集執行個體,資料量為200 GB,從備份點建立執行個體。假設下載速率為100 GB/小時、解壓耗時約30分鐘,則端到端約需3小時;如按時間點建立執行個體,還需追加oplog下載與回放的耗時。

說明

上述耗時均為經驗參考值,不構成服務承諾。如恢複任務長時間無進展,請提交工單聯絡支援人員。

影響恢複耗時的因素
  • 儲存類型:雲端硬碟版執行個體的全量恢複基於快照掛載,速度顯著快於本地碟版執行個體的下載與解壓。

  • 備份組大小:備份資料量越大,本地碟版執行個體的下載耗時越長;雲端硬碟版執行個體不受此影響。

  • 資料檔案個數:集合數與索引數越多,本地碟版執行個體的解壓耗時越長。

  • 新執行個體規格:新執行個體的CPU核心數、記憶體和磁碟IOPS越高,下載、解壓與oplog回放速度越快。使用低規格執行個體恢複巨量資料量執行個體時,耗時會明顯增加。

  • oplog資料量:按時間點建立執行個體時,所選時間點距離全量備份時間點越遠,需要回放的oplog越多,耗時越長。

  • oplog內容複雜度:oplog中的多文檔事務需串列回放,無法並行加速;大文檔、熱點更新會帶來額外的寫入放大。在複雜寫入負載下,即使提高執行個體規格,回放速度也可能無明顯改善。

  • 源執行個體寫入速率:按時間點建立執行個體時,源執行個體寫入越快,同一時間視窗內產生的oplog越多,回放耗時越長。

  • 分區叢集:分區叢集的ConfigServer、各分區與Mongos並行恢複,整體完成時間取決於耗時最長的組件,通常不短於同等資料量的複本集執行個體。

縮短恢複耗時的建議
  • 優先選用雲端硬碟版執行個體,其全量恢複為分鐘級,且不受資料量與集合數量影響。

  • 為新執行個體選擇不低於源執行個體的規格,避免在恢複階段出現規格瓶頸。

  • 優先從備份點建立執行個體。如業務允許,選擇距離目標時間點最近的備份點,可減少甚至免除oplog回放耗時。

  • 控制集合與索引數量,及時清理不再使用的集合和索引,可顯著降低本地碟版執行個體的解壓耗時。

  • 開啟高頻備份,縮短備份點與目標時間點之間的間隔,從而減少需要回放的oplog資料量。

希望將備份資料恢複至原執行個體,如何進行操作?

分區叢集雲端硬碟版執行個體可以使用庫表恢複功能將資料恢複至原執行個體。具體操作,請參見恢複ApsaraDB for MongoDB單個或多個資料庫。

若您的執行個體不支援通過庫表恢複功能恢複至原執行個體,可以先將備份資料恢複至新執行個體,然後依次修改原執行個體與新執行個體的串連地址和連接埠資訊,或者通過DTS將新執行個體的資料移轉至原執行個體。

已下載的備份檔案,如何恢複至ApsaraDB for MongoDB執行個體?

已下載的備份檔案,不支援直接恢複至雲資料庫執行個體。您可以先將資料恢複至自建資料庫,然後通過DTS遷移至ApsaraDB for MongoDB執行個體。DTS遷移的具體操作,請參見源為自建MongoDB或ApsaraDB for MongoDB的遷移方案。

執行個體類型不支援下載備份檔案時,如何將資料恢複至自建資料庫?

為什麼複製恢複的分區叢集執行個體的分區ID與sh.status()結果不一致?

分區叢集執行個體的Config Server中儲存了所有分區集合的路由中繼資料(例如config.collections和config.chunks等集合)。這些集合的文檔中包含類似shard: 'shard01'的欄位,用於標識資料所屬的分區。複製恢複時需要使用源執行個體的完整路由資料,因此必須保留源執行個體的分區ID(即分區名稱),導致複製執行個體的分區ID與sh.status()輸出中顯示的分區名稱不一致。

您可以通過控制台分區叢集執行個體詳情頁中展示的分區標識ID(即replicaSetName),結合sh.status()的輸出結果來建立分區的映射關係。該映射關係在恢複完成後不會發生變化。