メインコンテンツまでスキップ
バージョン: 4.x

SQL エラー

Q1. Show backends/frontends で表示される情報が不完全

show backends/frontends などの特定のステートメントを実行した後、結果の一部の列が不完全である場合があります。例えば、show backends の結果でディスク容量情報が表示されないことがあります。

通常、この問題はクラスターに複数の FE がある場合に発生します。ユーザーが非 Master FE ノードに接続してこれらのステートメントを実行すると、不完全な情報が表示されます。これは、一部の情報が Master FE ノードにのみ存在するためです。例えば、BE のディスク使用量情報などです。そのため、Master FE に直接接続した後でのみ完全な情報を取得できます。

もちろん、ユーザーはこれらのステートメントを実行する前に set forward_to_master=true; を実行することもできます。セッション変数が true に設定された後、その後に実行される一部の情報表示ステートメントは、結果を取得するために自動的に Master FE に転送されます。このように、ユーザーがどの FE に接続していても、完全な結果を取得できます。

Q2. invalid cluster id: xxxx

このエラーは、show backends または show frontends コマンドの結果に表示される場合があります。通常、FE または BE ノードのエラーメッセージ列に表示されます。このエラーの意味は、Master FE がノードにハートビート情報を送信した後、ノードがハートビート情報に含まれるクラスター ID がローカルに保存されているクラスター ID と異なることを発見し、ハートビートへの応答を拒否することです。

Doris の Master FE ノードは、各 FE または BE ノードに積極的にハートビートを送信し、ハートビート情報に cluster_id を含めます。cluster_id は、クラスターが初期化されるときに Master FE によって生成される一意のクラスター ID です。FE または BE が初めてハートビート情報を受信すると、cluster_id はファイルの形でローカルに保存されます。FE のファイルはメタデータディレクトリの image/ ディレクトリにあり、BE はすべてのデータディレクトリに cluster_id ファイルを持ちます。その後、ノードがハートビートを受信するたびに、ローカルの cluster_id の内容とハートビート内の内容を比較します。一致しない場合は、ハートビートへの応答を拒否します。

このメカニズムは、クラスター外のノードから送信される偽のハートビートメッセージの受信を防ぐためのノード認証メカニズムです。

このエラーから回復する必要がある場合。最初に行うべきことは、すべてのノードが正しいクラスターにあることを確認することです。その後、FE ノードについては、メタデータディレクトリの image/VERSION ファイル内の cluster_id 値を変更して FE を再起動してみることができます。BE ノードについては、データディレクトリ内のすべての cluster_id ファイルを削除して BE を再起動することができます。

Q3. Unique Key モデルのクエリ結果が一致しない

場合によっては、ユーザーが同じ SQL を使用して Unique Key モデルのテーブルをクエリするときに、複数のクエリの結果が一致しない場合があります。そして、クエリ結果は常に 2-3 種類の間で変化します。

これは、同じバッチのインポートデータに、同じキーを持つが異なる値を持つデータがあるためで、データの上書きシーケンスの不確実性により、異なるレプリカ間で一致しない結果につながる可能性があります。

例えば、テーブルが k1, v1 として定義されているとします。インポートデータのバッチは以下の通りです:

1, "abc"
1, "def"

この場合、コピー1の結果が 1, "abc" で、コピー2の結果が 1, "def" になる可能性があります。結果として、クエリ結果に一貫性がありません。

異なるレプリカ間でデータシーケンスが一意であることを保証するには、Sequence Column機能を参照してください。

Q4. bitmap/hll型データのクエリでNULLが返される問題

バージョン1.1.xにおいて、ベクトル化が有効で、クエリデータテーブルのbitmap型フィールドがNULL結果を返す場合:

  1. まず set return_object_data_as_binary=true; を設定する必要があります
  2. ベクトル化を無効にします set enable_vectorized_engine=false;
  3. SQLキャッシュを無効にします set [global] enable_sql_cache = false;

これは、bitmap/hll型がベクトル化実行エンジンにおいて、入力がすべてNULLの場合、出力結果も0ではなくNULLになるためです。

Q5. bitmap/hll型データのクエリでNULLが返される問題

バージョン1.1.xにおいて、ベクトル化が有効で、クエリデータテーブルのbitmp型フィールドがNULL結果を返す場合:

  1. まず set return_object_data_as_binary=true; を設定する必要があります
  2. ベクトル化を無効にします set enable_vectorized_engine=false;
  3. SQLキャッシュを無効にします set [global] enable_sql_cache = false;

これは、bitmap/hll型がベクトル化実行エンジンにおいて、入力がすべてNULLの場合、出力結果も0ではなくNULLになるためです。

Q6. オブジェクトストレージアクセス時のエラー: curl 77: Problem with the SSL CA cert

be.INFOログに curl 77: Problem with the SSL CA cert エラーが表示される場合は、以下の方法で解決を試すことができます:

  1. https://curl.se/docs/caextract.htmlで証明書をダウンロード:cacert.pem
  2. 証明書を指定された場所にコピー:sudo cp /tmp/cacert.pem /etc/ssl/certs/ca-certificates.crt
  3. BEノードを再起動

Q7. インポートエラー:"Message": "[INTERNAL_ERROR]single replica load is disabled on BE."

  1. be.confのパラメータ enable_single_replica_load がtrueに設定されていることを確認してください
  2. BEノードを再起動してください