Aurora ゼロ ETL 統合のトラブルシューティング
Amazon Redshift の SVV_INTEGRATION システムテーブルにクエリを実行することで、ゼロ ETL 統合の状態を確認できます。state
列の値が ErrorState
の場合、何か問題があることを意味します。詳細については、「システムテーブルを使用して統合をモニタリングします。」を参照してください。
以下の情報を使用して、Aurora ゼロ ETL 統合に関する一般的な問題をトラブルシューティングしてください。
トピック
ゼロ ETL 統合を作成できない
ゼロ ETL 統合を作成できない場合は、ソースデータベースについて以下が正しいことを確認してください。
-
ソースデータベースは、サポートされている DB エンジンバージョンを実行している必要があります。サポートされているバージョンのリストについては、「Amazon Redshift とのゼロ ETL 統合でサポートされているリージョンと Aurora DB エンジン」を参照してください。
-
DB パラメータを正しく設定しました。必須パラメータが正しく設定されていないか、データベースに関連付けられていない場合、作成は失敗します。「ステップ 1: カスタム DB クラスターのパラメータグループを作成する」を参照してください。
さらに、ターゲットデータウェアハウスについて、以下が正しいことを確認してください。
-
大文字と小文字の区別が有効になっている。「データウェアハウスの大文字と小文字の区別を有効にする」を参照してください。
-
正しい承認済みプリンシパルと統合ソースを追加した。「Amazon Redshift データウェアハウスの認証を設定する」を参照してください。
-
データウェアハウスは暗号化されている (プロビジョニングされたクラスターの場合)。「Amazon Redshift データベース暗号化」を参照してください。
統合が Syncing
の状態でスタックしている
必須 DB パラメータのいずれかの値を変更すると、統合のステータスが常に Syncing
と表示されることがあります。
この問題を解決するには、ソース DB クラスターに関連付けられているパラメータグループのパラメータの値をチェックして、必要な値と一致していることを確認します。詳細については、「ステップ 1: カスタム DB クラスターのパラメータグループを作成する」を参照してください。
パラメータを変更した場合は、必ず DB クラスターを再起動して変更を適用してください。
テーブルが Amazon Redshift にレプリケートされない
Amazon Redshift に 1 つ以上のテーブルが反映されていない場合は、次のコマンドを実行してテーブルを再同期できます。
ALTER DATABASE
dbname
INTEGRATION REFRESH TABLEStable1
,table2
;
詳細については、「Amazon Redshift SQL リファレンス」の「ALTER DATABASE」を参照してください。
1 つ以上のソーステーブルにプライマリキーがないため、データがレプリケートされていない可能性があります。Amazon Redshift のモニタリングダッシュボードには、これらのテーブルのステータスが Failed
と表示され、ゼロ ETL 統合全体のステータスが Needs attention
に変わります。この問題を解決するには、プライマリキーとなる既存のキーをテーブル内で特定するか、合成プライマリキーを追加することができます。詳細な解決策については、以下のリソースを参照してください。
1 つ以上の 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 でシミュレートすることはできません。可能であれば、テーブルが利用可能になるまでの待ち時間を避けるために、デフォルト値を |
1 つのコマンドで複数の列操作を実行する |
|
コマンドを ADD と RENAME の 2 つの操作に分割することを検討してください。この場合、再同期は不要です。 |