OceanBaseデータベースのパラメータは、クラスタレベルのパラメータとテナントレベルのパラメータに分かれています。OBServerノードは、すべてのパラメータをシリアライズして、作業ディレクトリ内の設定ファイルetc/observer.conf.binに保存します。その後、この作業ディレクトリでOBServerノードを起動するたびに、この設定ファイルが読み込まれます。
パラメータの確認
通常テナントがパラメータを確認する場合、仮想テーブルの形式で、クラスタ設定とテナント設定を含む現在のテナントのパラメータ情報が表示されます。クラスタレベルのパラメータはすべて読み取り専用です。テナントレベルのパラメータは、パラメータの属性に基づいて変更可否が決定されます。
通常テナントが
SHOW PARAMETERSステートメントを使用して、自身のテナントレベルのパラメータ情報を確認するSQLステートメントは以下のとおりです:SHOW PARAMETERS [SHOW_PARAM_OPTS]システムテナントがパラメータを確認する場合
システムテナントは
SHOW PARAMETERSステートメントを使用して、クラスタレベルのパラメータとテナントレベルのパラメータ情報を確認できます。TENANTキーワードを追加することで、指定したテナントのパラメータを確認できます。TENANTを指定しない場合、システムテナントレベルのパラメータ情報が表示されます。これにはクラスタ設定とテナント設定が含まれます。クラスタ設定とテナント設定は、それぞれの属性に基づいて変更可否が決定されます。特定の通常テナントを指定した場合、表示されるパラメータ内容は通常テナントと完全に一致します。
SQLステートメントは以下のとおりです:
SHOW PARAMETERS [SHOW_PARAM_OPTS] TENANT = tenant_name
パラメータの詳細情報は以下の表のとおりです:
列名 |
含義 |
|---|---|
| svr_ip | 机器 IP |
| svr_port | 机器端端口 |
| name | パラメータ名 |
| value | パラメータ値 |
| type | パラメータデータ型 ( NUMBER,STRING,CAPACITY... ) |
| info | パラメータ説明 |
| section | パラメータ分類 |
| scope | パラメータ範囲属性( Tenant|Cluster ) |
| source | 現在値の出典( Tenant|Cluster|CommandLine|ObAdmin|File ) |
| edit_level | このパラメータの変更動作を定義します:
|
| default_value | パラメータのデフォルト値。 |
| isdefault | 現在値がデフォルト値かどうか。
|
パラメータの変更
説明
クラスタレベルのパラメータは、システムテナントでのみ設定できます。
MySQLモードでは、パラメータを変更するSQL構文は次のとおりです:
ALTER SYSTEM [SET] parameter_name = expression [PARAM_OPTS]
システムテナントでは、TENANT キーワードを指定することで、すべてのテナントまたは特定のテナントのパラメータを変更できます。SQL構文は次のとおりです:
説明
実行が成功すると、指定されたすべてのテナントのパラメータが変更されます。
ALTER SYSTEM [SET] parameter_name = expression [PARAM_OPTS] TENANT = all|all_user|all_meta|tenant_name
説明
all:V4.2.1バージョン以降、tenant = allとtenant = all_userは同じ意味を持ち、すべてのユーザーテナントに適用されることを示します。all構文は廃止予定であり、使用は推奨されません。all_user:すべてのユーザーテナントに適用されます。all_meta:すべてのMETAテナントに適用されます。
Oracleモードでは、パラメータを変更するSQL構文は次のとおりです:
ALTER SYSTEM SET parameter_name = expression [PARAM_OPTS]
説明
PARAM_OPTS は、パラメータ設定に使用されるその他の制限条件を示します。例えば、ゾーンの指定やOBServerノードの指定などです。
パラメータストレージ
OBServerノードは永続化時に設定ファイルを使用し、実行時には内部テーブルを維持します。
パラメータには2種類のエンティティテーブルがあります:クラスタレベルのパラメータテーブルと各テナントのテナントレベルのパラメータテーブルです。ユーザーがSQLを実行してクラスタレベルのパラメータを変更する場合はクラスタレベルのパラメータテーブルに書き込まれ、それ以外の場合は対応するテナントレベルのパラメータテーブルに書き込まれます。読み取り時は、クラスタレベルのパラメータはクラスタレベルのパラメータテーブルのみを使用し、テナントレベルのパラメータはテナントレベルのパラメータテーブルから読み取ります。
設定ファイル形式
ObRecordHeader
[CLUSTER]
CLUSTER_PARAMETER_UPDATES
[TENANT_ID1]
TENANT_ID1_PARAMETER_UPDATES
[TENANT_ID2]
TENANT_ID2_PARAMETER_UPDATES
更新
更新とは、各OBServerノードが必要に応じて、内部テーブルまたは設定ファイルから永続化された増分変更を読み取り、メモリにロードするプロセスを指します。observerプロセスが起動したばかりの時、設定ファイルからパラメータをロードします。通常の運用中にユーザーがパラメータを変更した場合、OBServerノードは内部テーブルからロードします。
設定ファイルからのロード
OBServerノード起動時、パラメータは設定ファイルから優先的にロードされます。パラメータのロード順序は以下のとおりです:
コードの内容と実行環境に基づいてデフォルト設定を計算します。
設定ファイル内の設定を項目ごとに設定します。
テナントレベルのパラメータは、クラスタレベルのパラメータをコピーした後、テナントの設定値で上書きされます。
コマンドライン引数で渡されたパラメータ値に基づいて設定します。
内部テーブルからの読み込み
パラメータの主な更新シナリオは、内部テーブルからの読み込みです。つまり、既に正常に動作する設定がある状態で、特定のパラメータ値を変更する必要がある場合です。
ALTER SYSTEM SET のSQLが検証を通過すると、対応するパラメータが存在する内部テーブルが更新され、RSはハートビートを通じて各OBServerノードに通知し、設定パラメータの内部テーブルを再読み込んで設定を更新するよう指示します。OBServerノードがRSから通知を受信すると、バックグラウンドスレッドが「設定パラメータの更新」というタスクを開始します。このタスクの主なプロセスは以下のとおりです:
内部テーブルの設定パラメータ値を読み取ります。
現在の設定パラメータをコピーします。
内部テーブルの設定パラメータを、コピーした設定パラメータのコピーに項目ごとに適用します。
完了後、コピーした設定パラメータの値が有効かどうか確認します。
内部テーブルの値を設定ファイルに永続化します。
設定パラメータのコピーで元の設定パラメータを置き換えます。
テナントレベルの設定パラメータのプロセスはクラスタレベルの設定パラメータと同じですが、唯一の違いは設定パラメータが存在する内部テーブルが異なることです。