本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 升級 Amazon DocumentDB 叢集 AWS Database Migration Service
重要
Amazon DocumentDB 不會遵循與 MongoDB 相同的支援生命週期,而 MongoDB end-of-life排程不適用於 Amazon DocumentDB。目前沒有 Amazon DocumentDB 3.6 end-of-life的計劃,而您現有的 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 shell 驗證您的 Amazon DocumentDB 叢集,並執行下列命令:
db.adminCommand({modifyChangeStreams: 1, database: "db_name", collection: "", enable: true});
步驟 2:修改變更串流保留期間
接著,根據您想要在變更串流中保留變更事件的時間長度,修改變更串流保留期間。例如,如果您預期使用 AWS DMS 的 Amazon DocumentDB 叢集遷移需要 12 小時,您應該將變更串流保留設定為大於 12 小時的值。Amazon DocumentDB 叢集的預設保留期間為三小時。您可以使用 AWS Management Console 或 ,將 Amazon DocumentDB 叢集的變更串流日誌保留期間修改為一小時到七天 AWS CLI。如需詳細資訊,請參閱修改變更串流日誌保留期間。
步驟 3:遷移您的索引
在目標 Amazon DocumentDB 叢集上建立與來源 Amazon DocumentDB 叢集上相同的索引。雖然 AWS DMS 會處理資料遷移,但不會遷移索引。若要遷移索引,請使用 Amazon DocumentDB Index Tool 從來源 Amazon DocumentDB 叢集匯出索引。您可以建立 Amazon DocumentDB 工具 GitHub 儲存庫的複製,並遵循 中的指示來取得工具README.md
在下列範例中,將每個使用者輸入預留位置取代為您自己的資訊。
下列程式碼會從來源 Amazon DocumentDB 叢集傾印索引:
python migrationtools/documentdb_index_tool.py --dump-indexes --urimongodb://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 Index Tool。下列命令會從指定的目錄還原目標 Amazon DocumentDB 叢集中的索引。
python migrationtools/documentdb_index_tool.py --restore-indexes --urimongodb://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 shell 連線至目標 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 複寫執行個體:
-
開啟 AWS DMS 主控台
。 -
在導覽窗格中,選擇 Replication instances (複寫執行個體)。
-
選擇 Create replication instance (建立複寫執行個體) 並輸入下列資訊:
在名稱中,輸入您選擇的名稱。例如
docdb36todocdb40。-
在描述中,輸入您選擇的描述。對於 listitem,Amazon DocumentDB 3.6 到 Amazon DocumentDB 4.0 複寫執行個體。
-
針對執行個體類別,根據您的需求選擇大小。
-
針對引擎版本,選擇
3.4.1. -
針對 Amazon VPC,選擇存放來源和目標 Amazon DocumentDB 叢集的 Amazon VPC。
-
對於配置的儲存體 (GiB),請使用預設值 50 GiB。如果您有高寫入輸送量工作負載,請增加此值以符合您的工作負載。
-
對於異地同步備份,如果您需要高可用性和容錯移轉支援,請選擇是。
對於 Publicly accessible (可公開存取),啟用此選項。
選擇 Create replication instance (建立複寫執行個體)。
步驟 5:建立 AWS DMS 來源端點
來源端點用於來源 Amazon DocumentDB 叢集。
建立來源端點
-
開啟 AWS DMS 主控台
。 -
在導覽窗格中選擇端點。
-
選擇
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 一次只能遷移一個資料庫。
步驟 6:建立 AWS DMS 目標端點
目標端點適用於您的目標 Amazon DocumentDB 叢集。
若要建立目標端點:
-
開啟 AWS DMS 主控台
。 -
在導覽窗格中選擇端點。
-
選擇 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 叢集的主要密碼。
-
針對資料庫名稱,輸入用於設定來源端點的相同資料庫名稱。
-
測試您的連線以確認連線已成功設定。
-
選擇建立端點。
步驟 7:建立和執行遷移任務
AWS DMS 任務會將複寫執行個體與您的來源和目標執行個體繫結。建立遷移任務時,您可以指定來源端點、目標端點、複寫執行個體,以及任何所需的遷移設定。您可以使用三種不同的遷移類型建立 AWS DMS 任務 - 遷移現有資料、遷移現有資料,以及複寫進行中的變更,或僅複寫資料變更。由於本演練的目的是以最短的停機時間升級 Amazon DocumentDB 叢集,因此步驟會利用 選項來遷移現有資料並複寫持續變更。使用此選項時, 會在遷移現有資料時 AWS DMS 擷取變更。即使已載入大量資料, 仍會 AWS DMS 繼續擷取並套用變更。來源和目標資料庫最終將保持同步,最大限度地減少停機時間。
以下是為最小停機時間遷移建立遷移任務的步驟:
-
開啟 AWS DMS 主控台
。 -
在導覽窗格中,選擇資料庫遷移任務。
-
選擇建立資料庫遷移任務,然後在任務組態區段中輸入下列資訊:
針對任務識別符,輸入易於記住的名稱,例如
my-dms-upgrade-task。針對描述性 Amazon Resource Name (ARN),輸入易於使用的名稱以覆寫預設 DMS ARN。
對於 Replication instance (複寫執行個體),選擇您在 步驟 4:建立 AWS DMS 複寫執行個體 中建立的複寫執行個體。
針對來源資料庫端點,選擇您在 中建立的來源端點步驟 5:建立 AWS DMS 來源端點。
針對目標資料庫端點,選擇您在 中建立的目標端點步驟 6:建立 AWS DMS 目標端點。
-
針對遷移類型,選擇遷移和複寫。
-
在任務設定區段中輸入下列資訊:
-
針對目標資料表準備模式區段,選擇不執行任何動作。這將確保不會捨棄步驟 3 中建立的索引。
-
針對任務日誌子區段,選取開啟 CloudWatch 日誌。
-
針對遷移任務啟動組態,選擇建立時自動。這會在您建立遷移任務後自動啟動遷移任務。
-
選擇建立資料庫遷移任務。
-
AWS DMS 現在開始將資料從來源 Amazon DocumentDB 叢集遷移至目標 Amazon DocumentDB 叢集。任務狀態應該會從開始變更為執行中。您可以在 AWS DMS 主控台中選擇任務來監控進度。幾分鐘/小時後 (取決於遷移的大小),狀態應該會從 變更為載入完成,並持續複寫。這表示 AWS DMS 已經完成來源 Amazon DocumentDB 叢集到目標 Amazon DocumentDB 叢集的完整負載遷移,現在正在複寫變更事件。
最後,您的來源和目標將同步。您可以在集合上執行 count()操作,以驗證所有變更事件是否已遷移,藉此驗證它們是否同步。
步驟 8:將應用程式端點變更為目標 Amazon DocumentDB 叢集
完全載入完成且 CDC 程序持續複寫後,您就可以將應用程式的資料庫連線端點從來源 Amazon DocumentDB 叢集變更為目標 Amazon DocumentDB 叢集。