我的 AWS Database Migration Service (AWS DMS) 任务在完全加载和更改数据捕获 (CDC) 阶段失败,而且遇到了端点问题和数据库特定错误。
解决方法
查看您的端点连接配置
要查看任务源端点或目标端点的连接情况,请完成以下步骤:
- 打开 AWS DMS 控制台。
- 在导航窗格中,选择 Migrate or replicate(迁移或复制)。
- 选择 Tasks(任务),然后选择您的任务。
- 在 Details(详细信息)选项卡中,检查 Connectivity and security(连接和安全)部分中的复制实例名称,确保您使用的是正确的复制实例。
- 在 Summary(摘要)部分中,选择源端点或目标端点以查看其端点接口。
- 选择 Connections(连接)选项卡,然后选择 Test Connections(测试连接)。
- 选择 Replication(复制)实例,然后选择 Run Test(运行测试)。
如果由于网络配置导致连接测试结果为 Failed(失败)状态,则会收到以下超时错误消息:
对于 Oracle:
'Test Endpoint failed: Application-Status: 1020912, Application-Message: ORA-12170: TNS:Connect timeout occurred OCI connection failure.'
对于 PostgreSQL:
'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: '
对于 Amazon DocumentDB(兼容 MongoDB):
'Test Endpoint failed: Application-Status: 1020912, Application-Message: Failed to create new client connection Failed to connect to database., Application-Detailed-Message: Error verifying connection'
要解决此问题,请参阅如何排查 AWS DMS 端点连接故障?然后,再次测试连接。
查看端点身份验证配置
AWS DMS 端点的连接测试可能会显示身份验证错误消息。要排查身份验证错误消息,请检查您是否正确配置了对 AWS DMS 端点的访问权限。
完成以下步骤:
- 打开 AWS DMS 控制台。
- 在导航窗格中,选择 Migrate or replicate(迁移或复制)。
- 选择 Endpoints(端点),然后选择您的端点。
- 选择 Actions(操作),然后选择 Modify(修改)。
- 在 Endpoint Configuration(端点配置)部分中,查看端点数据库的访问权限的以下内容:
如果您选择了手动提供访问信息,请检查您在服务器名称字段中定义的主机是否不包含端口 (3306) 或协议 (HTTP)。确保您在数据库中指定了相同的用户名、密码和 SSL 值。
如果您选择了 AWS Secrets Manager 并选择了正确的密钥管理器和 SSL 模式,请参阅常见 AWS DMS 先决条件以及使用 AWS Secrets Manager 设置 Amazon VPC 端点。
如果您选择了 Kerberos 身份验证并使用了正确的服务器名称、端口和用户名,请参阅先决条件以及在 AWS DMS 中使用 Kerberos 身份验证的限制。
如果您选择了 IAM 身份验证并使用了正确的服务器名称、端口、用户名和 AWS Identity and Access Management (IAM) 角色,请检查您是否将正确的策略附加到该 IAM 角色。有关更多信息,请选择 在 AWS DMS 中为 Amazon RDS 端点配置 IAM 身份验证中的 DMS 控制台选项卡以及 IAM 数据库身份验证的限制。
查看端点设置和 ECA
如果您在运行任务时使用 Oracle 可插拔数据库 (PDB) 作为源,则可能会收到以下错误消息:
"Test Endpoint failed: Application-Status: 1020912, Application-Message: Log Miner is not supported in Oracle PDB environment Endpoint initialization failed."
出现此错误是因为您将复制方法配置为 Log Miner 而非 Binary Reader。
要更改 AWS DMS 任务使用的复制方法,请完成以下步骤:
- 打开 AWS DMS 控制台。
- 在导航窗格中,选择 Migrate or replicate(迁移或复制)。
- 选择 Tasks(任务),然后选择您的任务。
- 在 Summary(摘要)部分中,选择语句源链接。
- 选择 Actions(操作),然后选择 Modify(修改)。
- 在 Endpoint Settings(端点设置)中,选择 Use endpoint connection attributes(使用端点连接属性)。
- 要将复制方法配置为 Binary Reader,请在 Extra connection attributes (ECAs)(额外连接属性 (ECA))字段中输入 useLogMinerReader=N;useBfile=Y; 属性。
- 选择 Save(保存)。
查看查询超时错误
当您启动 AWS DMS 任务时,您可能会收到以下 PostgreSQL 查询超时错误消息:
"]E: RetCode: SQL_ERROR SqlState: 57014 NativeError: 1 Message: ERROR: canceling statement due to statement timeout; Error while executing the query [1022502] (ar_odbc_stmt.c:2738)"
要为 AWS DMS 任务请求调整源数据库上的 executeTimeout 参数,请完成以下步骤:
- 打开 AWS DMS 控制台。
- 在导航窗格中,选择 Endpoints(端点),然后选择您的端点。
- 选择 Action(操作),然后选择 Modify(修改)。
- 在 Endpoint Settings(端点设置)部分中,选择 Use endpoint connection attributes(使用端点连接属性)。
- 要配置自定义 executeTimeout,请在 Extra connection attributes (ECAs)(额外连接属性 (ECA))字段中输入 executeTimeout=3600;。
- 选择 Save(保存)。
如果您仍然遇到超时问题,请参阅如何对失败并显示错误消息 "ERROR: canceling statement due to statement timeout" 的 AWS DMS 任务进行故障排除?
相关信息
使用 AWS DMS 端点
创建源端点和目标端点
高级端点配置