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 使用率が基本的に同じであることを示しています。

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

次の SQL ステートメントを実行して、各ワーカーノードにシャードがロードされているかどうかを確認できます。
SELECT DISTINCT worker_id FROM hologres.hg_worker_info;次の図は、返された結果を示しています。

返された結果は、9 つのワーカーノードにシャードがロードされており、1 つのワーカーノードにシャードがロードされていないことを示しています。
解決策:シャードのリバランスを実行します。メトリックデータは、シャードのリバランスが完了した後、ワーカーノードの低い CPU 使用率が他のワーカーノードの CPU 使用率と基本的に同じになるまで増加したことを示しています。

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