如何對 AWS DMS 端點連線失敗進行疑難排解?

3 分的閱讀內容
0

我無法連線到 AWS Database Migration Service (AWS DMS) 端點,且我的測試連線失敗。我想疑難排解連線問題。

簡短說明

測試從複寫執行個體到來源或目標端點的連線時,您可能會收到兩種類型的錯誤:連線問題和原生資料庫問題。您必須先解決這些問題,才能成功完成測試。

解決方法

連線問題

如果是因為複寫執行個體與來源或目標之間的連線問題而發生錯誤,您會收到類似下列內容的錯誤訊息:

  • "Application-Status: 1020912, Application-Message: Failed to connect Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: HYT00 NativeError: 0 Message: [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired ODBC general error."
  • "Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]timeout expired ODBC general error."
  • "Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider ODBC general error., Application-Detailed-Message: RetCode: SQL_ERROR SqlState: HY000 NativeError: 2005 Message: [unixODBC][MySQL][ODBC 5.3(w) Driver]Unknown MySQL server host 'mysql1.xxxxx.us-east-1.rds.amazonaws.com' (22) ODBC general error."

原生資料庫錯誤

如果是因為原生資料庫錯誤 (例如資料庫權限或驗證錯誤) 而發生錯誤,您會收到類似下列內容的錯誤訊息:

  • "Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]FATAL: password authentication failed for user "dmsuser" ODBC general error."

注意: 最佳實務是在您建立 AWS DMS 來源和目標端點之後,測試從 AWS DMS 複寫執行個體至端點的連線。在開始 AWS DMS 遷移任務之前,請先完成測試。否則,任務可能會因為端點的連線問題而失敗。

解決 AWS 託管資源的連線問題

確認可以在來源或目標資料庫與複寫執行個體之間建立連線。將來源或目標資料庫連接至公有子網路或私有子網路中的複寫執行個體,具體取決於您的使用案例和網路基礎架構。如需詳細資訊,請參閱設定複寫執行個體的網路

注意: AWS DMS 3.4.7 及更新版本需要您將 AWS DMS 設定為使用虛擬私有雲端 (VPC) 端點。或者,您必須使用公用路由至與特定 Amazon Web 服務互動的所有來源和目標端點。如果您的 AWS DMS 端點在較舊版本上測試成功,但在較新版本上未能成功,那麼請參閱將 VPC 端點設定為 AWS DMS 來源和目標端點

檢查複寫執行個體組態

在複寫執行個體中,確認您的組態包含下列項目:

  • 安全群組中含有來源或目標資料庫連接埠的 IP 位址的傳出規則。依預設,安全群組傳出規則允許所有流量。此外,安全群組具狀態,因此您不需要從預設設定修改傳入規則
  • 網路 ACL 中含有來源或目標資料庫連接埠的 IP 位址的傳出規則。依預設,網路存取控制清單 (ACL)傳出規則允許所有流量。
  • 網路 ACL 中含有來源或目標資料庫暫時性連接埠的 IP 位址的傳入規則。依預設,網路 ACL 的傳入規則允許所有流量。

檢查您的來源或目標資料庫組態
在來源或目標資料庫中,確認您的組態包含下列項目:

  • 複寫執行個體的 IP 位址或複寫執行個體子網路群組的無類別域間路由 (CIDR) 的傳入規則傳入規則必須包括安全群組中來源或目標資料庫的連接埠。此外,安全群組具狀態,因此您不需要從預設設定修改傳出規則
    **注意:**若要尋找 IP 位址和 CIDR,請參閱「判斷子網路群組的 IP 位址和 CIDR」一節。
  • 複寫執行個體的 IP 位址或複寫執行個體子網路群組的 CIDR 的傳入規則傳入規則必須包括網路 ACL 中來源或目標資料庫的連接埠。確認允許的 IP 位址和連接埠皆沒有明確的拒絕規則。
  • IP 位址的傳出規則,或網路 ACL 中含有暫時性連接埠的複寫執行個體子網路群組的 CIDR。依預設,網路 ACL 的傳出規則允許所有流量。
  • 最佳實務是將您的網路設定為允許複寫執行個體子網路群組的 CIDR。在容錯移轉或主機更換事件期間,複寫執行個體的 IP 位址會變更。

判斷子網路群組的 IP 位址和 CIDR

若要設定傳入和傳出規則,請判斷子網路群組的 IP 位址和 CIDR。您可以使用 AWS DMS 主控台或 AWS CLI。

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

AWS DMS 主控台

請完成下列步驟:

  1. 開啟 AWS DMS 主控台
  2. 在導覽窗格中,選擇複寫執行個體
  3. 選擇複寫執行個體的名稱。
  4. 複製詳細資訊下方的資訊,包括複寫執行個體的公有 IP 位址私有 IP 位址複寫子網路群組
  5. 複寫子網路群組下方,選擇要存取子網路群組頁面的連結。複製子網路群組中每個子網路的名稱。
  6. 若要驗證每個子網路的 CIDR,請開啟 Amazon Virtual Private Cloud (Amazon VPC) 主控台
  7. 子網路索引標籤中,搜尋步驟 5 中記下的子網路。記下每個子網路的 CIDR。

AWS CLI

要判斷每個子網路的 CIDR,請執行 describe-subnets 命令。

aws ec2 describe-subnets --filters Name=subnet-id,Values="$(aws dms describe-replication-instances --filters "Name=replication-instance-id,Values=replication-instance-name" --query "ReplicationInstances[*].ReplicationSubnetGroup.Subnets[*].SubnetIdentifier" --output text | sed -e 's/\t/,/g')" --query "Subnets[*].{SubnetId:SubnetId,CidrBlock:CidrBlock}" --output table

注意: 輸入複寫執行個體的名稱以便取代 replication-instance-name

要判斷複寫執行個體的 IP 位址,請執行 describe-replication-instances 命令。

aws dms describe-replication-instances --filters "Name=replication-instance-id,Values=replication-instance-name" --query "ReplicationInstances[*].{ReplicationInstancePublicIpAddresses:ReplicationInstancePublicIpAddresses,ReplicationInstancePrivateIpAddresses:ReplicationInstancePrivateIpAddresses}" --output table

注意: 輸入複寫執行個體的名稱以便取代 replication-instance-name

解決連線問題 (內部部署資源)

如果來源或目標資料庫是在內部部署託管,請確認下列事項:

  • 資料庫允許來自 AWS DMS 複寫執行個體的傳入連線。若要確認,請洽詢您的網路管理員。
  • 防火牆不會封鎖至來源或目標資料庫的通訊。
  • 確認 DNS 組態已正確設定。如果您需要 DNS 解析,請使用 Amazon Route 53 Resolver。如需有關如何透過 Amazon Route 53 Resolver 使用內部部署名稱伺服器解析端點的資訊,請參閱使用自己的內部部署名稱伺服器
    -or-
    透過 AWS CLI 建立新的 AWS DMS 執行個體,以便使用客戶的 DNS 名稱伺服器 (--dns-name-servers) 解析 DNS 問題。依預設,AWS DMS 執行個體會使用 Amazon 提供的 DNS 進行解析。當來源或目標設定為使用自訂 DNS 時,AWS DMS 端點可能會失敗。如需詳細資訊,請參閱 create-replication-instance

請確保您的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體與出現連線問題的 AWS DMS 複寫執行個體,具有相同的網路組態。要對網路連線問題進行疑難排解,首先請在新的 Amazon EC2 執行個體上執行下列命令:

telnet database_IP_address_or_DNS port_number

**注意:**使用為 DMS 來源或目標端點所指定資料庫的 IP 位址或網域名稱取代 database_IP_address_or_DNS。使用為 AWS DMS 來源或目標端點所指定資料庫的連接埠號碼取代 port_number

然後,執行下列命令:

nslookup domain_name

**注意:**使用為 AWS DMS 來源或目標端點所指定資料庫的網域名稱取代 domain_name

解決原生資料庫的錯誤問題

若要解決原生資料庫的錯誤問題,請確認下列端點組態已正確設定:

  • 使用者名稱
  • 密碼
  • 伺服器名稱設為內部部署資料庫的 DNS 或 IP,或 Amazon Relational Database Service (Amazon RDS) 端點
  • 連接埠
  • 資料庫名稱
    **注意:**請勿為 MySQL 來源或目標指定資料庫名稱。

如果您是使用 AWS Secrets Manager 指定上述任一欄位,請參閱使用密碼存取 AWS Database Migration Service 端點

如果是與來源或目標資料庫相關的原生資料庫錯誤,請參閱特定資料庫文件中的解決方法。使用您在 AWS DMS 主控台中收到的錯誤代碼和錯誤訊息。

如需詳細資訊,請檢查來源或目標資料庫中的錯誤、追蹤、警示或其他記錄。

如果是資料庫存取錯誤,請確認 AWS DMS 對特定來源目標所需的權限。

如需有關如何使用 SSL 為來源和目標端點設定加密連線的詳細資訊,請參閱將 SSL 與 AWS Database Migration Service 搭配使用

相關資訊

如何在使用 AWS DMS 時,對 Amazon S3 端點連線測試失敗進行疑難排解?

如何為使用 Amazon Redshift 做為目標端點的 AWS DMS 任務疑難排解連線失敗和錯誤?

如何對 AWS DMS 與 MongoDB 來源端點之間的連線失敗進行疑難排解?

將 Microsoft SQL Server 資料庫遷移至 AWS 雲端

AWS 官方
AWS 官方已更新 3 個月前