リソースプール属性を変更するとは、リソースプールの設定パラメータである UNIT、UNIT_NUM、ZONE_LIST などを調整することです。本記事では、リソースプール属性の変更方法について説明します。
リソースプール属性は ALTER RESOURCE POOL ステートメントを使用して変更できます。
テナントのリソースプール属性を変更することは、テナントのスケールアウトまたはスケールインを実現する別の方法です。例えば、UNIT_NUM を増やすことで、各ゾーン内のノード数を増やし、スケールアウトを実現できます。
手順
rootユーザーでクラスタのsysテナントにログインします。
obclient -h172.30.xx.xx -P2883 -uroot@sys#cluster -p**** -Aoceanbaseデータベースに入ります。obclient(root@sys)[(none)]> USE oceanbase;DBA_OB_RESOURCE_POOLSビューを使用して、リソースプールの設定情報を取得します。リソースプール
mq_pool_02の設定情報を取得する例を示します:obclient(root@sys)[oceanbase]> SELECT * FROM DBA_OB_RESOURCE_POOLS WHERE NAME = 'mq_pool_02';クエリ結果は次のとおりです:
+------------------+------------+-----------+----------------------------+----------------------------+------------+----------------+-------------+--------------+ | RESOURCE_POOL_ID | NAME | TENANT_ID | CREATE_TIME | MODIFY_TIME | UNIT_COUNT | UNIT_CONFIG_ID | ZONE_LIST | REPLICA_TYPE | +------------------+------------+-----------+----------------------------+----------------------------+------------+----------------+-------------+--------------+ | 1026 | mq_pool_02 | NULL | 2023-01-10 23:54:24.177685 | 2023-01-10 23:54:24.177685 | 1 | 1020 | zone1;zone2 | FULL | +------------------+------------+-----------+----------------------------+----------------------------+------------+----------------+-------------+--------------+ 1 row in setDBA_OB_RESOURCE_POOLSビューの詳細については、DBA_OB_RESOURCE_POOLSを参照してください。ALTER RESOURCE POOLステートメントを使用して、リソースプールの設定を変更します。注意
- 単一のステートメントでは1つのパラメータのみを変更できます。
UNIT、UNIT_NUM、ZONE_LISTのうち2つ以上を同時に変更する必要がある場合は、複数のステートメントに分けて実行する必要があります。 ZONE_LISTを変更する際は、1回につき1つのZoneの追加または削除のみをサポートします。
構文は以下のとおりです:
ALTER RESOURCE POOL pool_name UNIT [=] unit_name, UNIT_NUM [=] unit_num, ZONE_LIST [=] ('zone' [, 'zone' ...]);パラメータの説明:
pool_name:リソースプール名。UNIT:このリソースプールのリソース仕様。UNIT_NUM:リソースユニットの数です。Unit数を増やす場合、UNIT_NUMの値は各Zone内のOBServerの数を超えてはなりません。注意
現在のバージョンは異種Zoneモードをサポートしています。
UNIT_NUMを変更する際:- 同種Zoneモードでは、このリソースプールが既にテナントで使用されている場合、
ALTER RESOURCE POOLステートメントでの変更はできません。ALTER RESOURCE TENANTステートメントを使用して変更する必要があります。 - 異種Zoneモードでは、リソースプールが既にテナントで使用されていても、
ALTER RESOURCE POOLステートメントで変更できます。ただし、変更時には、1つのテナント内の複数のリソースプールで、最大でも2種類の異なるUNIT_NUMを持つ必要があります。例えば、あるテナントが3つのリソースプール
pool1、pool2、pool3を持ち、それぞれのunit_numが2、4、4である場合、pool3のunit_numを1に変更すると、システムはMore than two distinct unit_num in a single tenant not allowedエラーを返します。
ALTER RESOURCE POOLステートメントの詳細については、ALTER RESOURCE POOLを参照してください。ALTER RESOURCE TENANTステートメントの詳細については、ALTER RESOURCE TENANTを参照してください。- 同種Zoneモードでは、このリソースプールが既にテナントで使用されている場合、
ZONE_LIST:リソースプールのZone配置。
例:
同種ゾーンモード異種ゾーンモードリソースプールがテナントに割り当てられていない場合
リソースプール
mq_pool_02のリソース構成を'S2_unit_config'、リソースユニット数を3、ZONE_LISTを'zone1','zone2','zone3'に変更します。obclient(root@sys)[oceanbase]> ALTER RESOURCE POOL mq_pool_02 UNIT='S2_unit_config';obclient(root@sys)[oceanbase]> ALTER RESOURCE POOL mq_pool_02 UNIT_NUM=3;obclient(root@sys)[oceanbase]> ALTER RESOURCE POOL mq_pool_02 ZONE_LIST=('zone1','zone2','zone3');リソースプールがテナントに割り当てられている場合
同一ゾーンモードでは、リソースプールがテナントに割り当てられた後、そのテナントのリソースプール構成を変更する場合、
UNIT_NUMはALTER RESOURCE TENANTステートメントを使用して変更する必要があります。リソースプール
mq_pool_02のリソース構成を'S2_unit_config'、リソースユニット数を3、ZONE_LIST を'zone1','zone2','zone3'に変更します。obclient(root@sys)[oceanbase]> ALTER RESOURCE POOL mq_pool_02 UNIT='S2_unit_config';obclient(root@sys)[oceanbase]> ALTER RESOURCE TENANT mq_t2 UNIT_NUM=3;obclient(root@sys)[oceanbase]> ALTER RESOURCE POOL mq_pool_02 ZONE_LIST=('zone1','zone2','zone3');
注意
通常、既存のテナントまたはアップグレードされたテナントは、デフォルトで同種ゾーンモードになっています。異種ゾーンモードを有効にするには、テナントレベルの構成パラメータ
zone_deploy_modeの値をhetero(異種ゾーンモード)に変更する必要があります。変更後は、homo(同種ゾーンモード)に戻すことはできません。リソースプール
mq_pool_02のリソース仕様を'S2_unit_config'、リソースユニット数を3、ZONE_LISTを'zone1','zone2','zone3'にそれぞれ変更します。obclient(root@sys)[oceanbase]> ALTER RESOURCE POOL mq_pool_02 UNIT='S2_unit_config';obclient(root@sys)[oceanbase]> ALTER RESOURCE POOL mq_pool_02 UNIT_NUM=3;obclient(root@sys)[oceanbase]> ALTER RESOURCE TENANT mq_t2 UNIT_NUM=3;obclient(root@sys)[oceanbase]> ALTER RESOURCE POOL mq_pool_02 ZONE_LIST=('zone1','zone2','zone3');- 単一のステートメントでは1つのパラメータのみを変更できます。
DBA_OB_RESOURCE_POOLSビューを確認し、リソースプール設定の変更結果を確認します。結果は以下のとおりで、
UNIT_COUNT、UNIT_CONFIG_ID、ZONE_LISTパラメータが更新されていることが確認できます。obclient(root@sys)[oceanbase]> SELECT * FROM DBA_OB_RESOURCE_POOLS WHERE NAME = 'mq_pool_02';クエリ結果は次のとおりです:
+------------------+------------+-----------+----------------------------+----------------------------+------------+----------------+-------------------+--------------+ | RESOURCE_POOL_ID | NAME | TENANT_ID | CREATE_TIME | MODIFY_TIME | UNIT_COUNT | UNIT_CONFIG_ID | ZONE_LIST | REPLICA_TYPE | +------------------+------------+-----------+----------------------------+----------------------------+------------+----------------+-------------------+--------------+ | 1026 | mq_pool_02 | NULL | 2023-01-10 23:54:24.177685 | 2023-01-10 23:56:04.961771 | 2 | 1021 | zone1;zone2;zone3 | FULL | +------------------+------------+-----------+----------------------------+----------------------------+------------+----------------+-------------------+--------------+ 1 row in set