如何對 AWS DMS 端點連線失敗進行疑難排解?
我無法連線到 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 上託管資源的連線問題
檢查是否可以在來源或目標資料庫與複寫執行個體之間建立連線。根據您的使用案例和網路基礎架構,將您的來源資料庫或目標資料庫連線到公有子網路或私有子網路中的複寫執行個體。如需詳細資訊,請參閱設定複寫執行個體的網路。
**注意:**AWS DMS 3.4.7 及更新版本需要您將 AWS DMS 設定為使用 Amazon Virtual Private Cloud (Amazon VPC) 端點。或者,您必須使用公有路由到與某些 AWS 服務互動的所有來源和目標端點。
檢查複寫執行個體組態
在您的複寫執行個體中,確認您的組態包含以下規則:
- 安全群組中來源資料庫或目標資料庫的連接埠與 IP 位址對應的傳出規則。預設情況下,安全群組的傳出規則允許所有流量。安全群組為可設定狀態,因此您可以保留預設的傳入規則。
- 對於 IP 位址的傳出規則,其中包含網路存取控制清單 (ACL) 中的來源資料庫或目標資料庫的連接埠。預設情況下,網路 ACL 的傳出規則允許所有流量。
- 網路 ACL 中含有來源資料庫或目標資料庫暫時性連接埠的 IP 位址的傳入規則。預設情況下,網路 ACL 的傳入規則允許所有流量。
檢查您的來源或目標資料庫組態
在您的來源資料庫或目標資料庫中,確認您的組態包含以下規則:
- 複寫執行個體的 IP 位址或複寫執行個體子網路群組的 CIDR 區塊的傳入規則。傳入規則必須包含安全群組中來源資料庫或目標資料庫的連接埠。安全群組是可設定狀態,因此您可以保留預設的傳出規則。
- 複寫執行個體的 IP 位址或複寫執行個體子網路群組 CIDR 區塊的傳入規則。傳入規則必須在網路 ACL 中包含來源資料庫或目標資料庫的連接埠。確認 IP 位址和連接埠沒有明確的拒絕規則。
- 網路 ACL 中,具有暫時性連接埠的複寫執行個體子網路群組 IP 位址或 CIDR 區塊的傳出規則。預設情況下,網路 ACL 的傳出規則允許所有流量。
最佳做法是將您的網路設定為允許複寫執行個體子網路群組的 CIDR 區塊。在容錯移轉或主機替換事件期間,複寫執行個體的 IP 位址會變更。
確定子網路群組的 IP 位址和 CIDR 區塊
若要設定傳入和傳出規則,請確定子網路群組的 IP 位址和 CIDR 區塊。您可以使用 AWS DMS 主控台或 AWS Command Line Interface (AWS CLI)。
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
AWS DMS 主控台
請完成下列步驟:
- 開啟 AWS DMS 主控台。
- 在導覽窗格中,選擇 Replication instances (複寫執行個體)。
- 選擇您的複寫執行個體。
- 在 Details (詳細資料) 下,複製複寫執行個體的公有 IP 位址、私有 IP 位址和複寫子網路群組。
- 在複寫子網路群組下方,選擇要存取子網路群組頁面的連結。複製子網路群組中每個子網路的名稱。
- 若要驗證每個子網路的 CIDR 區塊,請開啟 Amazon VPC 主控台。
- 在 Subnets (子網路) 索引標籤中,搜尋子網路。記下每個子網路的 CIDR 區塊。
AWS CLI
若要確定每個子網路的 CIDR 區塊,請執行 describe-subnets AWS CLI 命令:
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。有關如何使用內部部署名稱伺服器透過 Route 53 Resolver 解析端點的資訊,請參閱使用您自己的內部部署名稱伺服器。或者,透過 AWS CLI 建立新的 AWS DMS 執行個體,以使用客戶 DNS 名稱伺服器 (--dns-name-servers) 來解決 DNS 問題。預設情況下,AWS DMS 執行個體會使用 Amazon 提供的 DNS 名稱進行解析。如需詳細資訊,請參閱 create-replication-instance。
**注意:**當您將來源或目標設定為使用自訂 DNS 時,AWS DMS 端點可能會失敗。
請檢查您 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的網路群組態,是否與存在連線問題的 AWS DMS 複寫執行個體相同。若要對網路連線問題進行疑難排解,請先在新的 Amazon EC2 執行個體上執行下列命令:
telnet database_IP_address_or_DNS port_number
**注意:**將 database_IP_address_or_DNS 替換為您為 AWS DMS 來源或目標端點所指定資料庫的 IP 位址或網域名稱。將 port_number 替換為您為 AWS DMS 來源或目標端點指定的資料庫連接埠號碼。
然後,執行以下命令:
nslookup domain_name
**注意:**將 domain_name 替換為您為 AWS DMS 來源或目標端點指定的資料庫的網域名稱。
解決原生資料庫錯誤
若要解決原生資料庫錯誤,請確認您已正確設定了以下端點組態:
- Username
- Password
- ServerName
**注意:**您必須將 ServerName 設定為內部部署資料庫或 Amazon Relational Database Service (Amazon RDS) 端點的 DNS 或 IP 位址。 - 連接埠
- 資料庫名稱
**注意:**請勿為 MySQL 來源或目標指定資料庫名稱。
如果您使用 AWS Secrets Manager 指定上述任何欄位,請參閱使用金鑰存取 AWS DMS 端點。
**注意:**Secrets Manager 不支援在密碼中使用下列字元:分號 ( ; )、句點 ( . )、冒號 (: )、加號 ( + ) 和大括號 ( { } )。
如果是與來源或目標資料庫相關的原生資料庫錯誤,請參閱特定資料庫文件中的解決方法。使用您在 AWS DMS 主控台中收到的錯誤代碼和錯誤訊息。
當您手動輸入端點組態的憑證時,請確定密碼周圍不包含大括號。如果包含大括號,則會收到類似以下內容的錯誤訊息:
Amazon Redshift 作為目標端點時的錯誤範例
"[SERVER ]E: RetCode: SQL_ERROR SqlState: 28000 NativeError: 10 Message: [Amazon][Amazon Redshift] (10) Error occurred while trying to connect: [SQLState 28000] connection to server at Your workgroup endpoint (IP), port 5439 failed: FATAL: password authentication failed for user Your Username [1022502] (ar_odbc_conn.c:614)"
MySQL 作為目標端點時的錯誤範例
"00012920: 2025-05-08T20:27:50:341649 [SERVER ]D: RetCode: SQL_ERROR SqlState: HY000 NativeError: 1045 Message: [MySQL][ODBC 8.0(w) Driver]Access denied for user UserName@IP (using password: YES) [1022502] (ar_odbc_conn.c:614)"
SQL Server 作為目標端點時的錯誤範例
"00012920: 2025-05-08T21:15:20:185761 [SERVER ]E: RetCode: SQL_ERROR SqlState: 28000 NativeError: 18456 Message: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user UserName. [1022502] (ar_odbc_conn.c:614)"
**注意:**如果您使用 PostgreSQL 作為目標端點,則可以使用大括號。
如需詳細資訊,請檢查來源資料庫或目標資料庫的錯誤、追蹤、警示或其他日誌。
若是資料庫存取錯誤,請確認 AWS DMS 對特定來源或目標所需的權限。
如需如何使用 SSL 加密來源端點和目標端點連線的詳細資訊,請參閱將 SSL 與 AWS DMS 搭配使用。
相關資訊
如何在使用 AWS DMS 時,對 Amazon S3 端點連線測試失敗進行疑難排解?
如何為使用 Amazon Redshift 做為目標端點的 AWS DMS 任務疑難排解連線失敗和錯誤?
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前
- 已提問 1 年前
