説明
ALTER TENANT ステートメントは、ユーザーテナントのプロパティを変更するために使用されます。これには、ローカリティ、プライマリゾーン、リソースプールリスト、システム変数値などの変更が含まれます。
ユーザーテナントの名前を変更する必要がある場合は、ALTER TENANT ... RENAME ステートメントを使用できます。
ユーザーテナントをロックまたはアンロックする必要がある場合は、ALTER TENANT ... LOCK / UNLOCK ステートメントを使用できます。ALTER TENANT ... LOCK ステートメントを使用してロック操作を実行すると、システムはロックされたテナント上で新しい接続を作成することを許可しませんが、既存の接続には影響しません。
権限要件
テナントを変更できるのは、sys テナントの root ユーザー(root@sys)のみです。他のテナントではテナントの変更はサポートされていません。
構文
ALTER TENANT
ALTER TENANT tenant_name
[SET] [tenant_option_list] [set_sys_var];
tenant_option_list:
tenant_option [, tenant_option ...]
tenant_option:
LOCALITY [=] 'locality_description'
| PRIMARY_ZONE [=] zone
| RESOURCE_POOL_LIST [=](pool_name [, pool_name...])
| ENABLE_ARBITRATION_SERVICE [=] {True | False}
| [DEFAULT] TABLEGROUP [=] {NULL | tablegroup_name}
| ENABLE_EXTENDED_ROWID [=] {true | false}
| COMMENT [=]'string'
set_sys_var:
VARIABLES var_name {TO | =} var_value [,var_name {TO | =} var_value...]
ALTER TENANT ... RENAME
ALTER TENANT tenant_name RENAME GLOBAL_NAME TO new_tenant_name;
ALTER TENANT ... LOCK / UNLOCK
ALTER TENANT tenant_name LOCK | UNLOCK;
パラメータの説明
| パラメータ | 説明 |
|---|---|
| tenant_name | 変更するテナント名を指定します。 |
| LOCALITY | テナントのローカリティを変更します。ローカリティは、ゾーン間でのレプリカの分散状況を示します。現行バージョンでサポートされているレプリカタイプは以下のとおりです:
例: LOCALITY = 'F@z1,F@z2,F@z3'、LOCALITY = 'F@z1,R@z2,C@z3'このパラメータを変更する際、新たにゾーンを追加する必要がある場合は、テナントリソースプールの ZONE_LIST にそのゾーンが含まれている必要があります。 |
| PRIMARY_ZONE | テナントのプライマリゾーンを変更します。主に以下の値をサポートします:
テナント作成時にプライマリゾーンが指定されていない場合、デフォルト値は RANDOM です。 |
| RESOURCE_POOL_LIST | テナントのリソースプールリストを変更します。 複数のリソースプールがある場合、複数のリソースプールの UNIT_NUM の数が一致している必要があります。
注意
|
| ENABLE_ARBITRATION_SERVICE | アービトレーションサービスがデプロイされているシナリオで、テナントのアービトレーションサービスの有効状態を変更します。 |
| [DEFAULT] TABLEGROUP | テナントのデフォルトのテーブルグループ情報を変更します。 NULL はデフォルトのテーブルグループを無効にすることを意味します。 |
| ENABLE_EXTENDED_ROWID | テナント内のすべてのテーブルにExtended ROWIDモードを有効にするかどうかを指定します。このパラメータは一度有効に設定すると、後で無効にすることはできません。ただし、テナントレベルの構成パラメータ default_enable_extended_rowid を使用して、今後作成されるテーブルに対してExtended ROWIDモードを有効にするかどうかを設定できます。テナントレベルの構成パラメータ default_enable_extended_rowid の詳細については、default_enable_extended_rowidを参照してください。 |
| system_var_name | テナントのシステム変数値を変更します。 |
| RENAME GLOBAL_NAME TO | テナント名を変更します。 |
| COMMENT | コメントを変更します。 |
例
テナント
tenant1のプライマリゾーンをzone2に変更します。obclient [oceanbase]> ALTER TENANT tenant1 primary_zone='zone2';テナント
tenant1のプライマリゾーンをRANDOMに変更します。obclient [oceanbase]> ALTER TENANT tenant1 primary_zone = RANDOM;このテナントに
zone1、zone2、zone3の3つのゾーンがある場合、このステートメントは次のものと同じです。obclient [oceanbase]> ALTER TENANT tenant1 primary_zone = 'zon1,zone2,zone3';リソースプールの変更は通常、テナントのレプリカ数のアップグレードやダウングレードのシナリオで使用されます。また、リソースプールを変更する際には、一度に1つのリソースプールしか追加または削除できず、以下のステートメントを実行してテナントのリソースプール
pool1を直接pool2に置き換えることはできません。そうしないと、次のエラーが発生します。obclient [oceanbase]> ALTER TENANT tenant1 resource_pool_list=('pool2');エラーメッセージは次のとおりです:
ERROR 1210 (HY000): Incorrect arguments to resource pool listテナントの利用可能なリソースを調整したい場合、例えばテナントの拡張が必要な場合は、リソースユニットの仕様を引き上げることができます。
obclient [oceanbase]> ALTER RESOURCE UNIT unit1 MAX_CPU 15, MEMORY_SIZE '20G', MAX_IOPS 1280, MIN_CPU=10, MIN_IOPS=1024;テナント
tenant1のローカリティを変更し、レプリカ数を増やします。ここで、Fはフル機能型レプリカを表し、B_4は新規追加されたゾーン名を表します。現在のテナント
tenant1のローカリティがF@B_1,F@B_2,F@B_3で、リソースプールがpool1であり、そのZONE_LISTの範囲が'B_1','B_2','B_3'であるとします。リソースユニット
unit2を作成します。obclient [oceanbase]> CREATE RESOURCE UNIT unit2, MAX_CPU=5, MIN_CPU=2.5, MEMORY_SIZE= '32G', MAX_IOPS=10000, MIN_IOPS=5000, LOG_DISK_SIZE=5301023539200;リソースプール
pool2を作成します。obclient [oceanbase]> CREATE RESOURCE POOL pool2 unit='unit2',unit_num=1,zone_list=('B_4');テナントにリソースプール
pool2を追加します。obclient [oceanbase]> ALTER TENANT tenant1 resource_pool_list=('pool1','pool2');テナントのローカリティを変更します。
obclient [oceanbase]> ALTER TENANT tenant1 LOCALITY='F@B_1,F@B_2,F@B_3,F@B_4';増やすレプリカタイプがカラムストアレプリカの場合、テナントのローカリティを変更するステートメントは次のとおりです:
obclient [oceanbase]> ALTER TENANT tenant1 LOCALITY = 'F@B_1,F@B_2,F@B_3,C@B_4';注意
- テナントのローカリティを変更する際、カラムストアレプリカについては、レプリカの追加・削除のみサポートされており、レプリカタイプの変換はサポートされていません。つまり、カラムストアレプリカを増やす場合は、元のゾーンにレプリカが存在していないことが条件となります。また、カラムストアレプリカを減らす場合は、カラムストアレプリカが存在するゾーンをレプリカのないゾーンに変更するしかありません。
- テナントにカラムストアレプリカを追加した後、カラムストアレプリカにアクセスするには、ODPを追加デプロイし、一連の設定を行って接続をカラムストアレプリカにルーティングする必要があります。カラムストアレプリカの詳細な使用方法については、カラムストアレプリカを参照してください。
アービトレーションサービスがデプロイされているシナリオでは、
tenant1にアービトレーションサービスを有効にします。obclient [oceanbase]> ALTER TENANT tenant1 ENABLE_ARBITRATION_SERVICE=true;通常のテナント
tenant1の名前をtenant101に変更します。obclient [oceanbase]> ALTER TENANT tenant1 RENAME GLOBAL_NAME TO tenant101;テナント
tenant1をロックします。obclient [oceanbase]> ALTER TENANT tenant1 LOCK;