Aurora 与 Amazon Redshift 的零 ETL 集成问题排查
您可以通过在 Amazon Redshift 中查询 SVV_INTEGRATION 系统表来检查零 ETL 集成的状态。如果 state
列的值为 ErrorState
,则表示有问题。有关更多信息,请参阅 使用系统表监控集成。
使用以下信息来排查 Aurora 与 Amazon Redshift 的零 ETL 集成的常见问题。
我无法创建零 ETL 集成
如果您无法创建零 ETL 集成,请确保您的源数据库集群的以下内容正确无误:
-
您的源数据库集群正在运行 Aurora MySQL 版本 3.05(与 MySQL 8.0.32 兼容)或更高版本,或者 Aurora PostgreSQL(兼容 PostgreSQL 15.4 和零 ETL 支持)。要验证引擎版本,请选择数据库集群的配置选项卡,并检查引擎版本。
-
您已正确配置了数据库集群参数。如果所需参数设置不正确或与集群不关联,则创建将失败。请参阅 步骤 1:创建自定义数据库集群参数组。
此外,请确保您的数据仓库在以下方面正确无误:
-
已启用区分大小写。请参阅为您的数据仓库开启区分大小写。
-
您添加了正确的授权主体和集成源。请参阅为您的 Amazon Redshift 数据仓库配置授权。
-
数据仓库已加密(如果它是预调配集群)。请参阅 Amazon Redshift 数据库加密。
我的集成卡在 Syncing
状态
如果您更改其中一个必需的数据库集群参数的值,则集成状态可能会始终显示为 Syncing
。
要修复此问题,请检查与源数据库集群关联的参数组中的参数值,并确保它们与所需值相匹配。有关更多信息,请参阅 步骤 1:创建自定义数据库集群参数组。
如果您修改任何参数,请务必重启数据库集群来应用更改。
我的表未复制到 Amazon Redshift
您的数据可能未复制,因为一个或多个源表没有主键。Amazon Redshift 中的监控控制面板将这些表的状态显示为 Failed
,而总体零 ETL 集成的状态更改为 Needs attention
。
要解决此问题,您可以在表中确定一个可以成为主键的现有键,也可以添加合成主键。有关详细解决方案,请参阅 以下资源:
我的一个或多个 Amazon Redshift 表需要重新同步
在源数据库集群上运行某些命令可能需要重新同步您的表。在这些情况下,SVV_INTEGRATION_TABLE_STATE 系统视图显示 table_state
为 ResyncRequired
,这意味着集成必须将该特定表的数据从 MySQL 完全重新加载到 Amazon Redshift。
当表开始重新同步时,它进入 Syncing
状态。您无需执行任何手动操作即可重新同步表。在表数据重新同步时,您无法在 Amazon Redshift 中访问这些数据。
以下是一些可以使表进入 ResyncRequired
状态的示例操作,以及可供考虑的可能替代方案。
操作 | 示例 | 或者 |
---|---|---|
在特定位置添加一列 |
|
Amazon Redshift 不支持使用 first 或 after 关键字将列添加到特定位置。如果目标表中列的顺序不重要,请使用更简单的命令将该列添加到表的末尾:
|
使用默认 CURRENT_TIMESTAMP 添加时间戳列 |
|
现有表行的 CURRENT_TIMESTAMP 值由 Aurora MySQL 计算,如果不进行完整表数据重新同步,就无法在 Amazon Redshift 中进行模拟。如果可能,请将默认值切换为文本常量(例如 |
在单个命令中执行多个列操作 |
|
考虑将命令拆分为两个单独的操作(ADD 和 RENAME ),这不需要重新同步。 |