Aurora ゼロ ETL 統合のトラブルシューティング - Amazon Aurora

Aurora ゼロ ETL 統合のトラブルシューティング

Amazon Redshift の SVV_INTEGRATION システムテーブルにクエリを実行することで、ゼロ ETL 統合の状態を確認できます。state 列の値が ErrorState の場合、何か問題があることを意味します。詳細については、「システムテーブルを使用して統合をモニタリングします。」を参照してください。

以下の情報を使用して、Aurora ゼロ ETL 統合に関する一般的な問題をトラブルシューティングしてください。

ゼロ ETL 統合を作成できない

ゼロ ETL 統合を作成できない場合は、ソース DB クラスターについて以下が正しいことを確認してください。

  • ソースクラスターは、Aurora MySQL バージョン 3.05 (MySQL 8.0.32 互換) 以降または Aurora PostgreSQL (PostgreSQL 15.4 およびゼロ ETL サポートと互換) を実行しています。エンジンバージョンを確認するには、DB クラスター[設定] タブを選択して、[エンジンバージョン] を確認します。

  • DB クラスターのパラメータを正しく設定しました。必須パラメータが正しく設定されていないか、クラスターに関連付けられていない場合、作成は失敗します。「ステップ 1: カスタム DB クラスターのパラメータグループを作成する」を参照してください。

さらに、ターゲットデータウェアハウスについて、以下が正しいことを確認してください。

統合が Syncing の状態でスタックしている

必須 DB パラメータのいずれかの値を変更すると、統合のステータスが常に Syncing と表示されることがあります。

この問題を解決するには、ソース DB クラスターに関連付けられているパラメータグループのパラメータの値をチェックして、必要な値と一致していることを確認します。詳細については、「ステップ 1: カスタム DB クラスターのパラメータグループを作成する」を参照してください。

パラメータを変更した場合は、必ず DB クラスターを再起動して変更を適用してください。

テーブルが Amazon Redshift にレプリケートされない

Amazon Redshift に 1 つ以上のテーブルが反映されていない場合は、次のコマンドを実行してテーブルを再同期できます。

ALTER DATABASE dbname INTEGRATION REFRESH TABLES table1, table2;

詳細については、「Amazon Redshift SQL リファレンス」の「ALTER DATABASE」を参照してください。

1 つ以上のソーステーブルにプライマリキーがないため、データがレプリケートされていない可能性があります。Amazon Redshift のモニタリングダッシュボードには、これらのテーブルのステータスが Failed と表示され、ゼロ ETL 統合全体のステータスが Needs attention に変わります。この問題を解決するには、プライマリキーとなる既存のキーをテーブル内で特定するか、合成プライマリキーを追加することができます。詳細な解決策については、以下のリソースを参照してください。

1 つ以上の Amazon Redshift テーブルを再同期する必要がある

ソース DB クラスターに対して特定のコマンドを実行するには、テーブルの再同期が必要になる場合があります。このような場合、SVV_INTEGRATION_TABLE_STATE システムビューには table_state が ResyncRequired と表示されます。つまり、統合は MySQL から Amazon Redshift に特定のテーブルを完全にリロードする必要があります。

テーブルが再同期を開始すると、Syncing の状態はになります。テーブルを再同期するために手動で操作を行う必要はありません。テーブルデータの再同期中は、Amazon Redshift からデータにアクセスすることはできません。

以下に、テーブルを ResyncRequired 状態にする操作の例と、検討すべき代替案をいくつか示します。

操作 代替
特定の位置への列の追加
ALTER TABLE table_name ADD COLUMN column_name INTEGER NOT NULL first;
Amazon Redshift は、first または after キーワードを使用して特定の位置に列を追加することをサポートしていません。ターゲットテーブルの列の順序が重要でない場合は、より簡単なコマンドを使用してテーブルの最後に列を追加します。
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 などのリテラル定数に切り替えてください。

1 つのコマンドで複数の列操作を実行する
ALTER TABLE table_name ADD COLUMN column_1, RENAME COLUMN column_2 TO column_3;
コマンドを ADD と RENAME の 2 つの操作に分割することを検討してください。この場合、再同期は不要です。