テナントのスケーリングとは、本質的には計算能力やストレージ容量を含むサービス能力の向上または低下を指します。以下では、主に水平スケーリングと垂直スケーリングの観点から、OceanBaseデータベースが提供するテナントのスケーリング機能について説明します。
水平スケーリング
OceanBaseデータベースでは、テナントのストレージ容量および読み書きサービス能力は、Unit Numberの個数、Primary Zoneの第一優先順位の個数、およびLocalityなどの要因の影響を受けます。
Unit Numberの個数の調整
Unit NumberとはリソースプールのUNIT_NUMであり、各Zone上でテナントにサービスを提供するUnitの個数を示します。テナントのリソースプールのUNIT_NUMの値を調整することで、そのZone上で当該テナントにサービスを提供するノードの数を増減し、テナント全体のサービス能力を変更して、テナントのスケーリングを実現します。
リソースプールのUNIT_NUMの調整には、UNIT_NUMの増量と減量が含まれます。UNIT_NUMを調整する際は、以下の点に注意してください:
同一構成Zoneモードのテナントの場合:
複数のResource Poolが存在し、それらのResource Poolがテナントに割り当てられていない場合は、個別のResource Poolの
UNIT_NUMを単独で増量または減量できます。複数のResource Poolが存在し、それらのResource Poolがすべてテナントに割り当てられている場合は、すべてのResource Poolの
UNIT_NUMを同時に調整する必要があり、個別に調整することはできません。
異構成Zoneモードのテナントの場合、複数のResource Poolが存在する場合、それらのResource Poolがテナントに割り当てられているかどうかにかかわらず、調整が可能です。つまり、すべてのResource Poolの
UNIT_NUMを同時に調整することも、個別のResource PoolのUNIT_NUMを単独で増量または減量することもサポートされています。
UNIT_NUMの増量または減量は、本質的にはUnitの追加と削除を行うことです。UNIT_NUMの増量または減量の詳細な操作については、Unit Numberの調整によるテナントのスケーリングを参照してください。
Primary Zoneの第一優先順位の個数の調整
Primary Zoneとは、読み書きサービスを提供するZoneのリストです。Primary Zoneの第一優先順位の個数を増減することで、読み書きサービスを提供するZoneを増減し、Zone間での読み書きサービスの水平スケーリングを実現します。
Primary Zoneの第一優先順位の個数の調整には、第一優先順位の個数を増やす場合と減らす場合の2つのシナリオがあります。
Primary Zoneの第一優先順位の個数を調整する詳細な操作については、Primary Zoneの調整によるテナントのスケーリングを参照してください。
Localityの変更
Localityとは、データレプリカのZone間での分散戦略を指します。Localityを変更することで、テナントの各データのレプリカ数を増減し、結果としてZone間でのテナントデータのサービス範囲を変更します。
Localityの変更には、レプリカ数の増加と削減の2つの方法があります。
レプリカ数の増加
レプリカ数の増加は、主に以下のシナリオで使用されます:
シナリオ1:テナントの可用性を向上させるために、テナントのレプリカ数を増やす。
例えば、あるテナントを3レプリカ(
F@z1,F@z2,F@z3)から5レプリカ(F@z1,F@z2,F@z3,F@z4,F@z5)にアップグレードし、データ範囲を'z1', 'z2', 'z3'から'z1','z2','z3','z4','z5'に拡大することで、テナントの可用性を向上させます。シナリオ2:データをあるデータセンター(Zone)から別のデータセンター(Zone)に移動する際、新しいデータセンターでデータを補完する。
新しいデータセンターでのデータ補完は、データをデータセンター内で移動する際のサブ操作です。テナントがデータセンター
z1のデータをz4に移動したい場合、まずz4内でデータを追加するためにローカリティを変更します。これにより、データレプリカのデータセンター間移動プロセスが完了し、新しいデータセンターでデータを補完する操作が実行されます。
レプリカ数の削減
レプリカ数の削減は主に以下のシナリオで使用されます:
シナリオ1:テナントのストレージリソース使用量を削減するために、テナントのレプリカ数をダウングレードする。
例えば、あるテナントを5レプリカ(
F@z1,F@z2,F@z3,F@z4,F@z5)から3レプリカ(F@z1,F@z2,F@z3)にダウングレードし、データ範囲を'z1','z2','z3','z4','z5'から'z1','z2','z3'に縮小することで、テナントのストレージリソース使用量を削減します。シナリオ2:データをあるデータセンター(Zone)から別のデータセンター(Zone)に移動する際、古いデータセンターでデータを削除する。
古いデータセンターでのデータ削除は、データをデータセンター内で移動する際の別のサブ操作です。テナントがデータセンター
z1のデータをz4に移動したい場合、z4内でデータを追加した後、再度ローカリティを変更することでz1データセンター内のデータを削除し、最終的にテナントデータをz1からz4へ移動します。
ローカリティの変更に関する詳細な操作については、ローカリティの変更を参照してください。
垂直スケーリング
垂直スケーリングとは、主にテナントのリソースプールのリソース仕様を調整することで、各ノード上のサービス能力を変更し、それによってテナント全体のサービス能力を変更し、テナントのスケールアウトまたはスケールインを実現することを指します。
テナントのリソースプールのリソース仕様を調整する主な方法は以下の2つです:
新しいリソース仕様への切り替え(unit_config)
新しいリソース仕様への切り替えとは、リソースプール内の各リソースユニットのリソース仕様を調整することで、そのテナントがそのリソースプール上で利用可能なリソース仕様とサービス能力を調整することです。
現在のリソース仕様の変更(unit_config)
現在のリソース仕様の変更とは、現在のリソース仕様のCPUまたはMemoryなどの値を直接調整することで、そのテナントがそのリソースプール上で利用可能なリソース仕様とサービス能力に直接影響を与えることです。
通常、新しいリソース仕様への切り替えと現在のリソース仕様の変更のいずれかの方法でテナントのサービス能力を調整できます。テナントレベルでは、実際にはテナントのリソースプールのリソース仕様を調整しています。リソース仕様の変更には、主にリソース仕様の拡大と縮小の2つのシナリオが含まれます。
リソース仕様の拡大
リソース仕様を拡大する場合、新しいリソース仕様への切り替えまたは現在のリソース仕様の変更に関わらず、調整後の総リソース量は以下の要件を満たす必要があります:
Sum(min_cpu) <= CPU_CAPACITY Sum(memory_size) <= MEM_CAPACITY Sum(max_cpu) <= CPU_CAPACITY * resource_hard_limitここで:
CPU_CAPACITY:単一ノード上のCPUの総容量を表します。MEM_CAPACITY:単一ノード上のメモリの総容量を表します。resource_hard_limit:CPUリソースのオーバーコミット率を定義するために使用されます。値が100より大きい場合、オーバーコミットが許可されます。
リソース構成の縮小
リソース構成を縮小する際は、リソース構成の
MEMORY_SIZEが、テナントが現在のノードで実際に使用しているメモリサイズ(MEM_USED)よりも小さくならないように注意してください。MEMORY_SIZE < MEM_USEDの場合、このリソース構成の調整は失敗します。
リソース構成の拡大と縮小の詳細な操作については、リソース構成の調整によるテナントのスケーリングを参照してください。