テナントリソースの水平管理は、主にリソースプールの UNIT_NUM を調整することで、テナントの利用可能なリソースを動的に変更します。具体的には、リソースプールの UNIT_NUM を調整することで、そのリソースプール配下の各ゾーン内のユニット数を変更し、結果として当該テナントの対応するゾーンにおけるサービス能力を向上または低下させることができます。
OceanBaseデータベースの現在のバージョンでは、テナントの同種ゾーンモードと異種ゾーンモードをサポートしています:
同種ゾーンモードでは、テナント内の各ゾーンの
UNIT_NUMが同じである必要があります。異種ゾーンモードでは、テナント内の各ゾーンの
UNIT_NUMは同じでも異なっても構いませんが、一つのテナントのすべてのゾーンでUNIT_NUMの種類は最大2種類までとなります。
注意
通常、既存のテナントやアップグレードされたテナントは、デフォルトで同種ゾーンモードに設定されています。異種ゾーンモードを有効にするには、テナントレベルの構成パラメータ zone_deploy_mode の値を hetero(異種ゾーンモード)に変更する必要があります。変更後は、homo(同種ゾーンモード)に戻すことはできません。
UNIT_NUM の変更も、UNIT_NUM を増やす場合と減らす場合の2種類に分けられます:
同種ゾーンモードでデプロイされたテナントの場合:
リソースプールがテナントに付与されていない場合は、リソースプールの
UNIT_NUMを個別に減らしたり増やしたりできます。リソースプールがテナントに付与されている場合は、テナントに付与されたすべてのリソースプールの
UNIT_NUMを同時に調整する必要があり、個別に調整することはできません。
異種ゾーンモードでデプロイされたテナントの場合、リソースプールがテナントに付与されているかどうかに関係なく、調整は可能です。つまり、テナントに付与されたすべてのリソースプールの
UNIT_NUMを同時に調整することも、リソースプールのUNIT_NUMを個別に増やしたり減らしたりすることもサポートされています。
UNIT_NUM を増やすか減らすことは、本質的にはユニットの追加と削除です。リソースプールの UNIT_NUM を調整する例文は以下のとおりです:
異種ゾーンモードのリソースプール、または同種ゾーンモードでテナントに付与されていないリソースプールの
UNIT_NUMを個別に調整します。調整対象のリソースプール情報は以下のとおりです:
obclient> CREATE RESOURCE POOL rp1 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2');調整例は以下のとおりです:
obclient> ALTER RESOURCE POOL rp1 UNIT_NUM 3; // UNIT_NUMを増やすobclient> ALTER RESOURCE POOL rp1 UNIT_NUM 2; // UNIT_NUMを減らすobclient> ALTER RESOURCE POOL rp1 UNIT_NUM 1 DELETE UNIT = (1001, 1003); // 指定したリソースユニットでUNIT_NUMを減らすテナントのすべてのリソースプールの
UNIT_NUMを同時に調整します。テナントのリソースプール情報は以下のとおりです:
obclient> CREATE RESOURCE POOL rp2 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2');obclient> CREATE RESOURCE POOL rp3 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone3');obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('rp2', 'rp3');調整例は以下のとおりです:
obclient> ALTER RESOURCE TENANT tt UNIT_NUM = 3; // 2つのリソースプールのUNIT_NUMを同時に増やすobclient> ALTER RESOURCE TENANT tt UNIT_NUM = 1; // 2つのリソースプールのUNIT_NUMを同時に減らす
UNIT_NUMの増量
UNIT_NUM増量例1:リソースプールを作成後、個別のリソースプールの
UNIT_NUMを単独で増量できます。調整対象のリソースプール情報は以下のとおりです:
obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2', 'zone3');異種ゾーンモードのリソースプール、または同種ゾーンモードでテナントに割り当てられていないリソースプールについては、個別のリソースプールの
UNIT_NUMを増量するステートメントは以下のとおりです。obclient> ALTER RESOURCE POOL r_p0 UNIT_NUM 3;UNIT_NUM増量例2:UNIT_NUMの増量は通常、テナントの拡張シナリオで行われます。例えば、テナントに割り当てられたリソースプールの場合:obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2', 'zone3');obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0');この例では、テナント
ttがリソースプールr_p0を使用しています。zone1、zone2、zone3の各ゾーンにそれぞれ2つのユニットがありますが、業務量の増加に伴い、各ゾーンの2つのユニットでは現在の業務量を処理できなくなりました。そのため、新しいビジネス要件を満たすために、テナントのサービス能力を向上させるためにUNIT_NUMの増量を検討する必要があります。以下のステートメントを使用して、リソースプール
r_p0内のテナントのユニット数を3に調整し、テナントのサービス能力を向上させることができます。obclient> ALTER RESOURCE TENANT tt UNIT_NUM = 3;
UNIT_NUMの値を小さくする
UNIT_NUMを小さくする例1:リソースプールを作成した後、個別のリソースプールの
UNIT_NUMを小さくすることができます。調整対象のリソースプール情報は以下のとおりです。obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2', 'zone3');異種ゾーンモードのリソースプール、または同種ゾーンモードでテナントに割り当てられていないリソースプールについては、個別のリソースプールの
UNIT_NUMを小さくするステートメントは以下のとおりです:obclient> ALTER RESOURCE POOL r_p0 UNIT_NUM 1;指定されたUNITを削除することで、個別のリソースプールの
UNIT_NUMを小さくすることもできます。ステートメントは以下のとおりです:obclient> ALTER RESOURCE POOL r_p0 UNIT_NUM 1 DELETE UNIT=(1001,1002,1003);UNIT_NUMを小さくする例2:UNIT_NUMの値を小さくすることは、通常、テナントのスケールインシナリオで発生します。例えば、テナントに割り当てられたリソースプールの場合:obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2', 'zone3');obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0');この例では、テナント
ttがリソースプールr_p0を使用しています。zone1、zone2、zone3の各ゾーンにはそれぞれ2つのUnitがありますが、ビジネスの調整により、各ゾーンで2つのUnitを必要としなくなったため、新しいビジネス要件を満たすためにUNIT_NUMを小さくする必要があります。以下のステートメントを使用して、テナントのリソースプール
r_p0内のUnit数を1に調整し、テナントのサービス能力を低下させることができます。obclient> ALTER RESOURCE TENANT tt UNIT_NUM = 1;また、同種ゾーンモードでは、指定された
UNIT_GROUPを削除することでUNIT_NUMの数を小さくすることもできます。obclient> ALTER RESOURCE TENANT tt UNIT_NUM = 1 DELETE UNIT_GROUP =(1001);