

# Aurora 零 ETL 集成故障排除
<a name="zero-etl.troubleshooting"></a>

您可以通过在分析目标中查询 [SVV\$1INTEGRATION](https://docs.aws.amazon.com/redshift/latest/dg/r_SVV_INTEGRATION.html) 系统表来检查零 ETL 集成的状态。如果 `state` 列的值为 `ErrorState`，则表示有问题。有关更多信息，请参阅 [对于 Amazon Redshift 使用系统表监控集成](zero-etl.describingmonitoring.md#zero-etl.monitoring)。

使用以下信息来排查 Aurora 零 ETL 集成的常见问题。

**重要**  
重新同步和刷新操作不适用于与 Amazon SageMaker AI 智能湖仓的零 ETL 集成。如果集成存在问题，则必须删除该集成并创建新的集成。您无法刷新或重新同步现有的集成。

**Topics**
+ [我无法创建零 ETL 集成](#zero-etl.troubleshooting.creation)
+ [我的集成卡在 `Syncing` 状态](#zero-etl.troubleshooting.syncing)
+ [我的表未复制到 Amazon Redshift](#zero-etl.troubleshooting.primarykey)
+ [我的一个或多个 Amazon Redshift 表需要重新同步](#zero-etl.troubleshooting.resync)
+ [Amazon SageMaker AI 智能湖仓零 ETL 集成的集成失败问题](#zero-etl.troubleshooting.integration-issues)
+ [在 Aurora PostgreSQL 的 DDL 事务完成之前，DDL 更改会出现在 Amazon Redshift 中](#zero-etl.troubleshooting.ddl)

## 我无法创建零 ETL 集成
<a name="zero-etl.troubleshooting.creation"></a>

如果您无法创建零 ETL 集成，请确保源数据库的以下内容正确无误：
+ 源数据库必须运行受支持的数据库引擎版本。有关受支持的版本的列表，请参阅 [支持零 ETL 集成的区域和 Aurora 数据库引擎](Concepts.Aurora_Fea_Regions_DB-eng.Feature.Zero-ETL.md)。
+  您正确配置了数据库参数。如果所需参数设置得不正确或与数据库不关联，则创建将失败。请参阅[步骤 1：创建自定义数据库集群参数组](zero-etl.setting-up.md#zero-etl.parameters)。

此外，请确保您的数据仓库在以下方面正确无误：
+ 已启用区分大小写。请参阅[为您的数据仓库开启区分大小写](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.setting-up.html#zero-etl-setting-up.case-sensitivity)。
+ 您添加了正确的授权主体和集成源。请参阅[为您的 Amazon Redshift 数据仓库配置授权](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.setting-up.html#zero-etl-using.redshift-iam)。
+ 数据仓库已加密（如果它是预调配集群）。请参阅 [Amazon Redshift 数据库加密](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-db-encryption.html)。

## 我的集成卡在 `Syncing` 状态
<a name="zero-etl.troubleshooting.syncing"></a>

如果您更改其中一个必需的数据库集群参数的值，则集成状态可能会始终显示为 `Syncing`。

要修复此问题，请检查与源数据库集群关联的参数组中的参数值，并确保它们与所需值相匹配。有关更多信息，请参阅 [步骤 1：创建自定义数据库集群参数组](zero-etl.setting-up.md#zero-etl.parameters)。

如果您修改任何参数，请务必重启数据库集群来应用更改。

## 我的表未复制到 Amazon Redshift
<a name="zero-etl.troubleshooting.primarykey"></a>

如果您没有看到一个或多个表反映在 Amazon Redshift 中，可以运行以下命令来重新同步表：

```
ALTER DATABASE dbname INTEGRATION REFRESH TABLES table1, table2;
```

有关更多信息，请参阅《Amazon Redshift SQL 参考》中的 [ALTER DATABASE](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_DATABASE.html)。

您的数据可能未复制，因为一个或多个源表没有主键。Amazon Redshift 中的监控控制面板将这些表的状态显示为 `Failed`，而总体零 ETL 集成的状态更改为 `Needs attention`。要解决此问题，您可以在表中确定一个可以成为主键的现有键，也可以添加合成主键。有关详细解决方案，请参阅 以下资源：
+ [Handle tables without primary keys while creating Amazon Aurora MySQL or Amazon RDS for MySQL zero-ETL integrations with Amazon Redshift](https://aws.amazon.com/blogs/database/handle-tables-without-primary-keys-while-creating-amazon-aurora-mysql-or-amazon-rds-for-mysql-zero-etl-integrations-with-amazon-redshift/)
+ [Handle tables without primary keys while creating Amazon Aurora PostgreSQL zero-ETL integrations with Amazon Redshift](https://aws.amazon.com/blogs/database/handle-tables-without-primary-keys-while-creating-amazon-aurora-postgresql-zero-etl-integrations-with-amazon-redshift/)

## 我的一个或多个 Amazon Redshift 表需要重新同步
<a name="zero-etl.troubleshooting.resync"></a>

在源数据库上运行某些命令可能需要重新同步您的表。在这些情况下，[SVV\$1INTEGRATION\$1TABLE\$1STATE](https://docs.aws.amazon.com/redshift/latest/dg/r_SVV_INTEGRATION_TABLE_STATE.html) 系统视图显示 `table_state` 为 `ResyncRequired`，这意味着集成必须将该特定表的数据从 MySQL 完全重新加载到 Amazon Redshift。

当表开始重新同步时，它进入 `Syncing` 状态。您无需执行任何手动操作即可重新同步表。在表数据重新同步时，您无法在 Amazon Redshift 中访问这些数据。

以下是一些可以使表进入 `ResyncRequired` 状态的示例操作，以及可供考虑的可能替代方案。


| 操作 | 示例 | 或者 | 
| --- | --- | --- | 
| 在特定位置添加一列  |  <pre>ALTER TABLE table_name<br />  ADD COLUMN column_name INTEGER<br />  NOT NULL first;</pre>  | Amazon Redshift 不支持使用 first 或 after 关键字将列添加到特定位置。如果目标表中列的顺序不重要，请使用更简单的命令将该列添加到表的末尾：<pre>ALTER TABLE table_name<br />  ADD COLUMN column_name column_type;</pre> | 
| 使用默认 CURRENT\$1TIMESTAMP 添加时间戳列 |  <pre>ALTER TABLE table_name<br />  ADD COLUMN column_name TIMESTAMP<br />  NOT NULL DEFAULT CURRENT_TIMESTAMP;</pre>  | 现有表行的 CURRENT\$1TIMESTAMP 值由 Aurora MySQL 计算，如果不进行完整表数据重新同步，就无法在 Amazon Redshift 中进行模拟。如果可能，请将默认值切换为文本常量（例如 `2023-01-01 00:00:15`），以避免表可用性出现延迟。 | 
| 在单个命令中执行多个列操作 |  <pre>ALTER TABLE table_name<br />  ADD COLUMN column_1,<br />  RENAME COLUMN column_2 TO column_3;</pre>  | 考虑将命令拆分为两个单独的操作（ADD 和 RENAME），这不需要重新同步。 | 

## Amazon SageMaker AI 智能湖仓零 ETL 集成的集成失败问题
<a name="zero-etl.troubleshooting.integration-issues"></a>

如果您在现有的与 Amazon SageMaker AI 智能湖仓的零 ETL 集成中遇到问题，唯一的解决方案是删除该集成并创建一个新的集成。与其它 AWS 服务不同，零 ETL 集成不支持刷新或重新同步操作。

解决集成问题：

1. 使用控制台、CLI 或 API 删除有问题的零 ETL 集成。

1. 验证源数据库和目标数据仓库的配置是否正确。

1. 使用相同或更新的配置创建新的零 ETL 集成。

此过程将导致完全重新初始化数据管道，这可能需要一些时间，具体取决于源数据库的大小。

## 在 Aurora PostgreSQL 的 DDL 事务完成之前，DDL 更改会出现在 Amazon Redshift 中
<a name="zero-etl.troubleshooting.ddl"></a>

在 Aurora PostgreSQL 零 ETL 集成中完成 DDL 操作之前，DDL 更改会出现在 Amazon Redshift 中。有关更多信息，请参阅 [适用于 Aurora PostgreSQL 的 DDL 操作](zero-etl.querying.md#zero-etl.ddl-postgres)。