AWS DMS 無伺服器元件 - AWS Database Migration Service

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

AWS DMS 無伺服器元件

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

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

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

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

    • 當複寫狀態為「測試連線」時, AWS DMS 無伺服器會驗證與來源和目標資料庫的連線是否已成功設定。

    • 正在測試連線後的複寫狀態為正在擷取中繼資料。在這裡, AWS DMS 檢索計算容量所需的信息。

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

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

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

    • 完整負載:在此階段中,DMS 會以複寫開始複寫時的原樣複寫來源資料存放區。

    • CDC (初始):在此階段中,DMS 會將變更複寫到「滿載」階段期間發生的來源資料存放區。只有在StopTaskCachedChangesNotApplied工作設定為false時,DMS 才會執行此階段。

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

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

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

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

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

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

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

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

支援的引擎版本

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

  • Microsoft SQL Server

  • 與 PostgreSQL 相容的資料庫

  • 與 MySQL 相容的資料庫

  • MariaDB

  • Oracle

  • IBM Db2

AWS DMS 無伺服器支援下列目標:

  • Microsoft SQL Server

  • PostgreSQL

  • 與 MySQL 相容的資料庫

  • Oracle

  • Amazon S3

  • Amazon Redshift

  • Amazon DynamoDB

  • Amazon Kinesis Data Streams

  • Amazon Managed Streaming for Apache Kafka

  • Amazon OpenSearch 服務

  • Amazon DocumentDB (with MongoDB compatibility)

  • Amazon Neptune

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

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

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

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

建立無伺服器複寫

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

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

  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 安全群組

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

    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 並開啟 AWS DMS 主控台,網址為 https://console.aws.amazon.com/dms/v2/

  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

計算組態

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

選項 描述

MinCapacity单位

這是 AWS DMS 將佈建的 DMS 容量單位 (DCU) 的最小數目。這也是自動擴展可以縮減的最小 DCU。

MaxCapacity单位

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

KmsKey識別碼

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

ReplicationSubnetGroupId

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

VpcSecurityGroupIds

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

PreferredMaintenance窗口

此參數會定義每週可進行系統維護的時段,以國際標準時間 (UTC) 表示。預設值為 30 分鐘的視窗,從每個 8 小時的時間區塊中隨機選取 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

百分比

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

疾控中心 IncomingChanges 百分比

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

疾控中心 LatencySource 秒鐘

從來源端點擷取到的最後一個事件,與 AWS DMS 執行個體目前系統時間戳記之間的間隔 (秒)。CDC LatencySource 代表來源與複寫執行個體之間的延遲。高 CDC LatencySource 意味著從源捕獲更改的過程被延遲。若要識別進行中複寫的延遲,您可以與 CDC LatencyTarget 一起檢視此度量。如果 CDC LatencySource 和 CDC 都LatencyTarget 很高,請首先調查 CD LatencySource C。

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

疾控中心 LatencyTarget 秒鐘

等待遞交到目標的第一個事件時間戳記,與 AWS DMS 執行個體目前時間戳記間的間隔 (秒)。目標延遲是指複寫執行個體伺服器時間與轉送至目標元件的最舊未確認事件識別碼之間的差異。換句話說,目標延遲是複寫執行個體與 TRG 端點套用但尚未確認的最舊事件 (99%) 之間的時間戳記差異。CDC LatencyTarget 高時,表示將變更事件套用至目標的程序已延遲。若要識別進行中複寫的延遲,您可以與 CDC LatencySource 一起檢視此度量。如果 CDC LatencyTarget 很高,但 CDC LatencySource 不高,請調查是否:

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

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

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

疾控中心ThroughputBandwidth目標 KB/秒

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

疾控中心來源 ThroughputRows 資料列/秒

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

疾控中心ThroughputRows目標 資料列/秒

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

FullLoadThroughputBandwidth目標 KB/秒

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

FullLoadThroughputRows目標 資料列/秒

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

AWS DMS 無伺服器複寫記錄

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

無伺服器複製會將狀態記錄上傳到您的 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 記錄,做為疑難排解失敗複寫的第一個步驟。

注意

與 C AWS DMS lassic 一樣,您可以選擇對資料移轉本身的進度啟用更精細的記錄;也就是說,基礎複寫工作所發出的記錄。如下列 JSON 範例所示,您可以在複寫設定中啟用這些日誌,方法是將 Logging 欄位中的 EnableLogging 設為 true

{ "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'}

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

全負載甲骨文到亞馬遜紅移遷移的增強輸送量

AWS DMS 為從甲骨文到 Amazon Redshift 移的全負載遷移提供了顯著改進的輸送量效能。DMS 會針對表格自動啟用此功能,而不在其表格對映中使用custom parallel-load選項。對於具有自訂平行載入選項的表格,DMS 無伺服器會根據指定的表格對應組態來分配表格負載。若要使用增強的輸送量,請執行下列動作:

  • 提供不參照分割區或界限的選取規則。例如,如果表格對映中的資料表設定包含parallel-load,則 DMS 無伺服器將不會使用增強的輸送量功能。如需詳細資訊,請參閱 選取規則與動作

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

  • 對於具有稀疏資料true的資料倉庫,CompressCsvFiles以及具有密集資料的資料倉庫,建議將設定false為。

  • 將下列工作設定設定為0

    • ParallelLoadThreads

    • ParallelLoadQueuesPerThread

    • ParallelApplyThreads

    • ParallelApplyQueuesPerThread

    • ParallelLoadBufferSize

  • 設定MaxFullLoadSubTasks49以支援 parallel 資料移轉。

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

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