OceanBaseデータベースはV4.1バージョンからアービトレーションサービス(Arbitration Service)をサポートしており、2リージョン3データセンター構成において同一リージョン内のレプリカ障害時のRT増大問題を解決するだけでなく、異リージョン間の帯域幅コストを削減し、第3データセンターのコストを極めて低く抑えることができます。
このセクションでは、コマンドラインを使用して2台のマシンで構成されるOceanBaseクラスタと1つのアービトレーションサービスをデプロイする方法について説明します。
説明
- 単一のOceanBaseクラスタは最大1つのアービトレーションサービスのみを使用できます。
- アービトレーションサービスは現在、単一マシン構成のみをサポートしています。
前提条件
OceanBaseデータベースをインストールする前に、以下の情報を確認してください。
- OBServerサーバーの関連設定が完了していること。詳細については、サーバー設定、(オプション)時刻源の設定、oatcliを使用したOBServerサーバーの初期化を参照してください。
- OBServerサーバーに
adminユーザーが作成されていること。 - OceanBaseデータベースのRPMパッケージを取得済みであること。詳細については、インストールパッケージの準備を参照してください。
手順
ステップ1:OceanBaseクラスタのデプロイ
2台のOBServerサーバーにRPMパッケージをインストールします。
OceanBaseデータベースのRPMパッケージをインストールします。
OceanBaseデータベースのRPMパッケージが保存されているディレクトリに移動します:
[root@xxx /]# cd $rpm_dirOceanBaseデータベースのRPMパッケージをインストールします:
[root@xxx $rpm_dir]# rpm -ivh $rpm_name [--prefix=/home/admin/oceanbase]ここで、
$rpm_dirはRPMパッケージが保存されているディレクトリを表し、$rpm_nameはRPMパッケージの名前を表します。説明
OceanBaseデータベースソフトウェアは、デフォルトで
/home/admin/oceanbaseディレクトリにインストールされます。例:
[root@xxx /home/admin/rpm]# rpm -ivh oceanbase-4.2.0.0-100000052023073123.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:oceanbase-4.2.0.0-100000052023073################################# [100%](オプション)OceanBaseクライアントをインストールします。
OceanBaseクライアントOBClientは、OceanBaseデータベース専用のコマンドラインクライアントツールです。OBClientを使用すると、OceanBaseデータベースのMySQLテナントおよびOracleテナントに接続できます。OceanBaseデータベースのMySQLテナントにのみ接続する場合は、MySQLクライアント(mysql)を使用してOceanBaseデータベースに接続することもできます。
注意
obclientV2.2.1 より前のバージョンはlibobclientに依存しているため、libobclientをインストールする必要があります。テクニカルサポートにお問い合わせいただき、OBClient RPMパッケージとlibobclient RPMパッケージを取得してください。例:
[root@xxx /home/admin/rpm]# rpm -ivh obclient-2.2.1-20221122151945.el7.alios7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:obclient-2.2.1-20221122151945.el7################################# [100%]インストールが成功したかどうか確認します:
[root@xxx /home/admin/rpm]# which obclient /usr/bin/obclient
observerプロセスのディレクトリを設定します。
(オプション)ディレクトリをクリーンアップします。
新しいマシンにOceanBaseデータベースを初めてデプロイする場合は、ディレクトリをクリーンアップする必要はありません。
以下の場合は、古いOceanBaseディレクトリを直接クリーンアップします:
* 以前のOceanBase環境をクリーンアップする場合。
* OceanBaseのインストール・デプロイプロセスで問題が発生し、環境が乱れたり、ファイルが次回のインストールに影響を与えたりした場合。
```shell
[root@xxx /home/admin]# kill -9 `pidof observer`
[root@xxx /home/admin]# rm -rf /data/1/$cluster_name
[root@xxx /home/admin]# rm -rf /data/log1/$cluster_name
[root@xxx /home/admin]# rm -rf /home/admin/oceanbase/store/$cluster_name
[root@xxx /home/admin]# rm -rf /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config*
```
ここで、`$cluster_name` はクラスタ名を表します。
**例:**
```shell
[root@xxx /home/admin]# kill -9 `pidof observer`
[root@xxx /home/admin]# rm -rf /data/1/obdemo
[root@xxx /home/admin]# rm -rf /data/log1/obdemo
[root@xxx /home/admin]# rm -rf /home/admin/oceanbase/store/obdemo
[root@xxx /home/admin]# rm -rf /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config*
```
- OceanBaseディレクトリを初期化します。
OceanBaseのデータディレクトリは、通常、独立したディスクに配置することを推奨します。その後、ソフトリンクを使用してソフトウェアのホームディレクトリにリンクします。
<main id="notice" type='explain'>
<h4>説明</h4>
<p>OceanBaseデータベースでは、<code>slog</code> をデータ(data)ディスクから分離することをサポートしています。つまり、<code>slog</code> とデータファイルは同じディスクにある必要はありません。使用するディスクを設定し、<code>slog</code> と <code>clog</code> でSSDハードディスクを共有することも可能です。OceanBaseデータベースのインストールディレクトリに関する詳細情報については、<a href="../../../../700.reference/100.oceanbase-database-concepts/1200.observer-node-architecture/100.observer-installation-directory-structure.md">OBServerノードのインストールディレクトリ構造</a>を参照してください。</p>
</main>
以下のステートメントを使用して `admin` ユーザーに切り替えます:
```shell
[root@xxx /home/admin]# su - admin
```
`admin` ユーザーを使用して以下のコマンドを実行し、関連ディレクトリを作成します:
```shell
mkdir -p /data/1/$cluster_name/{etc3,sstable,slog}
```
```shell
mkdir -p /data/log1/$cluster_name/{clog,etc2}
```
```shell
mkdir -p /home/admin/oceanbase/store/$cluster_name
```
`admin` ユーザーを使用して以下のコマンドを実行し、ソフトリンクを作成します:
```shell
for t in {etc3,sstable,slog};do ln -s /data/1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done
```
```shell
for t in {clog,etc2};do ln -s /data/log1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done
```
ここで、`$cluster_name` はクラスタ名を表します。
**例:**
```shell
[root@xxx /home/admin]# su - admin
-bash-4.2$ mkdir -p /data/1/obdemo/{etc3,sstable,slog}
-bash-4.2$ mkdir -p /data/log1/obdemo/{clog,etc2}
-bash-4.2$ mkdir -p /home/admin/oceanbase/store/obdemo
-bash-4.2$ for t in {etc3,sstable,slog};do ln -s /data/1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done
-bash-4.2$ for t in {clog,etc2};do ln -s /data/log1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done
```
<main id="notice" type='explain'>
<h4>説明</h4>
<p><code>obdemo</code> はクラスタ名で作成されたディレクトリで、カスタマイズ可能です。プロセス起動時に使用されます。</p>
</main>
**チェック結果:**
```shell
-bash-4.2$ cd /home/admin/oceanbase
-bash-4.2$ tree store/
store/
`-- obdemo
|-- clog -> /data/log1/obdemo/clog
|-- etc2 -> /data/log1/obdemo/etc2
|-- etc3 -> /data/1/obdemo/etc3
|-- slog -> /data/1/obdemo/slog
`-- sstable -> /data/1/obdemo/sstable
6 directories, 0 files
```
OceanBaseクラスタを初期化します。
説明
- 例示されているIPアドレスはマスキング処理されており、これはインストール要件ではありません。デプロイ時には、ご自身のマシンの実際のIPアドレスを記入してください。
- OceanBaseデータベースは、指定されたIPv4またはIPv6アドレスのサーバー上でobserverプロセスを起動できます。このドキュメントの例は、IPv4アドレスでobserverプロセスを起動する方法を示しています。IPv6アドレスでobserverプロセスを起動する方法については、コマンドラインを使用した単一レプリカOceanBaseクラスタのデプロイを参照してください。
observerプロセスを起動します。
各ノードの
adminユーザーで、observerプロセスを起動します。注意
2つのレプリカでは、各ノードの起動パラメータは完全に同じではありません。observerを起動する際には、Root Serviceが配置されている2台(または複数台)のマシンを指定するだけでよく、クラスタ作成時にすべてのマシンを指定する必要はありません。クラスタ作成後に新しいマシンを追加することも可能です。
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer {-I $ip | -i $devname} -P $rpc_port -p $sql_port -z $zone_name -d /home/admin/oceanbase/store/$cluster_name -r '$ip:2882:2881' -c $cluster_id -n $cluster_name -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/$cluster_name/etc3;/data/log1/$cluster_name/etc2"パラメータの説明:
パラメータ説明-I|-i-I:起動するノードのIPアドレスを指定します。マルチマシンデプロイメントシナリオでは、127.0.0.1 をターゲットIPとして指定することはできません。ノードを起動するには、特定のIP(例:-I 10.10.10.1)を使用することを推奨します。-i:ネットワークインターフェースカードの名前を指定します。ifconfigコマンドで確認できます。
説明
IPアドレスとネットワークインターフェースカードの名前を同時に指定する(例:
-I 10.10.10.1 -i eth0)ことでノードを起動できますが、この方法は推奨されません。-pサーバーのポート番号を指定します。通常は 2881を指定します。-PRPCポート番号を指定します。通常は 2882を指定します。-nクラスタ名を指定します。カスタマイズ可能ですが、異なるクラスタ間で重複しないようにしてください。 -z起動するobserverプロセスが属するZoneを指定します。 -dクラスタのホームディレクトリを指定します。ディレクトリの初期化時に作成されるディレクトリです。クラスタ名 $cluster_name以外は変更しないでください。-cクラスタIDを指定します。一連の数字で、カスタマイズ可能ですが、異なるクラスタ間で重複しないようにしてください。 -lログレベルを指定します。 -rRSリストを指定します。形式は $ip:2882:2881で、セミコロンで区切り、Root Service情報を示します。-oクラスタ起動パラメータ(構成項目)のリストを指定します。オプションです。複数の構成項目に値を指定でき、複数の値は半角カンマで区切ります。実際のニーズに応じて適切な起動パラメータを選択し、各パラメータに適切な値を指定することで、クラスタのパフォーマンスとリソース利用率を最適化します。以下は一般的なクラスタ起動構成項目です: - cpu_count:システムCPUの総数を設定します。
- system_memory:システムがテナントID
500のテナント用に予約するメモリ容量、つまりOceanBaseデータベース内部で予約するメモリを指定します。マシンのメモリが少ない場合、この値を小さくすることも検討できますが、パフォーマンステスト時にメモリ不足が発生する可能性があるため注意してください。 - memory_limit:利用可能なメモリサイズの合計を設定します。
- datafile_size:データファイルが使用するディスクの空き容量のサイズを設定します。つまりOceanBaseデータベースのデータファイル
sstableのサイズ(初期化時に一度だけ設定)を指定します。/data/1/の空き容量から評価すると、100G以上を推奨します。 - datafile_disk_percentage:データファイルがディスク全体の容量に占める割合。
- datafile_next:データファイルのディスク容量の自動拡張のステップサイズを設定します。
- datafile_maxsize:データファイルのディスク容量の自動拡張の最大サイズを設定します。
- config_additional_dir:ローカルに保存される設定ファイルの複数のディレクトリを設定し、冗長化のため複数の設定ファイルを保存します。
- log_disk_size:Redoログディスクのサイズを設定します。
- log_disk_percentage:Redoログが配置されているディスクの総容量に占める割合を設定します。
- syslog_level:システムログレベルを設定します。
- syslog_io_bandwidth_limit:システムログが占用できるディスクI/O帯域幅の上限を設定します。帯域幅の上限を超えるシステムログは破棄されます。
- max_syslog_file_count:ログファイルの回収前に保持できるログファイルの最大数を設定します。
- enable_syslog_recycle:OBServerノード起動前の古いログを記録するスイッチを有効にするかどうかを設定します。
max_syslog_file_countと組み合わせて使用し、回収ロジックが古いログファイルを考慮するかどうかを決定します。
datafile_size、datafile_disk_percentage、datafile_nextおよびdatafile_maxsizeを組み合わせて使用することで、データファイルのディスク容量の自動拡張を実現できます。詳細については、データファイルのディスク容量の動的拡張の設定を参照してください。その他のクラスタ設定情報については、構成項目一覧 - クラスタレベル構成項目を参照してください。例:
OBServerサーバーでobserverプロセスを起動します。
10.10.10.1と10.10.10.2を例に、observerプロセスを起動します。zone1:
[root@xxx admin]# su - admin -bash-4.2$ cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 10.10.10.1 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r '10.10.10.1:2882:2881;10.10.10.2:2882:2881' -c 10001 -n obdemo -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"zone2:
[root@xxx admin]# su - admin -bash-4.2$ cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 10.10.10.2 -P 2882 -p 2881 -z zone2 -d /home/admin/oceanbase/store/obdemo -r '10.10.10.1:2882:2881;10.10.10.2:2882:2881' -c 10001 -n obdemo -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"以下のコマンドを使用して、observerプロセスが正常に起動したかどうか確認できます:
netstat -ntlpコマンド。2881と2882ポートがリスニングされていれば、プロセスが正常に起動したことを意味します。ps -ef|grep observerコマンドは、observerプロセスの情報を返します。
例:
-bash-4.2$ netstat -ntlp (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:2881 0.0.0.0:* LISTEN 11112/observer tcp 0 0 0.0.0.0:2882 0.0.0.0:* LISTEN 11112/observer ... ... ... ... ... ... -bash-4.2$ ps -ef|grep observer admin 11112 0 40 16:18 ? 00:00:17 /home/admin/oceanbase/bin/observer -I 10.10.10.1 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r 10.10.10.1:2882:2881;10.10.10.2:2882:2881 -c 10001 -n obdemo -o system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2クラスタのbootstrap操作を実行します。
OBClientコマンドを使用して任意のノードに接続します。パスワードは空です。
[root@xxx admin]# obclient -h127.0.0.1 -uroot -P2881 -p****** obclient [(none)]> SET SESSION ob_query_timeout=1000000000; Query OK, 0 rows affected obclient [(none)]> ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '10.10.10.1:2882',ZONE 'zone2' SERVER '10.10.10.2:2882'; Query OK, 0 rows affected注意
このステップでエラーが発生した場合、原因はobserverプロセスの起動パラメータが間違っている、observer関連ディレクトリの権限が間違っている、ログディレクトリの空き容量が一定比率に満たない(データディレクトリと大きなディレクトリを共有しており、容量がデータディレクトリによって占有されている)、ノードの時刻が同期していない、ノードのメモリリソースが不足しているなどが考えられます。これらの問題を調査した後、OceanBaseディレクトリをクリーンアップして最初からデプロイしてください。
クラスタの初期化が成功したかどうかを検証します。
クラスタのbootstrap初期化操作が完了したら、
SHOW DATABASES;コマンドを実行して検証します。クエリ結果にデータベースリストにoceanbaseデータベースが存在する場合、クラスタの初期化が成功したことを確認できます。パスワードを変更します。
sysテナントのrootユーザーパスワードはデフォルトで空です。初期化が成功した後、パスワードを変更してください。ALTER USER root IDENTIFIED BY '******';
ステップ2:アービトレーションサービスのデプロイ
アービトレーションサーバーにOceanBase RPMパッケージをインストールします。
OceanBaseデータベースRPMパッケージが保存されているディレクトリに移動します:
[root@xxx /]# cd $rpm_dirOceanBaseデータベースRPMパッケージをインストールします:
[root@xxx $rpm_dir]# rpm -ivh $rpm_name [--prefix=/home/admin/oceanbase]ここで、
$rpm_dirはRPMパッケージが保存されているディレクトリを表し、$rpm_nameはRPMパッケージの名前を表します。説明
OceanBaseデータベースソフトウェアは、デフォルトで
/home/admin/oceanbaseディレクトリにインストールされます。例:
[root@xxx /home/admin/rpm]# rpm -ivh oceanbase-4.2.0.0-100000052023073123.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:oceanbase-4.2.0.0-100000052023073################################# [100%]アービトレーションサーバープロセスのディレクトリを設定します。
アービトレーションサーバーに、アービトレーションサーバープロセスの
clogディレクトリを作成します。説明
- アービトレーションサーバープロセスを起動する際、
-dで指定したstoreディレクトリには、事前にclogディレクトリを作成しておく必要があります。 storeディレクトリが配置されているディスクの空き容量が完全になくなるのを避けてください。そうでない場合、アービトレーションサーバーの機能に異常が発生する可能性があります。
以下のコマンドを使用して
adminユーザーに切り替えます:[root@xxx /home/admin]# su - adminadminユーザーとして、以下のコマンドを実行して関連ディレクトリを作成します:mkdir -p /home/admin/oceanbase/store/clog- アービトレーションサーバープロセスを起動する際、
アービトレーションサーバープロセスを起動します。
アービトレーションサーバーの
adminユーザーとして、アービトレーションモードでアービトレーションサーバープロセスを起動し、必要な起動パラメータを指定します。起動ステートメントは以下のとおりです:cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -m arbitration -P $rpc_port -d $obdir/store [{-I $ip | -i $devname}] [-l $log_level] [-o "parameters_list"]パラメータの説明:
パラメータ説明-mアービトレーションモードを指定します。値は arbitrationです。-PアービトレーションサーバープロセスのRPCポート番号を指定します。通常は 2882を指定します。-dストレージディレクトリのパスを指定します。通常は /home/admin/oceanbase/storeです。このディレクトリにclogサブディレクトリが作成されていることを確認してください。-I|-iオプション。 -I:起動するノードのIPアドレスを指定します。-i:ネットワークインターフェースカードの名前を指定します。ifconfigコマンドで確認できます。
説明
IPアドレスとネットワークインターフェースカードの名前を同時に指定してノードを起動することも可能です(例:
-I 10.10.10.1 -i eth0)。ただし、この方法は推奨されません。-lログレベルを指定します。オプションです。デフォルト値は WDIAGです。取り得る範囲は{DEBUG,TRACE,WDIAG,EDIAG,INFO,WARN,ERROR'}` です。ログの詳細については、ログレベルを参照してください。-oオプションです。構成パラメータのリストを指定します。複数のパラメータに値を指定する場合は、半角カンマで区切ります。以下はアービトレーションサーバープロセス起動時によく使用されるパラメータです: - cpu_count
- system_memory
- memory_limit
- __easy_memory_limit
- log_disk_size
- log_disk_percentage
- syslog_level
- syslog_io_bandwidth_limit
- max_syslog_file_count
- enable_syslog_recycle
注意
アービトレーションノードのログディレクトリが自動的にクリーンアップされ、ディスクが満杯になるのを防ぐためには、
enable_syslog_recycleをTrueに設定し、max_syslog_file_countを有効な値に設定する必要があります。そうでない場合、ログファイルが次第に増大し、ディスク容量を使い果たす可能性があります。例:
アービトレーションサーバーでアービトレーションサーバープロセスを起動します。
10.10.10.3を例に、アービトレーションサーバープロセスを起動します。-bash-4.2$ cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -m arbitration -P 2882 -d /home/admin/oceanbase/store -I 10.10.10.3 -o "enable_syslog_recycle=True,max_syslog_file_count=100"以下のコマンドを使用して、observerプロセスが正常に起動したかどうかを確認できます:
netstat -ntlpコマンド。2882ポートがリッスンしていれば、プロセスが正常に起動したことを意味します。ps -ef|grep observerコマンドは、observerプロセスの情報を返します。
例:
-bash-4.2$ netstat -ntlp (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:2882 0.0.0.0:* LISTEN 18231/observer ... -bash-4.2$ ps -ef|grep observer admin 18231 0 3 10:33 ? 00:00:00 /home/admin/oceanbase/bin/observer -m arbitration -P 2882 -d /home/admin/oceanbase/store -I 10.10.10.3 ...
ステップ3:クラスタにアービトレーションサービスを追加する
クラスタにアービトレーションサービスを追加するコマンドは以下のとおりです:
ALTER SYSTEM ADD ARBITRATION SERVICE "$arb_server_ip:$arb_server_port";
説明
アービトレーションサーバープロセスのアドレスは、sys テナントの内部テーブルに記録されます。ビューDBA_OB_ARBITRATION_SERVICEで確認できます。このコマンドは同期操作です。
例:
obclient [(none)]> ALTER SYSTEM ADD ARBITRATION SERVICE "10.10.10.3:2882";
Query OK, 0 rows affected
obclient [(none)]> SELECT * FROM oceanbase.DBA_OB_ARBITRATION_SERVICE;
+---------------------+---------------------+-------------------------+---------------------+------------------------------+------+
| CREATE_TIME | MODIFY_TIME | ARBITRATION_SERVICE_KEY | ARBITRATION_SERVICE | PREVIOUS_ARBITRATION_SERVICE | TYPE |
+---------------------+---------------------+-------------------------+---------------------+------------------------------+------+
| 2023-03-06 17:29:36 | 2023-03-06 17:29:36 | default | 10.10.10.3:2882 | NULL | ADDR |
+---------------------+---------------------+-------------------------+---------------------+------------------------------+------+
1 row in set
ステップ4:sysテナントでアービトレーションサービスを有効にする
テナント作成時にアービトレーションサービスを有効にすることも可能です。新規テナント作成時の詳細については、CREATE TENANTを参照してください。
テナント作成時にアービトレーションサービスを有効にしなかった場合でも、テナント作成後にアービトレーションサービスを有効にすることができます。
以下のステートメントを実行して、既存のテナントでアービトレーションサービスを有効にします。
ALTER TENANT $tenant_name [SET] enable_arbitration_service = true;
例:
クラスタのsysテナントでアービトレーションサービスを有効にします。
obclient [(none)]> ALTER TENANT sys SET enable_arbitration_service = true;
Query OK, 0 rows affected
ステップ5:テナントのアービトレーションサービス状態を確認する
テナントのアービトレーションサービスが有効かどうかを確認します。
ビュー
DBA_OB_TENANTSを使用してテナント情報を照会し、arbitration_service_status列でアービトレーションサービスの起動状態を確認できます。arbitration_service_statusの取り得る値は以下のとおりです:ENABLED:該当テナントのアービトレーションサービスが有効であることを示します。ENABLING:該当テナントのアービトレーションサービスの起動中であることを示します。DISABLED:該当テナントのアービトレーションサービスが無効であることを示します。DISABLING:該当テナントのアービトレーションサービスの無効化中であることを示します。
例:
obclient [(none)]> SELECT TENANT_ID,TENANT_NAME,ARBITRATION_SERVICE_STATUS FROM oceanbase.DBA_OB_TENANTS WHERE tenant_name = 'sys'; +-----------+-------------+----------------------------+ | TENANT_ID | TENANT_NAME | ARBITRATION_SERVICE_STATUS | +-----------+-------------+----------------------------+ | 1 | sys | ENABLED | +-----------+-------------+----------------------------+ 1 row in set現在のアービトレーションサービスが利用可能かどうかを確認します。
テナントのアービトレーションサービスが正常に有効になると、そのテナントでは有効になった時点で作成されたすべてのログストリームでアービトレーションサービスを利用できることになります。ただし、有効化後に新しく作成されたログストリームは、アービトレーションサービスがない場合があります。これは、ログストリームの作成が非厳密モードで実行されるため、アービトレーションサービスが必ずしも正常に作成されるとは限らないからです。このような場合、ユーザーは以下のSQLステートメントを使用して、そのテナントのすべてのログストリームにアービトレーションサービスが存在するかどうかを確認できます。
##テナント内のアービトレーションレプリカがないログストリームのリストを取得する## (SELECT distinct ls_id FROM GV$OB_LOG_STAT WHERE tenant_id = xxx) except (SELECT ls_id FROM GV$OB_LOG_STAT WHERE tenant_id = xxx and role = 'LEADER' and arbitration_member = "$arb_server_ip:$arb_server_port");例:
sysテナント内のアービトレーションレプリカがないログストリームのリストを照会した結果、空集合が返された場合、現在のテナントのアービトレーションサービスは利用可能な状態であることを示します。obclient [oceanbase]> (SELECT distinct ls_id FROM GV$OB_LOG_STAT WHERE tenant_id = 1) except (SELECT ls_id FROM GV$OB_LOG_STAT WHERE tenant_id = 1 and role = 'LEADER' and arbitration_member = "10.10.10.3:2882"); Empty set
次のステップ
クラスタの作成が完了したら、ビジネスニーズに応じてユーザーテナントを作成できます。
コマンドラインを使用してユーザーテナントを作成する詳細については、テナントの作成を参照してください。