Amazon RDS 与 Amazon Redshift 的零 ETL 集成问题排查 - Amazon Relational Database Service

Amazon RDS 与 Amazon Redshift 的零 ETL 集成问题排查

您可以通过在 Amazon Redshift 中查询 SVV_INTEGRATION 系统表来检查零 ETL 集成的状态。如果 state 列的值为 ErrorState,则表示有问题。有关更多信息,请参阅 使用系统表监控集成

使用以下信息来排查 Amazon RDS 与 Amazon Redshift 的零 ETL 集成的常见问题。

我无法创建零 ETL 集成

如果您无法创建零 ETL 集成,请确保源数据库的以下内容正确无误:

此外,请确保您的数据仓库在以下方面正确无误:

我的集成卡在 Syncing 状态

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

要修复此问题,请检查与源数据库关联的参数组中的参数值,并确保它们与所需值相匹配。有关更多信息,请参阅 步骤 1:创建自定义数据库参数组

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

我的表未复制到 Amazon Redshift

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

ALTER DATABASE dbname INTEGRATION REFRESH TABLES table1, 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_stateResyncRequired,这意味着集成必须将该特定表的数据从 MySQL 完全重新加载到 Amazon Redshift。

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

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

操作 示例 或者
在特定位置添加一列
ALTER TABLE table_name ADD COLUMN column_name INTEGER NOT NULL first;
Amazon Redshift 不支持使用 firstafter 关键字将列添加到特定位置。如果目标表中列的顺序不重要,请使用更简单的命令将该列添加到表的末尾:
ALTER TABLE table_name ADD COLUMN column_name column_type;
使用默认 CURRENT_TIMESTAMP 添加时间戳列
ALTER TABLE table_name ADD COLUMN column_name TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
现有表行的 CURRENT_TIMESTAMP 值由 RDS for MySQL 计算,如果不进行完整表数据重新同步,就无法在 Amazon Redshift 中进行模拟。

如果可能,请将默认值切换为文本常量(例如 2023-01-01 00:00:15),以避免表可用性出现延迟。

在单个命令中执行多个列操作
ALTER TABLE table_name ADD COLUMN column_1, RENAME COLUMN column_2 TO column_3;
考虑将命令拆分为两个单独的操作(ADDRENAME),这不需要重新同步。