使用升級您的 Amazon DocumentDB 集群 AWS Database Migration Service - Amazon DocumentDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用升級您的 Amazon DocumentDB 集群 AWS Database Migration Service

重要

Amazon DocumentDB 不遵循相同的支持生命週期作為 MongoDB 和 MongoDB 的 end-of-life 計劃不適用於 Amazon DocumentDB。目前沒有針 end-of-life 對 Amazon DocumentDB 3.6 的計劃,您現有的 MongoDB 3.6 驅動程序,應用程序和工具將繼續與 Amazon DocumentDB 一起使用。

您可以使用將 Amazon DocumentDB 叢集升級到更高版本,並將停機時間降至最低。 AWS DMS AWS DMS 這是一項全受管服務,可讓您輕鬆地從舊版 Amazon DocumentDB 版本、關聯式資料庫和非關聯式資料庫遷移到目標 Amazon DocumentDB 叢集。

步驟 1:啟用變更串流

若要執行最短停機時間移轉, AWS DMS 需要存取叢集的變更串流。Amazon DocumentDB 變更串流可提供叢集集合和資料庫中發生的更新事件,依時間順序排列。從變更串流讀取可 AWS DMS 以執行變更資料擷取 (CDC),並將增量更新套用至目標 Amazon DocumentDB 叢集。

若要為特定資料庫上的所有集合啟用變更串流,請使用 mongo 殼層對 Amazon DocumentDB 叢集進行驗證,然後執行下列命令:

db.adminCommand({modifyChangeStreams: 1, database: "db_name", collection: "", enable: true});

步驟 2:修改變更串流保留期間

接下來,根據您希望在變更串流中保留變更事件的時間長度來修改變更串流保留期間。例如,如果您預期 Amazon DocumentDB 叢集遷移需 AWS DMS 要 12 小時的時間,則應將變更串流保留設定為大於 12 小時的值。Amazon DocumentDB 叢集的預設保留期為三小時。您可以使用 AWS Management Console 或將 Amazon DocumentDB 叢集的變更串流日誌保留持續時間修改為一小時到七天之間。 AWS CLI如需詳細資訊,請參閱修改變更串流記錄保留持續時間。

步驟 3:遷移索引

在來源 Amazon DocumentDB 叢集上的目標 Amazon 文件資料庫叢集上建立相同的索引。雖然會 AWS DMS 處理資料的移轉,但不會移轉索引。若要移轉索引,請使用 Amazon 文件資料庫索引工具從來源 Amazon DocumentDB 叢集匯出索引。您可以建立 Amazon DocumentDB 工具 GitHub 存放庫的複製,並遵循中的指示來取得此工具。README.md您可以從 Amazon 執行個EC2體或與 Amazon Amazon DocumentDB 叢集在相同亞馬遜執行VPC的 AWS Cloud9 環境中執行此工具。

在下面的例子中,替換每個 user input placeholder 使用您自己的信息。

下列程式碼會從您的來源 Amazon DocumentDB 叢集傾印索引:

python migrationtools/documentdb_index_tool.py --dump-indexes --uri mongodb://sample-user:user-password@sample-source-cluster.node.us-east 1.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false' --dir ~/index.js/ 2020-02-11 21:51:23,245: Successfully authenticated to database: admin2020-02-11 21:46:50,432: Successfully connected to instance docdb-40-xx.cluster-xxxxxxxx.us-east-1.docdb.amazonaws.com:27017 2020-02-11 21:46:50,432: Retrieving indexes from server...2020-02-11 21:46:50,440: Completed writing index metadata to local folder: /home/ec2-user/index.js/

成功匯出索引之後,請在目標 Amazon DocumentDB 叢集中還原這些索引。若要還原您在上一個步驟中匯出的索引,請使用 Amazon DocumentDB 索引工具。下列命令會從指定的目錄還原目標 Amazon DocumentDB 叢集中的索引。

python migrationtools/documentdb_index_tool.py --restore-indexes --uri mongodb://sample-user:user-password@sample-destination-cluster.node.us-east 1.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false' --dir ~/index.js/ 2020-02-11 21:51:23,245: Successfully authenticated to database: admin2020-02-11 21:51:23,245: Successfully connected to instance docdb-50-xx.cluster-xxxxxxxx.us-east-1.docdb.amazonaws.com:27017 2020-02-11 21:51:23,264: testdb.coll: added index: _id

若要確認您已正確還原索引,請使用 mongo 殼層連接到目標 Amazon DocumentDB 叢集,並列出指定集合的索引。請參閱以下代碼:

mongo --ssl --host docdb-xx-xx.cluster-xxxxxxxx.us-east-1.docdb.amazonaws.com:27017 --sslCAFile rds-ca-2019-root.pem --username documentdb --password documentdb db.coll.getIndexes()

步驟 4:建立 AWS DMS 複寫執行個體

AWS DMS 複寫執行個體會從您的來源 Amazon DocumentDB 叢集連接和讀取資料,並將其寫入目標 Amazon DocumentDB 叢集。 AWS DMS 複寫執行個體可以執行大量載入和CDC作業。大部分這種處理都發生在內存中。但是,大型操作可能需要在磁盤上進行一些緩衝。快取交易和日誌檔案也會寫入磁碟。移轉資料之後,複寫執行個體也會串流任何變更事件,以確保來源和目標同步。

若要建立 AWS DMS 複製執行個體:

  1. 開啟主 AWS DMS 控台

  2. 在導覽窗格中,選擇 Replication instances (複寫執行個體)

  3. 選擇 Create replication instance (建立複寫執行個體) 並輸入下列資訊:

    • 在「名稱」中,輸入您選擇的名稱。例如:docdb36todocdb40

    • 說明中,輸入您選擇的描述。對於列表, Amazon DocumentDB 3.6 到 Amazon DocumentDB 4.0 複寫實例.

    • 對於實例類,請根據需要選擇大小。

    • 對於引擎版本,請選擇 3.4.1.

    • 對於 Amazon VPC,選擇容納您的來源和目標 Amazon VPC DocumentDB 叢集的亞馬遜。

    • 對於已配置的儲存區 (GiB),請使用預設值 50 GiB。如果您的寫入輸送量工作負載很高,請增加此值以符合您的工作負載。

    • 對於異地同步備份,如果您需要高可用性和容錯移轉支援,請選擇

    • 對於 Publicly accessible (可公開存取),啟用此選項。

    影像:複製執行個體組態對話方塊顯示 10 個可設定欄位和按鈕
  4. 選擇 Create replication instance (建立複寫執行個體)

步驟 5:建立 AWS DMS 來源端點

來源端點用於來源 Amazon DocumentDB 叢集。

建立來源端點

  1. 開啟主 AWS DMS 控台

  2. 在導覽窗格中選擇端點

  3. 選擇Create endpoint並輸入下列資訊:

    • 對於 Endpoint type (端點類型),選擇 Source (來源)

    • > 對於端點識別碼,請輸入容易記住的名稱,例如docdb-source

    • 針對「來源引擎」,選擇docdb

    • 針對伺服器名稱,輸入來源 Amazon DocumentDB 叢集的DNS名稱。

    • 連接埠中,輸入來源 Amazon DocumentDB 叢集的連接埠號碼。

    • 對於「SSL模式」,請選擇verify-full

    • 對於 CA 憑證,請選擇 [新增 CA 憑證]。下載新的 CA 憑證以建立TLS連線服務包。在「憑證識別碼」中,輸入rds-combined-ca-bundle。對於 Import certificate file (匯入憑證檔案),請選擇 Choose file (選擇檔案),然後瀏覽至您先前下載的 .pem 檔案。選取並開啟檔案。選擇匯入憑證,然後rds-combined-ca-bundle從選擇憑證下拉式清單中選

    • 使用者名稱中,輸入來源 Amazon DocumentDB 叢集的主要使用者名稱。

    • 對於密碼,請輸入來源 Amazon DocumentDB 叢集的主要密碼。

    • 在「資料庫名稱」中,輸入您要升級的資料庫名稱。

    影像: AWS DMS 來源的端點組態對話方塊,顯示九個可設定欄位和下拉式功能表。
  4. 測試您的連線以確認是否已成功設定。

    影像: AWS DMS 來源的「測試端點連線」對話方塊,顯示兩個下拉式功能表、一個測試按鈕以及已執行的測試清單。
  5. 選擇建立端點

注意

AWS DMS 一次只能移轉一個資料庫。

步驟 6:建立 AWS DMS 目標端點

目標端點適用於您的目標 Amazon DocumentDB 叢集。

若要建立目標端點:

  1. 開啟 AWS DMS 主控台

  2. 在導覽窗格中選擇端點

  3. 選擇 Create endpoint (建立端點) 並輸入下列資訊:

    • 對於 Endpoint type (端點類型),選擇 Target (目標)

    • 對於 Endpoint identifier (端點識別符),輸入易記的名稱,例如 docdb-target

    • 針對「來源引擎」,選擇docdb

    • 針對伺服器名稱,輸入目標 Amazon DocumentDB 叢集的DNS名稱。

    • 連接埠中,輸入目標 Amazon DocumentDB 叢集的連接埠號碼。

    • 對於「SSL模式」,請選擇verify-full

    • 若為 CA 憑證,請從 [選擇rds-combined-ca-bundle憑證] 下拉式清單中選擇現有憑證

    • 使用者名稱中,輸入目標 Amazon DocumentDB 叢集的主要使用者名稱。

    • 對於密碼,請輸入目標 Amazon DocumentDB 叢集的主要密碼。

    • 在「資料庫名稱」中,輸入您用來設定來源端點的相同資料庫名稱。

    影像: AWS DMS 目標的端點組態對話方塊,顯示九個可設定欄位和下拉式功能表。
  4. 測試您的連線以確認已成功設定。

    影像: AWS DMS 目標的「測試端點連線」對話方塊,會顯示兩個下拉式功能表、一個測試按鈕,以及已執行的測試清單。
  5. 選擇建立端點

步驟 7:建立並執行移轉任務

AWS DMS 工作會將複寫執行個體與來源和目標執行個體繫結。建立移轉工作時,您可以指定來源端點、目標端點、複製執行個體以及任何所需的移轉設定。您可以使用三種不同的移轉類型來建立 AWS DMS 工作:移轉現有資料、移轉現有資料,以及複寫進行中的變更或僅複製資料變更。由於此逐步解說的目的是以最短的停機時間升級 Amazon DocumentDB 叢集,因此這些步驟利用遷移現有資料和複寫進行中變更的選項。使用此選項,可在移轉現有資料時 AWS DMS 擷取變更。 AWS DMS 即使載入大量資料後,仍會繼續擷取和套用變更。來源和目標資料庫最終將保持同步,最大限度地減少停機時間。

以下是針對最短停機時間移轉建立移轉任務的步驟:

  1. 開啟主 AWS DMS 控台

  2. 在導覽窗格中,選擇 Tasks (任務)

  3. 選擇 Create task (建立任務) 並輸入下列資訊:

    影像:移轉工作的工作組態對話方塊。
  4. 在「工作設定」區段中,啟用CloudWatch 記錄檔

  5. 在「表格對應」段落中,選擇不執行任何動作。這將確保在步驟 3 中創建的索引不會被刪除。

  6. 對於「移轉」工作啟動組態,請選擇「建立時自動」。這會在您建立移轉任務後自動啟動它。

  7. 選擇 Create task (建立任務)

AWS DMS 現在開始將資料從您的來源 Amazon 文件資料庫叢集遷移到目標 Amazon DocumentDB 叢集。工作狀態應該從 [開始] 變更為 [執行中]。您可以選擇 AWS DMS 主控台中的 [工作] 來監視進度。幾分鐘/小時後 (視您的移轉大小而定),狀態應從 [載入完成] 變更為 [載入完成],複寫正在進行中。這表示 AWS DMS 已完成將來源 Amazon DocumentDB 叢集的完整負載移轉到目標 Amazon DocumentDB 叢集,現在正在複寫變更事件。

影像:移轉摘要對話方塊。

最終您的源和目標將保持同步。您可以透過對集合執行count()作業來確認它們是否處於同步狀態,以確認所有變更事件都已移轉。

步驟 8:將應用程式端點變更為目標 Amazon DocumentDB 叢集

完成滿載且CDC程序持續複寫之後,您就可以準備好將應用程式的資料庫連線端點從來源 Amazon DocumentDB 叢集變更為目標 Amazon DocumentDB 叢集。