本記事では、コマンドラインを使用して3レプリカのOceanBaseクラスタをデプロイする方法について説明します。
前提条件
OceanBaseデータベースをインストールする前に、以下の事項を確認してください。
- OBServerサーバーの関連設定が完了していること。詳細については、サーバー設定、(オプション) クロックソースの設定、oatcliを使用したOBServerサーバーの初期化を参照してください。
- OBServerサーバーに
adminユーザーが作成されていること。 - OceanBaseデータベースのRPMパッケージを取得済みであること。詳細については、インストールパッケージの準備を参照してください。
手順
ステップ1:RPMパッケージのインストール
OceanBaseデータベースのRPMパッケージをインストールします。
ここで、
$rpm_dirはRPMパッケージが保存されるディレクトリを表し、$rpm_nameはRPMパッケージの名前を表します。[root@xxx /]# cd $rpm_dir [root@xxx $rpm_dir]# rpm -ivh $rpm_name説明
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
ステップ2:ディレクトリの設定
OceanBaseディレクトリをクリーンアップします(初回デプロイ時は不要)。
以前のOceanBase環境をクリーンアップする場合、またはOceanBaseのインストール・デプロイ中に問題が発生し、環境が乱れたりファイルが次回のインストールに影響を及ぼしたりした場合は、古いOceanBaseディレクトリを直接クリーンアップすることを選択します。ここで、
$cluster_nameはクラスタ名です。[root@xxx admin]# su - admin -bash-4.2$ kill -9 `pidof observer` -bash-4.2$ rm -rf /data/1/$cluster_name -bash-4.2$ rm -rf /data/log1/$cluster_name -bash-4.2$ rm -rf /home/admin/oceanbase/store/$cluster_name /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config* -bash-4.2$ ps -ef|grep observer例:
[root@xxx admin]# su - admin -bash-4.2$ kill -9 `pidof observer` -bash-4.2$ rm -rf /data/1/obdemo -bash-4.2$ rm -rf /data/log1/obdemo -bash-4.2$ rm -rf /home/admin/oceanbase/store/obdemo /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config* -bash-4.2$ ps -ef|grep observerOceanBaseディレクトリを初期化します。
OceanBaseのデータディレクトリは通常、独立したディスクに配置し、ソフトリンクを使用してソフトウェアのホームディレクトリにリンクすることを推奨します。ここで、
$cluster_nameはクラスタ名です。説明
OceanBaseデータベースでは、
slogをデータ(data)ディスクから分離することがサポートされています。つまり、slogとデータファイルは同じディスクに配置する必要はありません。使用するディスクを設定し、slogとclogでSSDハードディスクを共有することも可能です。OceanBaseデータベースのインストールディレクトリに関する詳細情報については、OBServerノードのインストールディレクトリ構造を参照してください。[root@xxx admin]# su - admin -bash-4.2$ mkdir -p /data/1/$cluster_name/{etc3,sstable,slog} -bash-4.2$ mkdir -p /data/log1/$cluster_name/{clog,etc2} -bash-4.2$ mkdir -p /home/admin/oceanbase/store/$cluster_name -bash-4.2$ for t in {etc3,sstable,slog};do ln -s /data/1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done -bash-4.2$ for t in {clog,etc2};do ln -s /data/log1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done例:
[root@xxx 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説明
obdemoはクラスタ名で作成されるディレクトリで、カスタマイズ可能です。プロセス起動時に使用されます。チェック結果:
-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
ステップ3:OceanBaseクラスタの初期化
説明
- 例示されているIPアドレスはマスキング処理されており、これはインストール要件ではありません。デプロイ時にはご自身のマシンの実際のIPアドレスを記入してください。
- OceanBaseデータベースは、指定されたIPv4またはIPv6アドレスのサーバー上でobserverプロセスを起動できます。このドキュメントの例は、IPv4アドレス上でobserverプロセスを起動する方法を示しています。IPv6アドレス上でobserverプロセスを起動する方法については、コマンドラインを使用した単一レプリカOceanBaseクラスタのデプロイを参照してください。
ノードのobserverプロセスを起動します。
各ノードの
adminユーザーとして、observerプロセスを起動します。注意
3レプリカ構成では、各ノードの起動パラメータは完全には同じではありません。observerを起動する際には、RootServiceが配置されている3台(またはそれ以上)のマシンを指定するだけでよく、クラスタ作成時にすべてのマシンを指定する必要はありません。クラスタ作成後に新しいマシンを追加することも可能です。
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を組み合わせて使用することで、データファイルのディスク容量の自動拡張を実現できます。詳細については、データファイルのディスク容量の動的拡張の設定を参照してください。その他のクラスタ設定情報については、構成項目一覧 - クラスタレベル構成項目を参照してください。例:
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;10.10.10.3: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;10.10.10.3:2882:2881' -c 10001 -n obdemo -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"zone3:
[root@xxx admin]# su - admin -bash-4.2$ cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 10.10.10.3 -P 2882 -p 2881 -z zone3 -d /home/admin/oceanbase/store/obdemo -r '10.10.10.1:2882:2881;10.10.10.2:2882:2881;10.10.10.3: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 11114/observer tcp 0 0 0.0.0.0:2882 0.0.0.0:* LISTEN 11114/observer ... ... ... ... ... ... -bash-4.2$ ps -ef|grep observer admin 11114 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;10.10.10.3: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> SET SESSION ob_query_timeout=1000000000; Query OK, 0 rows affected obclient> ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '10.10.10.1:2882',ZONE 'zone2' SERVER '10.10.10.2:2882',ZONE 'zone3' SERVER '10.10.10.3:2882'; Query OK, 0 rows affected注意
このステップでエラーが発生した場合、その原因はobserverプロセスの起動パラメータが誤っている、observer関連ディレクトリの権限が正しくない、ログディレクトリの空き容量が一定の割合に満たない(データディレクトリと大容量のディレクトリを共有しており、容量がデータディレクトリによって占有されている)、ノードの時刻が同期していない、ノードのメモリリソースが不足しているなどが考えられます。これらの問題点を調査した上で、OceanBaseディレクトリをクリーンアップして最初からデプロイしてください。
クラスタの初期化が成功したことを検証します。
クラスタのbootstrap初期化操作が完了したら、
SHOW DATABASES;コマンドを実行して検証します。クエリ結果にデータベースリストにoceanbaseデータベースが存在する場合、クラスタの初期化が成功したことを確認できます。パスワードを変更します。
sysテナントのrootユーザーのパスワードはデフォルトで空です。初期化が成功した後、パスワードを変更してください。ALTER USER root IDENTIFIED BY '******';
次のステップ
クラスタの作成が完了したら、ビジネスニーズに応じてユーザーテナントを作成できます。
コマンドラインを使用してユーザーテナントを作成する詳細については、テナントの作成を参照してください。