AWS DMS 無伺服器元件 - AWS 資料庫遷移服務

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

AWS DMS 無伺服器元件

若要管理執行複寫所需的資源, AWS DMS Serverless 具有精細狀態,可顯示服務採取的不同內部動作。當您開始複寫時, AWS DMS Serverless 會計算容量負載、佈建計算的容量,並根據下列複寫狀態開始資料複寫。

下圖顯示無 AWS DMS 伺服器複寫的狀態轉換。

AWS DMS 無伺服器複寫狀態
  • 開始複寫之後的第一個狀態為初始化。在這種狀態下,所有必要的參數都經過初始化。

  • 緊接下來的狀態包括正在準備中繼資料資源正在測試連線正在擷取中繼資料。在這些狀態下, AWS DMS Serverless 會連線至您的來源資料庫,以取得預測所需容量所需的資訊。

    • 當複寫狀態為測試連線時, AWS DMS Serverless 會驗證來源資料庫和目標資料庫的連線是否設定成功。

    • 正在測試連線後的複寫狀態為正在擷取中繼資料。在此, AWS DMS 會擷取計算容量所需的資訊。

    • 一旦 AWS DMS 擷取必要的資訊,下一個狀態是計算容量。系統會在此計算執行複寫所需的基礎資源大小。

  • 正在計算容量之後的狀態轉換為正在佈建容量。當複寫處於此狀態時, AWS DMS Serverless 會初始化基礎運算資源。

  • 成功佈建所有資源之後的複寫狀態為正在啟動複寫。在此狀態下, AWS DMS Serverless 會開始複寫資料。複寫的階段包括下列項目:

    • 完全載入:在此階段中, 會DMS複寫來源資料存放區,就像開始複寫一樣。

    • CDC (初始):在此階段中, 會將變更DMS複寫到完整載入階段期間發生的來源資料存放區。 DMS只會在StopTaskCachedChangesNotApplied任務設定為 時執行此階段false

    • CDC (進行中):初始CDC階段後, 會在來源資料庫發生變更時DMS複寫變更。 DMS只會在初始CDC階段後繼續執行複寫,如果StopTaskCachedChangesApplied任務設定為 false

  • 最終狀態為執行中。在執行中狀態下,資料的複寫正在進行中。

  • 您停止的複寫會進入停止狀態。您可以在下列情況下重新啟動已停止的複寫:

    • 您無法重新啟動DMS已取消佈建的複寫。

    • 您可以使用 StartReplication動作,重新啟動已停止CDC的 僅 或完全載入和CDC複寫。您無法使用主控台重新啟動停止的複寫。

    • 您無法重新啟動使用 PostgreSQL 做為引擎的已停止複寫。

對於 AWS DMS Serverless, AWS DMS 主控台的左側導覽面板有新的選項,即 Serverless 複寫。若是無伺服器複寫,您可以指定複寫 (而非複寫執行個體類型或任務),來定義複寫。此外,您可以指定DMS要為複寫佈建的最大和最小DMS容量單位 (DCUs)。DCU 是 2GB 的 RAM。會針對您複寫目前正在使用的每一個項目DCU,向您的帳戶 AWS DMS 收費。如需 AWS DMS 定價的詳細資訊,請參閱 AWS Database Migration Service 定價

AWS DMS 然後, 會自動根據您的資料表映射和工作負載的預測大小來佈建複寫資源。此容量單位是您指定之最小與最大容量單位值範圍內的值。

支援的引擎版本

使用 AWS DMS Serverless,您不需要選擇和管理引擎版本,因為服務會處理該設定。 AWS DMS Serverless 支援下列來源:

  • MongoDB

  • Amazon DocumentDB (with MongoDB compatibility)

  • Microsoft SQL 伺服器

  • 與 Postgre SQL相容的資料庫

  • 我的SQL相容資料庫

  • MariaDB

  • Oracle

  • IBM Db2

AWS DMS Serverless 支援下列目標:

  • Microsoft SQL 伺服器

  • PostgreSQL

  • 我的SQL相容資料庫

  • Oracle

  • Amazon S3

  • Amazon Redshift

  • Amazon DynamoDB

  • Amazon Kinesis Data Streams

  • Amazon Managed Streaming for Apache Kafka

  • Amazon OpenSearch Service

  • Amazon DocumentDB (with MongoDB compatibility)

  • Amazon Neptune

作為 Serverless AWS DMS 的一部分,您可以存取主控台命令,讓您建立、設定、啟動和管理無 AWS DMS 伺服器複寫。若要使用主控台的無伺服器複寫區段執行這些命令,您必須執行下列其中一項作業:

  • 設定要附加該政策的新 AWS Identity and Access Management (IAM) 政策和IAM角色。

  • 使用 AWS CloudFormation 範本提供您需要的存取權。

AWS DMS Serverless 需要服務連結角色 (SLR) 存在於您的帳戶中。 AWS DMS 會管理此角色的建立和使用。如需確保您擁有必要 的詳細資訊SLR,請參閱 AWS DMS Serverless 的服務連結角色

建立無伺服器複寫

若要在兩個現有 AWS DMS 端點之間建立無伺服器複寫,請執行下列動作。如需建立 AWS DMS 端點的資訊,請參閱 來源與目標端點

建立無伺服器複寫
  1. 登入 AWS Management Console 並在 https://console.aws.amazon.com/dms/v2/ 開啟 AWS DMS 主控台。

  2. 在導覽窗格中,選擇無伺服器複寫,然後選擇建立複寫

  3. 建立複寫頁面上,指定無伺服器複寫組態:

    選項 動作

    名稱

    輸入用於識別複寫的名稱,例如 DMS-replication
    描述性 Amazon Resource Name (ARN) - 選用 您可以使用此選用參數來提供複寫的說明。
    來源資料庫端點 選擇帳戶中現有的端點。請注意,無 AWS DMS 伺服器僅支援 AWS DMS 標準支援的端點類型子集。
    目標資料庫端點 選擇帳戶中現有的端點。請注意,無 AWS DMS 伺服器僅支援 AWS DMS 標準支援的端點類型子集。
    複寫類型 根據需求選擇複寫類型:
    • 完全載入:僅 AWS DMS 遷移現有資料。

    • 完全載入和變更資料擷取 (CDC): AWS DMS 遷移複寫期間發生的現有資料和變更。

    • 變更資料擷取 (CDC): AWS DMS 只會遷移在您開始複寫之後發生的變更。

    設定區段中,設定複寫所需的設定。

    資料資料表對應段落中,設定資料表對應來定義規則,以選取和篩選正在複寫的資料。在您指定映射前,請確認您已檢閱您來源及目標資料庫的資料類型映射文件區段。如需來源和目標資料庫的資料類型映射資訊,請參閱 使用 AWS DMS 端點主題中來源和目標端點類型的資料類型區段。

    運算設定區段中,進行下列設定。如需運算組態設定的相關資訊,請參閱計算組態

    選項 動作

    VPC

    選擇現有的 VPC。

    Subnet group (子網路群組)

    選擇現有的子網路群組。

    VPC 安全群組 (s)

    如果尚未選擇,請選擇預設值

    AWS KMS 金鑰

    選擇適當的KMS金鑰。如需KMS金鑰的相關資訊,請參閱 AWS Key Management Service API參考中的建立金鑰

    部署

    保持原樣。

    可用區域

    保持原樣。

    最小DMS容量單位 (DCU) - (選用)

    保留空白以使用預設值 1 DCU。

    DMS容量單位上限 (DCU)

    選擇 16 DCU

    依原樣保持維護設定。

  4. 選擇建立複寫

AWS DMS 會建立無伺服器複寫來執行遷移。

修改無 AWS DMS 伺服器複寫

若要修改複寫組態,請使用 modify-replication-config 動作。您只能修改位於 CREATEDSTOPPEDFAILED 狀態的 AWS DMS 複寫組態。如需 modify-replication-config動作的相關資訊,請參閱 AWS Database Migration Service API 參考ModifyReplicationConfig中的 。

使用 修改無伺服器複寫組態 AWS Management Console
  1. 登入 AWS Management Console 並在 https://console.aws.amazon.com/dms/v2/ 開啟 AWS DMS 主控台。

  2. 在導覽窗格中,選擇無伺服器複寫

  3. 選擇您想要修改的複寫。下表說明您可以根據複寫目前狀態進行的修改。

    設定 描述 允許的狀態

    名稱

    您可以變更複寫的名稱。輸入複寫的名稱,其中包含 8 到 16 個可列印ASCII字元 (不含 /、" 和 @)。在您選取的 AWS 區域中,帳戶名稱應是唯一的。您可以選擇將一些詳細資訊新增至名稱,例如包含您執行 AWS 的區域和任務,例如:west2-mysql2mysql-config1

    ReplicationStateCREATEDSTOPPEDFAILED

    來源資料庫端點

    選擇新的現有來源端點作為複寫的來源。

    ProvisionStatenull 時,ReplicationStateCREATEDFAILED

    目標資料庫端點

    選擇新的現有目標端點作為複寫的目標。

    ProvisionStatenull 時,ReplicationStateCREATEDFAILED

    複寫類型

    您可以修改無伺服器複寫的類型。

    ProvisionStatenull 時,ReplicationStateCREATEDFAILED

    複寫設定

    您可以修改複寫設定,包括目標資料表準備模式、是否要在複寫中包含LOB資料欄、LOB大小上限、驗證和記錄。如需詳細資訊,請參閱任務設定

    ReplicationStateCREATEDSTOPPEDFAILED

    資料表對應

    您可以修改無伺服器複寫的資料表對應設定,包括選擇規則和轉換規則。如需詳細資訊,請參閱資料表映射

    ReplicationStateCREATEDSTOPPEDFAILED

    計算組態

    您可以修改無伺服器複寫的運算組態設定,包括網路設定、資源擴展設定和維護設定。如需運算組態設定的相關資訊,請參閱計算組態

    • 您可以在 ReplicationStateCREATEDSTOPPEDFAILED 時修改下列擴展、維護和網路設定:

      • MinCapacityUnits

      • MaxCapacityUnits

      • MultiAZ

      • PreferredMaintenanceWindow

      • VpcSecurityGroupIds

    • 您可以在 ProvisionStatenullReplicationStateCREATEDFAILED 時修改下列網路和安全性設定:

      • AvailabilityZone

      • DnsNameServers

      • KmsKeyId

      • ReplicationSubnetGroupId

計算組態

您可以使用「運算組態」參數或主控台區段來設定複寫佈建。運算組態物件中的欄位包括以下內容:

選項 描述

MinCapacityUnits

這是 AWS DMS 要佈建的DMS容量單位 (DCU) 數量下限。這也是自動擴展可以擴展到DCU的最低值。

MaxCapacityUnits

這是可佈建的最大DMS容量單位 AWS DMS (DCU),取決於複寫的容量預測。這也是自動擴展可以擴展到DCU的最大數量。

KmsKeyId

要用來加密複寫儲存體的加密金鑰和連線資訊。如果您選擇 (預設) aws/dms, AWS DMS 會使用與您的帳戶和相關聯的預設KMS金鑰 AWS 區域。隨即顯示描述和您的帳號,以及金鑰的 ARN。如需如何使用加密金鑰的詳細資訊,請參閱 設定加密金鑰並指定 AWS KMS 許可。在本教學課程中,將 (預設) aws/dms 保持選擇的狀態。

ReplicationSubnetGroupId

所選 中的複寫子網路群組,您要在VPC其中建立複寫。如果您的來源資料庫位於 中VPC,請選擇包含來源資料庫的子網路群組做為複寫的位置。如需複寫子網路群組的詳細資訊,請參閱 建立複寫子網路群組

VpcSecurityGroupIds

複寫執行個體是在 中建立VPC。如果您的來源資料庫位於 中VPC,請選擇提供資料庫所在之資料庫執行個體存取權VPC的安全群組。

PreferredMaintenanceWindow

此參數定義每週執行系統維護的時間範圍,以國際標準時間 () 為單位UTC。預設值為從每個 8 小時的時段隨機選取的 30 分鐘時段 AWS 區域,該時段發生在一週的隨機日期。

MultiAZ

設定此選用參數,在另一個可用區域中建立複寫的備用複本,以取得容錯移轉支援。如果您想要使用變更資料擷取 (CDC) 或持續複寫,建議您開啟此選項。

了解無 AWS DMS 伺服器中的自動擴展

在您佈建複寫且處於 RUNNING 狀態後, AWS DMS 服務會管理基礎資源的容量,以適應不斷變化的工作負載。此管理會根據下列複寫設定來擴展複寫資源:

  • MinCapacityUnits

  • MaxCapacityUnits

複寫會在超過使用率上限閾值的一段時間後縱向擴展,並在容量使用率低於最低容量使用率閾值較長一段時間時縮減。

注意

無伺服器複寫無法在進行完整載入時自動縮減。

在無 AWS DMS 伺服器中調整自動擴展

若要調整複寫自動擴展參數,建議您MaxCapacityUnits將 設定為最大值,並讓 AWS DMS 管理資源的佈建。建議您選擇DCU最大容量設定,以允許自動擴展的最大效益,以適應交易量的尖峰。如果您的複寫持續使用 上限,則定價計算器會顯示每月成本上限DCU。上限DCU不代表實際成本,因為您只支付使用的容量。

如果您的複寫未以完整容量使用其資源, AWS DMS 將逐步取消佈建資源以節省您的成本。但是,由於佈建和取消佈建資源需要一些時間,因此建議您將 MinCapacityUnits 設為可以處理複寫工作負載中預期的任何突然峰值的值。這將避免您的複寫佈建不足,同時 AWS DMS 佈建更高工作負載層級的資源。

如果佈建不足的複寫容量上限設定太低而無法滿足資料需求,或最小容量太低,無法應付複製工作負載的突然激增,您可能會看到 CapacityUtilization 指標始終是其最大值。這可能會導致複寫失敗。如果您的複寫因佈建不足的資源而失敗, 會在複寫日誌中 AWS DMS 建立 out-of-memory事件。如果 out-of-memory條件是由於複寫工作負載突然遽增而發生,複寫會自動擴展並重新啟動。

監控無 AWS DMS 伺服器複寫

AWS 提供數種工具來監控無 AWS DMS 伺服器複寫,以及回應潛在事件:

AWS DMS 無伺服器複寫指標

無伺服器複寫監控包含下列統計資料的 Amazon CloudWatch 指標。這些統計資料會依每個無伺服器複寫分組。

指標

單位

描述

CapacityUtilization

百分比

無伺服器複寫使用的記憶體百分比

CDCIncomingChanges 百分比

等待套用至目標的 point-in-time變更事件總數。請注意,這和來源端點交易變更率的測量不同。此指標的大量數字通常表示 AWS DMS 無法及時套用擷取的變更,進而導致高目標延遲。

CDCLatencySource 秒鐘

從來源端點擷取的最後一個事件與執行個體目前系統時間戳記 AWS DMS 之間的間隔,以秒為單位。 CDCLatencySource代表來源與複寫執行個體之間的延遲。高CDCLatencySource表示從來源擷取變更的程序會延遲。若要識別持續複寫中的延遲,您可以搭配 檢視此指標CDCLatencyTarget。如果 CDCLatencySource和 CDCLatencyTarget 都很高,CDCLatencySource請先調查。

CDCLatencySource 當來源與複寫之間沒有複寫延遲時,可以是 0。當複寫嘗試讀取來源的交易日誌中的下一個事件,而且沒有新事件與上次從來源讀取相比,CDCLatencySource也可能變成零。發生這種情況時,複寫會將 重設CDCLatencySource為 0。

CDCLatencyTarget 秒鐘

等待遞交到目標的第一個事件時間戳記,與 AWS DMS 執行個體目前時間戳記間的間隔 (秒)。目標延遲是指複寫執行個體伺服器時間與轉送至目標元件的最舊未確認事件識別碼之間的差異。換言之,目標延遲是複寫執行個體與套用但未由TRG端點確認的最舊事件之間的時間戳記差異 (99%)。當 CDCLatencyTarget 為高時,表示將變更事件套用至目標的程序會延遲。若要識別持續複寫中的延遲,您可以使用 檢視此指標CDCLatencySource。如果 CDCLatencyTarget 是高的CDCLatencySource但不是高的,請調查是否:

  • 目標中沒有主索引鍵或索引

  • 目標或複寫執行個體中發生資源瓶頸

  • 複寫和目標之間存在網路問題

CDCThroughputBandwidthTarget KB/秒

針對目標傳輸的傳出資料,以每秒 KB 為單位。 CDCThroughputBandwidth會記錄取樣點上傳輸的傳出資料。若找不到網路流量,則該值為零。由於 CDC 不會發出長時間執行的交易,因此可能不會記錄網路流量。

CDCThroughputRowsSource 資料列/秒

來自來源的傳入變更 (單位為每秒資料列數)。

CDCThroughputRowsTarget 資料列/秒

目標的傳出變更 (單位為每秒資料列數)。

FullLoadThroughputBandwidthTarget KB/秒

從完全載入之目標中傳輸的傳出資料 (單位為每秒 KB 數)。

FullLoadThroughputRowsTarget 資料列/秒

完全載入中目標的傳出變更 (單位為每秒資料列數)。

AWS DMS 無伺服器複寫日誌

您可以使用 Amazon CloudWatch 在 AWS DMS 遷移過程中記錄複寫資訊。您需要在選取複寫設定時啟用記錄。

無伺服器複寫會將狀態日誌上傳到 CloudWatch 您的帳戶,以增加複寫進度的可見性,並協助進行故障診斷。

AWS DMS 會將無伺服器連結的日誌上傳至字首為 的專用日誌群組dms-serverless-replication-<your replication config resource ID>。在這個日誌群組中,存在名為 dms-serverless-replication-orchestrator-<your replication config resource ID> 的日誌串流。此日誌串流會報告複寫的複寫狀態以及相關聯的訊息,提供進一步詳細資料,說明其在此階段所執行的工作。如需日誌項目的範例,請參閱下列無伺服器複寫日誌範例

注意

AWS DMS 在您執行複寫之前,不會建立日誌群組或串流。如果您只建立複寫, AWS DMS 則不會建立日誌群組或串流。

若要檢視已執行之複寫的日誌,請按照下列步驟進行:

  1. 開啟 AWS DMS 主控台,然後從導覽窗格中選擇無伺服器複寫無伺服器複寫對話方塊隨即出現。

  2. 移至組態區段,然後在「一般」資料欄中選擇檢視無伺服器日誌。 CloudWatch 日誌群組隨即開啟。

  3. 尋找遷移任務日誌區段,然後選擇檢視 CloudWatch 日誌

如果您的複寫失敗, AWS DMS 會建立複寫狀態為 的日誌項目failed,以及說明失敗原因的訊息。您應該檢查 CloudWatch 日誌,作為故障診斷失敗複寫的第一步。

注意

與 AWS DMS Classic 相同,您可以選擇對資料遷移本身的進度啟用更精細的記錄,也就是基礎複寫任務發出的日誌。您可以在複寫設定中啟用這些日誌,方法是EnableLoggingLogging 欄位中將 設定為 true ,如下列JSON範例所示:

{ "Logging": { "EnableLogging": true } }

如果您啟用這些日誌,則只會在無伺服器複寫 running 階段期間開始顯示這些日誌。這些日誌會出現在與先前的日誌串流相同的日誌群組下,但會出現在新的日誌串流 dms-serverless-serv-res-id-{unique identifier} 下。如需如何解譯無伺服器複寫日誌的相關資訊,請參閱下節。

無伺服器複寫日誌範例

本節包含無伺服器複寫的日誌項目範例。

範例:複寫開始

當您執行無伺服器複寫時, AWS DMS 會建立類似下列的日誌項目:

{'replication_state':'initializing', 'message': 'Initializing the replication workflow.'}
範例:複寫失敗

如果複寫的其中一個端點未正確設定, 會 AWS DMS 建立類似下列的日誌項目:

{'replication_state':'failed', 'message': 'Test connection failed for endpoint X.', 'failure_message': 'X'}

如果您在失敗後在日誌中看到此訊息,請確定指定的端點狀況良好且設定是正確的。

增強了 Oracle 到 Amazon Redshift 遷移的完全載入輸送量

AWS DMS 大幅改善從 Oracle 到 Amazon Redshift 的全負載遷移輸送量效能。 DMS會自動為資料表啟用此功能,而不需要資料表映射中的 custom parallel-load選項。對於具有自訂平行載入選項的資料表,無DMS伺服器會根據指定的資料表映射組態來分配資料表負載。若要使用增強的輸送量,請執行下列動作:

  • 提供不參考分割區或邊界的選擇規則。例如,如果資料表映射中的資料表設定包含 parallel-load,DMS則 Serverless 不會使用增強的輸送量功能。如需詳細資訊,請參閱選取規則與動作

  • MaxFileSizeWriteBufferSize設為 64 MB。如需詳細資訊,請參閱使用 Amazon Redshift 作為 AWS DMS 目標時的端點設定

  • 我們建議CompressCsvFilestrue針對具有稀疏資料的資料存放區,以及false針對具有密集資料的資料存放區,將 設定為 。

  • 將下列任務設定設為 0

    • ParallelLoadThreads

    • ParallelLoadQueuesPerThread

    • ParallelApplyThreads

    • ParallelApplyQueuesPerThread

    • ParallelLoadBufferSize

  • MaxFullLoadSubTasks 設定為 49 以支援平行資料遷移。

  • LOB mode 設定為 inline。如需詳細資訊,請參閱設定 AWS DMS 任務中來源資料庫的LOB支援

AWS DMS 不會為下列複寫提供增強的輸送量效能: