すべてのプロダクト
Search
ドキュメントセンター

Hologres:リバランス

最終更新日:Jan 11, 2025

Hologres V2.0.21 以降では、シャードのリバランスをトリガーするために使用されるリバランス機能がサポートされています。このトピックでは、リバランス機能を使用してシャードのリバランスをトリガーする方法について説明します。

背景情報

通常のケースでは、Hologres インスタンスのランタイム中に、シャードのメタデータはワーカーノードに均等にロードされます。高速リカバリがトリガーされるシナリオなど、特定のシナリオでは、シャードはワーカーノードに不均等にロードされます。この場合、ワーカーノードにシャードのメタデータを均等にロードするために、シャードのリバランスが必要です。

制限事項

リバランス機能は、Hologres V2.0.21 以降でのみサポートされています。Hologres インスタンスのバージョンが V2.0.21 より前の場合は、Hologres インスタンスを手動でアップグレードするか、Hologres DingTalkグループに参加してアップグレードを申請することをお勧めします。Hologres インスタンスを手動でアップグレードする方法の詳細については、インスタンスのアップグレードをご参照ください。Hologres DingTalkグループへの参加方法の詳細については、Hologres のオンラインサポートを受けるをご参照ください。

構文

シャードのリバランスをトリガーするための構文は、インスタンスの種類によって異なります。

汎用インスタンスと読み取り専用セカンダリインスタンス

リバランス関数は、汎用インスタンスと読み取り専用セカンダリインスタンスのワーカーノードでシャードのリバランスをトリガーするために使用されます。構文:

SELECT hg_rebalance_instance();
  • 戻り値:

    • true:シャードのリバランスがトリガーされ、システムはシャードのリバランスを開始します。

    • false:シャードのリバランスは必要ありません。

    • エラー:シャードのリバランスに失敗しました。たとえば、ポッドに障害が発生している場合、シャードのリバランスをトリガーしようとするとエラーが返されます。

  • システムは、各ワーカーノードにロードされているシャードの数が基本的に同じになるまで、シャードのリバランスを停止します。たとえば、ワーカーノード間のシャード数の差は 1 以下です。例:

    • 2 つのワーカーノードと 2 つのシャードを構成した場合、各ワーカーノードに 1 つのシャードがロードされます。

    • 2 つのワーカーノードと 3 つのシャードを構成した場合、1 つのワーカーノードに 1 つのシャードがロードされ、もう 1 つのワーカーノードに 2 つのシャードがロードされます。

  • シャードのリバランスプロセスには約 2 ~ 3 分かかります。実際の期間は、Hologres インスタンス内のテーブルグループの数によって異なります。Hologres インスタンス内のテーブルグループの数が多いほど、シャードのリバランスに必要な時間が長くなります。シャードのリバランス中、データの書き込みは約 15 秒間中断されます。

  • シャードのリバランスプロセスは非同期です。次の SQL ステートメントを実行して、シャードのリバランスの進捗状況をクエリできます。

  • SELECT hg_get_rebalance_instance_status();
  • 戻り値:

    • DOING:シャードのリバランスが実行中です。

    • DONE:シャードのリバランスが完了しました。

FAQ

シャードの偏在を検出してトラブルシューティングするにはどうすればよいですか?

通常、各ワーカーノードの負荷はバランスが取れています。ただし、ワーカーノードにシャードがロードされていない場合、そのワーカーノードの負荷は他のワーカーノードの負荷よりもはるかに低くなります。

  • 均等なシャード分散の例:この例では、10 個のワーカーノードで構成された Hologres インスタンスでデータのクエリと書き込みが実行されます。次の図に示すメトリックデータは、各ワーカーノードの CPU 使用率が基本的に同じであることを示しています。image.png

  • 不均等なシャード分散の例:この例では、ワーカーノードにシャードがロードされていません。次の図に示すメトリックデータは、シャードがロードされていないワーカーノードの CPU 使用率が、他のワーカーノードの CPU 使用率よりもはるかに低いことを示しています。image.png

    次の SQL ステートメントを実行して、各ワーカーノードにシャードがロードされているかどうかを確認できます。

    SELECT DISTINCT worker_id FROM hologres.hg_worker_info;
    • 次の図は、返された結果を示しています。image.png

    • 返された結果は、9 つのワーカーノードにシャードがロードされており、1 つのワーカーノードにシャードがロードされていないことを示しています。

    • 解決策:シャードのリバランスを実行します。メトリックデータは、シャードのリバランスが完了した後、ワーカーノードの低い CPU 使用率が他のワーカーノードの CPU 使用率と基本的に同じになるまで増加したことを示しています。image.png

    • 各ワーカーノードのシャードのロード状況を確認します。確認結果は、10 個すべてのワーカーノードにシャードがロードされていることを示しています。image.png