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

3 分的閱讀內容
0

我無法連接至我的 AWS Database Migration Service (AWS DMS) 端點。為什麼我的測試連線會失敗?如何對這些連線問題進行疑難排解?

簡短描述

測試從複寫執行個體到來源或目標端點的連線時,通常會看到兩種錯誤類型:

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

  • "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."

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

  • "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 Services 互動的所有來源和目標端點。如果您的 DMS 端點在較舊版本上測試成功,但在較新版本上未能成功,請參閱將 VPC 端點設定為 AWS DMS 來源和目標端點

檢查複寫執行個體組態

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

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

檢查您的來源或目標資料庫組態

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

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

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

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

使用 AWS 主控台:

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

使用 AWS CLI:

執行 describe-subnets 命令,以判斷每個子網路的 CIDR。對於 replication-instance-name,輸入複寫執行個體的名稱。

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

執行 describe-replication-instances 命令,以判斷複寫執行個體的 IP 位址。對於 replication-instance-name,輸入複寫執行個體的名稱。

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

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

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

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

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

telnet <database_IP_address_or_DNS> <port_number>
nslookup <domain_name>

對於 database_IP_address_or_DNS,使用為 DMS 來源或目標端點所指定資料庫的 IP 位址或網域名稱。對於 port_number,使用為 DMS 來源或目標端點所指定資料庫的連接埠號碼。對於 domain_name,使用為 DMS 來源或目標端點所指定資料庫的網域名稱。

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

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

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

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

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

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

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

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


相關資訊

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

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

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

使用 Oracle 待命項目和 AWS DMS 將內部部署 Oracle 資料庫遷移至 Amazon RDS for PostgreSQL

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

AWS 官方
AWS 官方已更新 2 年前