我有 2 个 Aws RDS 实例(在 Postgresql 上运行)。两者都在不同的帐户和不同的地区。我想使用 AWS DMS 在它们之间设置数据复制。 我尝试过进行 VPC 对等互连。 我看到了以下视频来启用 VPC 对等互连:-
https://www.youtube.com/watch?v=KmCEFGDTb8U
问题:- 当我尝试创建 AWS DMS 服务时,我为源添加主机名、用户名和密码等(存在于其他账户上),当我点击
Test Connection
时,出现以下错误。
Test Endpoint failed: Application-Status: 1020912, Application-Message: Failed to connect Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]timeout expired ODBC general error.
令我惊讶的是,当我点击同一帐户中的目标 RDS 实例的
Test Connection
时,我收到了类似的错误。即:-
Test Endpoint failed: 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.
Google 建议我们使用某种防火墙,但查看 NACL,我可以看到我们允许两个 VPC 都使用 0.0.0.0/0。
以下解决方案对我有用。
由于我的两者都在同一个 VPC 中运行,因此将私有 IP 添加到入站规则工作正常,并且连接成功。
如果您尝试从一个 IP 中的私有 IP 范围访问另一 IP,除了创建 VPC 对等连接之外,您还必须:
由于您看到超时,我怀疑安全组规则。 但是,这也可能是一条糟糕的路线。
按照此处的建议https://aws.amazon.com/premiumsupport/knowledge-center/dms-endpoint-connectivity-failures/
修改用于测试与 Endpoint 连接的 Replication Instance 时,请注意:
将安全组更改为合适的安全组,或编辑正在使用的安全组,添加入站规则以允许来自复制实例的私有 IP 地址的 PostgreSQL 流量类型。
我也遇到了同样的错误,我正在尝试将 DMS 从 EC2 PG 14 迁移到 RDS PG 16。这是一个误导性错误,我通过将目标 RDS PG 版本设置为 14 来修复它。似乎 DMS 可能不支持比 PG14 更新的版本,因为现在。