OceanBaseは1レプリカデプロイをサポートしています。1レプリカOceanBaseクラスタは拡張(ノードの追加)が可能なため、クラスタとも呼ばれています。
この記事では、コマンドラインを使用して1レプリカ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インスタンスはOracleまたはMySQLと互換性があります。Oracleテナントの場合、Javaプログラムで接続するには、OceanBaseが提供するJavaドライバーファイル(oceanbase-client-*.jar)を使用する必要があります。コマンドラインからOracleテナントにアクセスするには、さらにOBClientクライアントをインストールする必要があります。
OBClientはOceanBaseのコマンドラインクライアントで、OceanBaseのMySQLテナントとOracleテナントにアクセスできます。
例:
[root@xxx $rpm_dir]# rpm -ivh obclient-1.2.6-20210510164331.el7.alios7.x86_64.rpm ##インストールの成功確認## [root@xxx $rpm_dir]# 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データベースは、V4.3.0バージョンから、
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アドレスを入力してください。
observerプロセスを起動します。
注意
observerプロセスは
adminユーザーで起動する必要があります。OceanBaseデータベースは、指定されたノードのIPアドレスとしてIPv4またはIPv6アドレスを使用したobserverプロセスの起動をサポートします。
IPv4を使用したobserverプロセスの起動:
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"IPv6を使用したobserverプロセスの起動:
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -6 {-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"パラメータの説明:
パラメータ 説明 -6observerプロセスをIPv6で起動する場合は、 -6を指定する必要があります。-I|-i-I:起動するノードのIPアドレスを指定します。マルチマシンデプロイシナリオでは、127.0.0.1をターゲットIPアドレスとして指定することはできません。IPアドレス(例:-I 10.10.10.1)を指定してノードを起動することを推奨します。-i:NIC名を指定します。ifconfigコマンドで確認できます。
説明
IPアドレスとNIC名を同時に指定して(例:
-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情報を表します。注意
IPv6を使用してobserverプロセスを起動する際は、IPアドレスを
[]で囲む必要があります。-oクラスタ起動パラメータ(構成パラメータ)リストを指定します。オプションです。複数の構成パラメータに値を指定できます。複数の構成パラメータの値はカンマ(,)で区切ります。必要に応じて、適切な起動パラメータを選択し、各パラメータに適切な値を指定して、クラスタのパフォーマンスとリソース利用率を最適化してください。以下はクラスタ起動時によく使用される構成パラメータです: - cpu_count:システムのCPU数の合計を設定します。
- system_memory:システムがテナントID
500のテナント用に予約するメモリ容量、つまりOceanBaseデータベース内部の予約メモリを指定します。マシンのメモリが少ない場合は、この値を小さくすることを検討できます。ただし、パフォーマンステスト時にメモリ不足が発生する可能性があることに注意してください。 - memory_limit:利用可能なメモリサイズの合計を設定します。
- datafile_size:データファイルが使用するディスクの使用可能容量のサイズを設定します。つまり、OceanBaseデータベースのデータファイル
sstableのサイズを指定します(最初に初期化される)。/data/1/の空き容量に基づいて、100 G以上を推奨します。 - 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を組み合わせて使用することで、ディスクデータファイルの自動拡張を実現できます。詳細については、ディスクデータファイルの動的拡張の設定を参照してください。クラスタ設定に関する詳細は、構成パラメータの概要 - クラスタレベルの構成パラメータを参照してください。IPv4を使用したobserverプロセスの起動例:
[root@xxx /home/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' -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 11111/observer tcp 0 0 0.0.0.0:2882 0.0.0.0:* LISTEN 11111/observer ... ... ... ... ... ... -bash-4.2$ ps -ef|grep observer admin 11111 0 43 17:58 ? 00:00:14 /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 -c 10001 -n obdemo -o system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2IPv6を使用したobserverプロセスの起動例:
[root@xxx /home/admin]# su - admin-bash-4.2$ cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -6 -I xxxx:xxxx:xxxx:xxxx:xxx:xxxx:xxxx:ebd8 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r '[xxxx:xxxx:xxxx:xxxx:xxx:xxxx:xxxx:ebd8]: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クライアントを介して、起動済みのobserverプロセスに接続します。パスワードは空です。
[root@xxx /home/admin]# obclient -h127.0.0.1 -uroot -P2881 -p******SQLの最大実行時間を設定します。
obclient [(none)]> SET SESSION ob_query_timeout=1000000000;Root Serviceマシンのリストを指定して、クラスタを起動します。
IPv4アドレスを使用してRoot Serviceマシンのリストを指定し、クラスタを起動します。
obclient [(none)]> ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '10.10.10.1:2882';IPv6アドレスを使用してRoot Serviceマシンのリストを指定し、クラスタを起動します。
obclient [(none)]> ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '[xxxx:xxxx:xxxx:xxxx:xxx:xxxx:xxxx:ebd8]:2882';
注意
この手順でエラーが発生した場合、その原因として、observerプロセスの起動パラメータの誤り、OBServerノードの関連ディレクトリのパーミッションの問題、ログディレクトリの空き容量が一定の割合を下回っている(データディレクトリと共通の大容量のディレクトリを使用していて、容量がデータディレクトリに占有されている)、ノードのメモリリソースの不足などが考えられます。これらの問題点を先に調査してから、OceanBaseディレクトリをクリーンアップして、最初からやり直してください。
クラスタの初期化成功を検証します。
クラスタのbootstrap初期化操作が完了してから、
SHOW DATABASES;コマンドを実行して検証します。クエリ結果のデータベースリストにoceanbaseデータベースが表示されれば、クラスタの初期化は成功しています。パスワードを変更します。
sysテナントのrootユーザーのパスワードはデフォルトで空です。初期化が成功してから、パスワードを変更してください。ALTER USER root IDENTIFIED BY '******';
次の操作
クラスタの作成後、ビジネスのニーズに応じてユーザーテナントを作成することができます。
コマンドラインを使用したユーザーテナントの作成の詳細情報については、テナントの作成を参照してください。