複数リージョンkvstore設定のトラブルシューティング

  1. 複数リージョン設定のエージェント・ログの検索:

    XRegionエージェントのログは、JSON構成ファイルで指定されたパスにあります。エージェント・ログには、kvstoreログと同様に、サービス・エージェントからのすべての診断情報が含まれます。XRegionエージェントで使用されるJSON構成ファイルの詳細は、「XRegionサービスの構成」を参照してください

  2. XRegionエージェントの統計へのアクセス
    XRegionエージェントは、統計を定期的に収集し、ローカル・リージョンのシステム表にポストします。エージェント統計のJSON文字列を返す標準CLIコマンドSHOWを使用して、システム表にXRegionエージェント統計を問い合せることができます。
    show mrtable-agent-statistics
            [-agent <agentID>][-table <tableName>][-json]

    mrtable-agent-statisticsオプションを指定したshowコマンドは、XRegionエージェントの最後の1分間の最新統計を表示します。引数を指定しない場合、このコマンドは複数リージョン表に含まれるすべてのリージョンの総合統計を表示します。エージェントIDを指定して、統計を特定のエージェントに制限できます。コマンドで表名を指定すると、統計は特定の複数リージョン表に制限されます。showコマンドを使用して複数リージョン設定の統計情報を取得する方法の詳細は、show mrtable - agent - statisticsを参照してください

  3. リモート・リージョンと同期している複数リージョン表のステータスの表示

    show mrtable-agent-statisticsコマンドの統計lastModificationMsは、各リモート・リージョンで最後に実行された操作のタイムスタンプ(ミリ秒)です。ローカル・リージョンとリモート・リージョンのこの統計の値を比較することで、リモート・リージョンがローカル・リージョンに追い付いたか、それとも遅れているかを判断できます。

    たとえば、リモート・リージョンへの最後の書込み時刻がT1で、ローカル・リージョンの統計lastModificationMsがT2であるとします。T2 <T1,の場合、複数リージョン表はT2へのすべての書込みでそのリモート・リージョンに追い付いており、T2とT1の間で行われたすべての書込みで追い付くことを意味します。T2 = T1の場合、複数リージョン表がリモート・リージョンで行われたすべての書込みに追い付いたことを意味します。ただし、T2はT1より大きくできません。
    # MR table agent statistics for a specific agent
    kv-> show mrtable-agent-statistics -agent 0 -json
    {
       "operation": "show mrtable-agent-statistics",
       "returnCode": 5000,
       "description": "Operation ends successfully",
       "returnValue": {
          "XRegionService-1_0": {
          "timestamp": 1592901180001,
          "statistics": {
             "agentId": "XRegionService-1_0",
             "beginMs": 1592901120001,
             "dels": 1024,
             "endMs": 1592901180001,
             "incompatibleRows": 100,
             "intervalMs": 60000,
             "localRegion": "slc1",
             "persistStreamBytes": 524288,
             "puts": 2048,
             "regionStat": {
                "lnd": {
                   "completeWriteOps": 10,
                   "laggingMs": {
                      "avg": 512,
                      "max": 998,
                      "min": 31
                   },
                   "lastMessageMs": 1591594977587,
                   "lastModificationMs": 1591594941686,
                   "latencyMs": {
                      "avg": 20,
                      "max": 40,
                      "min": 10
                   }
                },
                "dub": {
                   "completeWriteOps": 20,
                   "laggingMs": {
                      "avg": 535,
                      "max": 1024,
                      "min": 45
                   },
                   "lastMessageMs": 1591594978254,
                   "lastModificationMs": 1591594956786,
                   "latencyMs": {
                      "avg": 30,
                      "max": 45,
                      "min": 15
                   }
                }
             },
             "requests": 12,
             "responses": 12,
             "streamBytes": 1048576,
             "winDels": 1024,
             "winPuts": 2048
              }
            }
          }
    }
  4. XRegionエージェントに関する問題のトラブルシューティング

    XRegionエージェントで問題が発生した場合(たとえば、ネットワーク接続が切断された場合)、接続失敗の原因を調査し、接続を修正するための解決策を提供する必要があります。一方、XRegionエージェントは、リモート・リージョンが再び稼働するまでリモート・リージョンへの再接続を試行します。リモート・リージョンに正常に再接続した後、XRegionエージェントは、接続が切断される前に、ストリーム位置または最後に作成されたチェックポイントから再開されます。再接続中に、エージェントは、リージョンまたはそのリージョン内のシャードへの接続が失われたことをユーザーに警告する警告メッセージをログにダンプする場合があります。

  5. ローカル・リージョンまたはリモート・リージョンが停止した場合のトラブルシューティング

    XRegionエージェントは、各リモート・リージョンから複数リージョン表に変更をストリームし、ローカル・リージョンに永続化します。したがって、ローカル・リージョンが停止している場合、エージェントは再試行を続けますが、変更を書き込むことはできません。一定期間後、XRegionエージェントのバッファがいっぱいになると、XRegionエージェントはリモート・リージョンからのデータのストリーミングを停止し、データ・フローは凍結されます。ローカル・リージョンが戻ると、XRegionエージェントはストリームとワークフローを再開します。ここでは、XRegionエージェントを手動で操作する必要はありません。ただし、ローカル・リージョンの問題を手動で修正することが必要になる場合があります。
    mr_table_local_region_down_troubleshoot.epsの説明が続きます図mr_table_local_region_down_troubleshoot.epsの説明

    特定のリモート・リージョンが停止している場合、XRegionエージェントは、そのリモート・リージョンが戻るまで再試行を続けます。この問題は、XRegionエージェントのネットワーク接続の問題に似ています。リモート・リージョンへの接続が再度確立されるまで、ローカル・リージョンの複数リージョン表ではそのリモート・リージョンの変更を確認できません。ただし、XRegionエージェントがこれらのリージョンへの接続を維持できるかぎり、他のリモート・リージョンでの変更は影響を受けません。
    mr_table_remote_down_troubleshoot.epsの説明が続きます図mr_table_remote_down_troubleshoot.epsの説明

  6. 複数リージョン設定でのスキーマ展開の処理

    いずれかのリモート・リージョンでスキーマが変更されると、スキーマが展開します。このため、ローカル・リージョンの複数リージョン表のスキーマは、リモート・リージョンのスキーマとは異なります。このような状況では、XRegionエージェントは、行をリモート・リージョンからローカル・リージョンのスキーマに変換して違いを解決しようとします。たとえば、リモート・リージョンの複数リージョン表に新しい列を追加しても、この新しい列はローカル・リージョンにまだ追加されていません。ローカル・リージョンの複数リージョン表では、リモート・リージョンからストリームされた変更の新しい列を表示できませんが、ローカル・リージョンでは引き続き他の列が表示されます。これは、ローカル・リージョンに同じ列を追加して問題を修正し、スキーマの相違を終了するまで続きます。複数リージョン表では、あるリージョンでスキーマが変更された場合、他のリージョンへの自動通知は行われません。ローカル・リージョンのXRegionエージェントは、より新しいバージョンの表を含むリモート・リージョンのデータを確認したときにその変更を検出でき、その表メタデータをリモート・リージョンからリフレッシュして最新のスキーマを取得します。
    schema_evolution_matched_metadata.epsの説明が続きます図schema_evolution_matched_metadata.epsの説明

    エージェントがリモート・リージョンからローカル・リージョン表のメタデータをリフレッシュしてスキーマの違いを修正できないように、異なるリージョンのスキーマが異なっている状況を考えてみます。たとえば、STRING型の新しい列Fooをリモート・リージョンに追加したが、ローカル・リージョンにLONG型の同じ列を追加した場合、リモート・リージョンのこれらの変更はローカル・リージョンと互換性がないとみなされ、エージェントはこの違いを修正できません。リモート・リージョンのこれらの変更は、ローカルには永続化されません。したがって、リモート・リージョンの変更は破棄され、表ごとの統計incompatibleRowsに計上されます。リモート・データの永続性の詳細は、show mrtable-agent-statisticsの項を参照してください。
    schema_evolution_mismatched_metadata.epsの説明が続きます図schema_evolution_mismatched_metadata.epsの説明

  7. リージョン間のソフトウェア・バージョンの違いの処理

    特定のリージョンでは、まずkvstoreをアップグレードしてから、エージェントを同じバージョンにアップグレードする必要があります。複数リージョン表で異なるリージョンに異なるバージョンのソフトウェアがある場合、古いバージョンのエージェントは、新しいバージョンのソフトウェアを使用してリージョンからストリームされた行を正しく処理できない可能性があり、一部のデータは古いエージェントによって操作の互換性がないものとして扱われることがあります。たとえば、リモート・リージョンがまだアップグレードされていないときにTTL (存続時間)をサポートするようにローカル・リージョンがアップグレードされた場合、リモート・リージョンに加えられた変更はローカル・リージョンに永続化されますが、有効期限情報はありません。つまり、行は期限切れになりません。リモート・リージョンがTTLをサポートするようにアップグレードされているが、ローカル・リージョンがサポートしていない場合も同様です。TTLを使用してリモート・リージョンに加えられたすべての変更は、ローカル・リージョンに適用されるとTTLを失います。つまり、これらの行は期限切れになりません。これが望ましくない場合は、すべてのリージョンがデータを正しく処理できるように、まずすべてのリージョンをアップグレードしてからデータを表に書き込む必要があります。すべての機能は、すべてのリージョンが同じバージョンにアップグレードされた後にのみ、複数リージョン表で完全に使用可能になります。