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