概要
ストリームでは、ランタイム中にエラーが発生することがあります。
- エラーには、ソース データベースの不正なパスワードなど、回復可能なものもあります。つまり、エラーを修正してストリームを自動的に再開できます。
- いくつかのエラーには、サポートされないデータ型を含むイベントなど、単一のオブジェクトに影響を与えるものがあります。それ以外のエラーは、Datastream がソース データベースに接続できない場合など、複数のオブジェクトやストリーム全体に影響する可能性があります。
- DataStream UI の [ストリーム] ページや [ストリームの詳細] ページには、エラーに応じて情報が表示されます。また、データストリームの API を使用してエラーに関する情報を取得することもできます。
エラーのトラブルシューティングを行うには、ストリームに移動してエラーを確認し、エラー メッセージに記載されている手順を行います。
このページでは、構成、接続、Oracle、MySQL のエラーに関する情報と、エラーのトラブルシューティング手順を説明します。
構成エラーと接続エラー
エラー | トラブルシューティングの手順 |
---|---|
ソース データベースへの接続エラー(全般)。 | これには、いくつかの要因が考えられます。このエラーのトラブルシューティングを実施するには、次の操作を行います。
ストリームは自動的に再開されます。 |
ソース データベースへの接続エラー(IP 許可リスト)。 | これは、接続方法として IP 許可リストが選択されていても、ソース データベースで Datastream の送信 IP アドレスの 1 つ以上が正しく追加されていないため発生することがあります。Datastream の接続プロファイルに表示される送信 IP アドレスが、ソース データベース サーバーがこれらの IP アドレスからの接続を受け入れるようにネットワーク ファイアウォールで構成されていることを確認します。解決すると、ストリームは自動的に再開されます。 |
ソース データベースへの接続に失敗しました(フォワード SSH トンネル)。 | これは、フォワード SSH トンネルに問題がある場合に発生することがあります。トンネルのステータスを確認してください。トンネルが停止している場合は、開始する必要があります。解決すると、ストリームは自動的に再開されます。 |
Datastream で、フォワード SSH トンネルを使用して踏み台インスタンスに接続できません。 | ソースの接続プロファイルではフォワード SSH トンネル構成が正しく構成され、SSH トンネル サーバーではポートが開かれていることを確認してください。 |
証明書の問題によるソース データベースへの接続エラー。 | これは、ソースの接続プロファイルを定義するときに指定された証明書に問題がある場合に発生することがあります。[接続プロファイル] ページに移動し、目的の接続プロファイルを選択します。証明書が正しく設定されていることを確認します。変更後、接続プロファイルを保存すると、ストリームが自動的に再開します。 |
プライベート接続を使用したソース データベースへの接続エラー。 |
|
組織ポリシーの constraints/datastream.disablePublicConnectivity が有効になっていると、接続タイプ STATIC_SERVICE_IP_CONNECTIVITY は使用できません。 | 作成する接続プロファイルで、パブリック IP 許可リストまたはフォワード SSH トンネル ネットワーク接続方法を選択しましたが、Datastream に対して「パブリック接続方法をブロックする」組織ポリシーが有効になっています。したがって、接続プロファイルにパブリック接続方法は選択できません。 この問題を解決するには、プライベート VPC ピアリング ネットワーク接続方法を選択するか、組織のポリシーを無効にします。 組織のポリシーを無効にするには、次のように操作します。
|
ストリームのソース データベースを設定したときに、転送するテーブルとスキーマが、含めるオブジェクトのリストにありません。 | これは、データベースに何千ものテーブルとスキーマがある場合に発生することがあります。Google Cloud コンソールでストリームのソースを構成するときに、pull するオブジェクトのリストに含まれていないものもあります。[含めるオブジェクトを選択] セクションで、[特定のスキーマとテーブル] ではなく、[カスタム] を選択します。[条件に一致するオブジェクト] フィールドに、Datastream に pull するスキーマとテーブルを入力します。 |
[含めるオブジェクト] メニューを使用して、複数のテーブルをストリームに追加しました。しかし、[ストリームの詳細] の [オブジェクト] タブを見ると、一部のテーブルが欠落していることがわかります。 | Datastream が変更を認識し、ストリームにテーブルが自動的に追加されるように、各テーブルに CDC の更新が 1 つ以上あることを確認してください。 |
Google Cloud コンソールで [含めるオブジェクト] メニューを使用するときにオブジェクトのリストを読み込めませんでした。 | これは、データベースに 5,000 を超えるスキーマとテーブルがある場合に発生することがあります。別の方法を使用して含めるオブジェクトを指定するか、Datastream API を使用してください。詳細については、移行元データベースを構成するをご覧ください。 |
ストリーミング中にドロップされ、宛先で複製されないイベント。 | Datastream では、サポートされていないイベントがストリーミング中にドロップされることがあります。問題を解決するには、次の操作を実行します。
|
Oracle エラー
エラー | トラブルシューティングの手順 |
---|---|
ソース データベースで、サプリメンタル ロギングが正しく構成されていません。 | ソース データベースで補足ロギング構成が正しくない場合、進行中の変更データ キャプチャ(CDC)データの取得でエラーが発生することがあります。補助ロギングが正しく構成されていることを確認します。特に、送信元から送信先にストリーミングされるデータベース テーブルに対して補助ロギングが有効になっていることを確認します。ストリームは自動的に再開されます。 |
ログの位置が失われているため、レプリケーションを再開できません。 | このエラーは、レプリケーション プロセスが長時間一時停止されたときに、ログの位置が失われることによって発生します。ログの保持期間に近づく期間については、ストリームを一時停止しないでください。 ストリームを再作成します。 |
ログファイルが部分的または完全に欠落しています。 | ログファイルが削除された可能性があります。最小ローテーション期間を指定しない限り、Oracle はログファイルを可能な限り早くパージします。
Oracle サーバーで、ログファイルを保持する期間を設定します。たとえば、ログファイルを少なくとも 4 日間保持するには RDS デプロイの場合は、 |
除外リストは追加リストを含みます。 | 追加リストは除外リストに完全に含まれているため、Datastream がソースから取得するオブジェクトのリストは空になります。オブジェクトの選択を変更し、もう一度お試しください。 |
Oracle データベースのロギングモードが ARCHIVELOG に設定されていません。 | ロギングモードを変更してから、再度お試しください。 |
Datastream から ORA-00942: table or view does not exist エラー メッセージが返されますが、すべてが正しく構成されています。 |
これは、Oracle サーバー上のキャッシュが原因である可能性があります。データベース ユーザーを再作成すると、キャッシングの問題が解決します。 |
ストリームがすでに実行中の場合は、Oracle ソースを変更しても宛先に反映されません。 | Datastream はアーカイブされた Redo ログファイルから読み取るため、ログがアーカイブされるまで、ソースに加えた変更は宛先に反映されません。宛先の変更を確認するには、ログ アーカイブ ポリシーを変更するか、手動でログスイッチを強制します。詳細については、Oracle データベースの REDO ログファイルを操作するをご覧ください。 |
予期しない内部エラーがあります。 | 詳細については、Google サポートまでお問い合わせください。 |
MySQL エラー
エラー | トラブルシューティングの手順 |
---|---|
ソース データベースで、バイナリログが正しく構成されていません。 | これは、ソース データベースでバイナリログ構成が正しくない場合に、連続する MySQL ストリームで発生する可能性があります。このエラーのトラブルシューティングを実施するには、次の操作を行います。
|
バイナリログの位置が失われているため、レプリケーションを再開できません。 | このエラーは、レプリケーション プロセスが長時間一時停止されたときに、バイナリログの位置が失われることによって発生します。バイナリログの保持期間に近づく期間は、ストリームを一時停止しないでください。 ストリームを再作成します。 |
ソース データベースと宛先データベースのバージョンに互換性がないため、ストリームを実行できません。 | この問題は、ソース データベースがバージョン サポート マトリックスに準拠していない場合に発生します。このエラーのトラブルシューティングを実施するには、次の操作を行います。
|
AWS RDS MySQL ソース バイナリログが、部分的または完全に失われています。 | バイナリログが削除された可能性があります。最小ローテーション期間を指定しない限り、AWS RDS はバイナリログを可能な限り早くパージします。
ソースの AWS RDS MySQL インスタンスで、バイナリログを保持する時間を時間単位で設定します。たとえば、バイナリログを少なくとも 7 日間保持するには mysql.rds_set_configuration('binlog retention hours', 168); を使用します。 |
除外リストは追加リストを含みます。 | 追加リストは除外リストに完全に含まれているため、Datastream がソースから取得するオブジェクトのリストは空になります。オブジェクトの選択を変更し、もう一度お試しください。 |
Datastream が MySQL データベースを複製できません。 | データベースを複製する権限が Datastream に付与されていることを確認します。 |
MySQL ソースの接続プロファイルを作成する際、[暗号化タイプ] メニューで複数の PEM エンコード SSL 証明書が受け入れられません。 | Datastream は、MySQL 接続プロファイルでの SSL 証明書チェーンをサポートしていません。x509 PEM でエンコードされた単一の証明書のみがサポートされています。 |
MySQL ソースからのストリーミング時に高レイテンシになります。 | Datastream の機能を強化してソース データベースからの読み取りを可能にします。
|
予期しない内部エラーがあります。 | 詳細については、Google サポートまでお問い合わせください。 |
PostgreSQL エラー
エラー | トラブルシューティングの手順 |
---|---|
ソース データベースで論理デコードが正しく構成されていません。 | 論理デコーディングが正しく構成されていることを確認します。ソース PostgreSQL データベースの構成をご覧ください。 |
レプリケーション スロットが存在しません。 | データベースにレプリケーション スロットが存在しない場合、進行中の変更データ キャプチャ(CDC)データの取得中にエラーが発生することがあります。レプリケーション スロットが正しく構成されていることを確認します。ソース PostgreSQL データベースの構成をご覧ください。 |
レプリケーション スロットが間違ったプラグインで構成されている。 | このエラーは、レプリケーション スロットが pgoutput 以外のプラグインで構成されている場合に発生することがあります。レプリケーション スロットが正しく構成されていることを確認します。詳細については、ソース PostgreSQL データベースをご覧ください。 |
レプリケーション スロットが別のプロセスでアクティブになっている。 | このエラーは、レプリケーション スロットが別のプロセスで使用されている場合に発生することがあります。レプリケーション スロットは、一度に 1 つのプロセスでのみ使用できます。Datastream を除く他のプロセスで同じレプリケーション スロットを使用しないようにしてください。 |
パブリケーションが正しく設定されていません。 | このエラーは、ストリーム構成に含まれるテーブルを公開するようにパブリケーションが構成されていない場合に発生することがあります。パブリケーションが正しく設定されていることを確認します。ストリームのソース データベースに関する情報の構成をご覧ください。 |
パブリケーションが存在しません。 | このエラーは、データベースにパブリケーションが存在しない場合などに発生することがあります。パブリケーションが正しく設定されていることを確認します。ソース PostgreSQL データベースの構成をご覧ください。 |
WAL ファイルが失われているため、レプリケーションを再開できません。 | このエラーは、レプリケーション プロセスが長時間一時停止されたときに、WAL ファイルが失われることによって発生します。WAL ファイルの保持期間が近づく期間は、ストリームを一時停止しないでください。ストリームを再作成します。 |
除外リストは追加リストを含みます。 | 追加リストは除外リストに完全に含まれているため、Datastream がソースから取得するオブジェクトのリストは空になります。オブジェクトの選択を変更し、もう一度お試しください。 |
Datastream は PostgreSQL スキーマを複製できません。 | データベースを複製する権限が Datastream に付与されていることを確認します。 |
ソース データベースで大規模なトランザクションが発生すると、データ レプリケーションと同期の問題が発生します。 | ソース データベースで大量のレコードを挿入、更新、削除すると、対応するイベントでレプリケーション スロットが過負荷状態になる可能性があります。Datastream には、これらのイベントの読み取りと処理を行う時間が必要になります。PostgreSQL レプリケーション スロットはシングル スレッドであるため、他のテーブルのデータの変更など、レプリケーション スロットの他の変更を処理する場合は、Datastream がレプリケーション スロットのすべての変更に対応できるようになるまで遅延します。 |
ソース データベースで大規模なトランザクションが発生すると、CDC スループットが低下します。 | Datastream は、PostgreSQL のマルチスレッド CDC をサポートしていません。この制限を解決し、CDC のスループットを向上させるには、ソースを複数のストリームに分割し、それぞれが独自のパブリケーションとレプリケーション スロットを持つようにします。たとえば、データベース内の最大のテーブル用に 1 つのストリームを作成し、その他すべてのテーブル用にもう 1 つのストリームを作成する、あるいは、優先度が最も高いテーブル用に 1 つのストリームを作成し、残りのテーブル用にもう 1 つのストリームを作成するといった場合が考えられます。ユースケースはさまざまであるため、特定の CDC シナリオで最も理にかなったものを検討する必要があります。パブリケーションの作成の詳細については、ソース PostgreSQL データベースの構成をご覧ください。 |
サポートされていないイベントがドロップされました(理由コード: BIGQUERY_TOO_MANY_PRIMARY_KEYS )。 |
テーブルの PostgreSQL レプリカ ID が FULL に設定されている場合、Datastream は、このテーブル内のすべての列を主キーとして扱います。テーブル内の列数が 16 を超えると、BigQuery CDC の制限に違反し、エラーが発生します。この問題を解決するには、次の手順を完了します。
|
予期しない内部エラーがあります。 | 詳細については、Google サポートまでお問い合わせください。 |
SQL Server のエラー
エラー | トラブルシューティングの手順 |
---|---|
データベース DATABASE_NAME の CDC が無効になっています。 | データベースに対して変更データ キャプチャ(CDC)を有効にする必要があります。Datastream は、ソース データベースに対する変更をリアルタイムで複製し、完全なログ情報を取得するために、トランザクション ログへの直接読み取りアクセス権を必要とします。データベースの CDC を有効にしてから、もう一度お試しください。 データベースの CDC を有効にする方法については、ソース SQL Server データベースを構成するをご覧ください。 |
CDC が無効になっているテーブル。 | ストリームに含まれるすべてのテーブルに対して、変更データ キャプチャ(CDC)を有効にする必要があります。Datastream は、ソーステーブルに対する変更をリアルタイムで複製し、完全なログ情報を取得するために、トランザクション ログへの直接読み取りアクセス権を必要とします。ストリームに含まれるテーブルの CDC を有効にしてから、もう一度お試しください。 ソーステーブルで CDC を有効にする方法については、ソース SQL Server データベースを構成するをご覧ください。 |
権限がありません。 | ソースからの読み取りに必要な権限が Datastream に付与されていません。データベースへの接続に使用されるユーザー アカウントに適切な権限を付与してから、もう一度お試しください。 |
SQL Server EDITION_NAME エディションはサポートされていません。 | Datastream は、この SQL Server エディションをサポートしていません。SQL Server のサポートされているエディションの詳細については、移行元としての SQL Server の概要をご覧ください。 |
Standard エディションの SQL Server バージョン VERSION_NAME はサポートされていません。 | Datastream は、このバージョンの SQL Server Standard エディションをサポートしていません。サポートされている SQL Server のバージョンの詳細については、ソースとしての SQL Server の概要をご覧ください。 |
SQL Server CDC の構成: 失敗しました。 | 選択した CDC メソッドは、データベース構成に準拠していません。CDC メソッドを変更して、もう一度お試しください。 |
BigQuery エラー
エラー | トラブルシューティングの手順 |
---|---|
BIGQUERY_UNSUPPORTED_PRIMARY_KEY_CHANGE, details: Failed to write to BigQuery due to an unsupported primary key change: adding primary keys to existing tables is not supported. |
ソースで主キーが変更された場合は、BigQuery でテーブルを削除し、バックフィルを再度開始する必要があります。これは BigQuery の制限です。主キーが異なる場合、新しいイベントと既存の行を正しく統合する方法はありません。詳細については、BigQuery の宛先を構成するをご覧ください。 |
宛先 BigQuery テーブルには、ソーステーブルよりもはるかに多くのレコードがあります。 | これは、ソーステーブルに主キーがない場合に発生することがあります。この場合、Datastream は追記専用書き込みモードでテーブルを処理し、特定の行の各イベントが BigQuery の個別の行として表示されます。 |
追加専用書き込みモードでバックフィルを実行すると、データが複製されます。 | ストリームに [追加専用] 書き込みモードを選択すると、データは、 SELECT * FROM (SELECT *, row_number() OVER (PARTITION BY datastream_metadata.uuid) AS num FROM TABLE_NAME) WHERE num=1
|
Datastream がマージ書き込みモードに構成されているが、BigQuery で変更がマージされない。 | ソーステーブルに主キーがあることを確認します。BigQuery は、変更を宛先テーブルに統合するためにこのテーブルを必要とします。 主キーがない場合は、ソーステーブルまたは宛先テーブルに主キーを追加することを検討してください。宛先の BigQuery テーブルに主キーを追加する手順は次のとおりです。
|
BigQuery にすでに複製されているテーブルの主キーを追加、削除、変更することはできません。 | デフォルトでは、Datastream は、主キーなしで BigQuery にすでに複製されているテーブルに主キーを追加したり、主キーを使用して BigQuery に複製されているテーブルから主キーを削除したりすることはできません。ただし、BigQuery に複製され、すでに主キーがあるソーステーブルの主キー定義は変更できます。
|
次のステップ
- ライブ配信に関する潜在的な問題を探す方法については、ライブ配信のトラブルシューティングをご覧ください。
- 移行元データベースの構成方法については、ソースをご覧ください。
- BigQuery または Cloud Storage の宛先を構成する方法については、リンク先をご覧ください。