Aurora 与 Amazon Redshift 的零 ETL 集成问题排查 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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:创建自定义数据库集群参数组

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

我的集成处于永久 Syncing 状态

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

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

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

我的一个或多个 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 值由 Aurora 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),这不需要重新同步。