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からの通知を受信すると、バックグラウンドスレッドが「構成パラメータの更新」というタスクを開始します。このタスクの主なプロセスは以下のとおりです:
内部テーブル内の構成パラメータ値を読み取ります。
現在の構成パラメータをコピーします。
内部テーブル内の構成パラメータを、コピーした構成パラメータのコピーに項目ごとに適用します。
完了後、コピーした構成パラメータの値が有効かどうか確認します。
内部テーブルの値を設定ファイルに永続化します。
設定パラメータのコピーで元の構成パラメータを置き換えます。
テナントレベル構成パラメータのプロセスはクラスタレベル構成パラメータと同じですが、唯一の違いは構成パラメータが存在する内部テーブルが異なることです。