OceanBaseは単一レプリカデプロイをサポートしており、単一レプリカOceanBaseクラスタは拡張(ノードの追加)も可能なため、クラスタとも呼ばれます。
このセクションでは、コマンドラインを使用して単一レプリカ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データベースでは、
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"パラメータの説明:
パラメータ説明-6IPv6を使用してobserverプロセスを起動する場合、 -6を指定する必要があります。-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情報を示します。注意
IPv6を使用してobserverプロセスを起動する場合、IPアドレスは
[]で囲む必要があります。-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を組み合わせて使用することで、データファイルの自動拡張を実現できます。詳細については、データファイルの動的拡張の設定を参照してください。その他のクラスタ設定情報については、構成項目の概要 - クラスタレベル構成項目を参照してください。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"クラスタのブートストラップ操作を実行します。
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ディレクトリをクリーンアップしてやり直してください。
クラスタの初期化が成功したことを検証します。
クラスタのブートストラップ初期化操作が完了したら、
SHOW DATABASES;コマンドを実行して検証します。クエリ結果にデータベースリストにoceanbaseデータベースが存在する場合、クラスタの初期化が成功したことを確認できます。パスワードを変更します。
sysテナントのrootユーザーパスワードはデフォルトで空です。初期化が成功した後、パスワードを変更してください。ALTER USER root IDENTIFIED BY '******';
次のステップ
クラスタの作成が完了したら、ビジネスニーズに応じてユーザーテナントを作成できます。
コマンドラインを使用してユーザーテナントを作成する詳細については、テナントの作成を参照してください。