共用方式為


在 Azure Cosmos DB 中複製作業 (預覽)

您可以使用容器複製作業,在 Azure Cosmos DB 中執行資料複製。

如果您想要達到下列任何案例,您可能需要從 Azure Cosmos DB 帳戶複製資料:

您可以使用 Azure CLI 命令來建立和管理複製作業。

開始使用

若要開始使用適用於 NoSQL API 帳戶的 Azure Cosmos DB 在線容器複製,請在 Azure 入口網站 的預覽功能註冊在線容器複製 (NoSQL) 預覽功能旗標。 註冊完成後,預覽對於訂用帳戶中的所有 NoSQL API 帳戶都生效。

必要條件

  1. 在來源 Azure Cosmos DB 帳戶上啟用 持續備份
  2. 在來源帳戶的訂用帳戶上註冊 [所有版本],並刪除變更摘要模式 預覽功能。

重要

所有對來源容器的寫入作業都會收取雙 RU 的費用,以便保留容器中專案的先前和目前版本變更。 未來可能會變更此 RU 費用增加。

複製容器資料

  1. 使用您想要使用的設定 (分割區索引鍵、輸送量細微性、要求單位、唯一索引鍵等) 來建立目標 Azure Cosmos DB 容器。
  2. 建立容器複製作業
  3. 監視複製作業的進度。
  4. 複製所有文件之後,請停止來源容器上的更新,然後呼叫完成 API 將作業標示為已完成。
  5. 如預期般將應用程式或用戶端指向來源或目標容器,以繼續作業。

容器複製如何運作?

  1. 平臺會為目的地 Azure Cosmos DB 帳戶配置伺服器端計算實例,以執行容器複製作業。
  2. 單一作業會隨時在所有執行個體上執行。
  3. 在線複製作業會利用 所有版本和刪除變更摘要模式 ,將數據複製,並將累加變更從來源容器復寫至目的地容器。
  4. 作業完成後,平臺會在閑置 15 分鐘後取消配置這些實例。

您可以執行離線收集複製作業,以在相同的 Azure Cosmos DB for Mongo DB 帳戶內複製數據。

複製集合的數據

  1. 使用您想要使用的設定來建立目標 Azure Cosmos DB 集合(分割區索引鍵、輸送量粒度、要求單位、唯一索引鍵等等)。
  2. 暫停應用程式實例或任何連線至來源集合的用戶端,以停止來源集合上的作業。
  3. 建立複製作業
  4. 監視複製作業 的進度,並等到作業完成為止。
  5. 如預期般將應用程式或用戶端指向來源或目標集合,以繼續作業。

注意

強烈建議您在開始脫機集合複製作業之前,先停止對來源集合執行任何作業。 啟動複製作業之後,在來源集合上完成的項目刪除和更新可能無法擷取。 如果您在複製作業進行時繼續對來源集合執行作業,則目標集合上可能會有重複或遺失的數據。

集合複製如何運作?

  1. 平台會為目的地 Azure Cosmos DB 帳戶配置伺服器端計算執行個體。
  2. 在帳戶內建立一或多個集合複製作業時,會配置這些實例。
  3. 複製作業會在這些實例上執行。
  4. 單一作業會隨時在所有執行個體上執行。
  5. 實例會由在相同帳戶內執行的所有複製作業共用。
  6. 離線複製作業會利用 變更數據流 來複製數據,並將累加變更從來源集合複寫至目的地集合。
  7. 如果實例閑置超過15分鐘,平臺可能會取消配置實例。

您可以執行離線數據表複製,以將一個資料表的數據複製到相同 Azure Cosmos DB for Apache Cassandra 帳戶內的另一個數據表。

複製數據表的數據

  1. 使用您想要使用的設定來建立目標 Azure Cosmos DB 數據表(分割區索引鍵、輸送量粒度、要求單位等等)。
  2. 暫停應用程式實例或任何與其連線的用戶端,以停止源數據表上的作業。
  3. 建立複製作業
  4. 監視複製作業 的進度,並等到作業完成為止。
  5. 視需要適當地將應用程式或用戶端指向來源或目標數據表,以繼續作業。

注意

強烈建議您在開始離線數據表複製作業之前,先停止對源數據表執行任何作業。 在您啟動複製作業之後,在源數據表上完成的專案刪除和更新可能無法擷取。 如果在複製作業進行中時繼續對源數據表執行作業,則目標數據表上可能會有重複或遺失的數據。

數據表複製如何運作?

  1. 平台會為目的地 Azure Cosmos DB 帳戶配置伺服器端計算執行個體。
  2. 在帳戶內建立一或多個複製作業時,會配置這些實例。
  3. 複製作業會在這些實例上執行。
  4. 單一作業會隨時在所有執行個體上執行。
  5. 實例會由在相同帳戶內執行的所有複製作業共用。
  6. 離線複製作業會利用 變更摘要 將數據複製,並將累加變更從源數據表復寫至目的地數據表。
  7. 如果實例閑置超過15分鐘,平臺可能會取消配置實例。

影響複製作業速率的因素

容器複製作業進度的速率取決於下列因素:

  • 來源容器或資料庫輸送量設定。

  • 目標容器或資料庫輸送量設定。

    提示

    至少將目標容器輸送量設定為來源容器輸送量的兩倍。

  • 配置給 Azure Cosmos DB 帳戶以執行資料傳輸的伺服器端計算執行個體。

    重要

    預設 SKU 會為每個帳戶提供兩個 4-vCPU 16 GB 伺服器端執行個體。

限制

預覽版適用性準則

容器複製作業不適用於已啟用下列功能的帳戶。 在執行容器複製作業之前停用這些功能:

帳戶設定

未調整目的地容器中的存留時間 (TTL) 設定。 因此,如果文件尚未在來源容器中過期,則會在目的地容器中重新開始倒數。

常見問題集

容器複製作業是否有服務等級協定?

目前以最佳方式支援容器複製作業。 我們未提供任何服務等級協定 (SLA) 來保證作業完成所需的時間。

我可以在帳戶內建立多個容器複製作業嗎?

是,您可以在相同的帳戶內建立多個作業。 作業會持續執行。 您可以列出帳戶內建立的所有作業,並監視其進度。

我可以在 Azure Cosmos DB 帳戶內複製整個資料庫嗎?

您必須針對資料庫中的每個容器建立作業。

我有具有多個區域的 Azure Cosmos DB 帳戶。 容器複製作業會在哪個區域中執行?

容器複製作業會在寫入區域中執行。 在已設定多區域寫入的帳戶中,會在寫入區域清單中的其中一個區域中執行作業。

當帳戶的寫入區域變更時,容器複製作業會有什麼情況?

帳戶的寫入區域可能會因區域中斷或手動容錯移轉等罕見情況而變更。 在此情況下,帳戶內所建立的不完整容器複製作業會失敗。 您需要重新建立這些失敗的作業。 接著會在新的 (目前) 寫入區域中執行已重新建立的作業。

支援的區域

下列區域目前支援容器複製:

美洲 歐洲和非洲 亞太地區
巴西南部 法國中部 澳大利亞中部
加拿大中部 法國南部 澳大利亞中部 2
加拿大東部 德國北部 澳大利亞東部
美國中部 德國中西部 印度中部
美國中部 EUAP 北歐 日本東部
美國東部 挪威東部 南韓中部
美國東部 2 挪威西部 東南亞
美國東部 2 EUAP 瑞士北部 阿拉伯聯合大公國中部
美國中北部 瑞士西部 印度西部
美國中南部 英國南部 東亞
美國中西部 英國西部 馬來西亞南部
美國西部 西歐 日本西部
美國西部 2 以色列中部 澳大利亞東南部
不支援 南非北部 不支援

已知和常見問題

  • 錯誤 - 擁有者資源不存在。

    如果作業建立失敗,並顯示「擁有者資源不存在」錯誤 (錯誤碼 404),則尚未建立目標容器,或用來建立作業的容器名稱不符合實際的容器名稱。

    在執行作業之前,請確定已建立目標容器,並確定作業中的容器名稱符合實際的容器名稱。

    "code": "404",
    "message": "Response status code does not indicate success: NotFound (404); Substatus: 1003; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: (Message: {\"Errors\":[\"Owner resource does not exist\"]
    
  • 錯誤 - 要求未經授權。

    如果要求失敗,並顯示錯誤「未經授權」 (錯誤碼 401),則可能會停用本機授權。

    容器複製作業會使用主索引鍵進行驗證。 如果停用本機授權,則作業建立會失敗。 必須啟用本機授權,容器複製作業才能運作。

    "code": "401",
    "message": " Response status code does not indicate success: Unauthorized (401); Substatus: 5202; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: Local Authorization is disabled. Use an AAD token to authorize all requests."
    
  • 錯誤 - 取得作業資源時發生錯誤。

    此錯誤可能因內部伺服器問題而發生。 若要解決此問題,請在 Azure 入口網站中開啟 [新增支援要求],以連絡 Microsoft 支援服務。 針對 [問題類型],選取 [資料移轉]。 針對 [問題子類型],選取 [帳戶內部容器複製]

    "code": "500"
    "message": "Error while getting resources for job, StatusCode: 500, SubStatusCode: 0, OperationId:  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    

下一步