本記事では、systemdを使用して単一ノードのOceanBaseデータベースをデプロイおよび管理する方法について説明します。
注意
このドキュメントの操作は学習またはテストシナリオにのみ適用されます。本番環境には適用しないでください。
前提条件
本記事の操作を実行する前に、以下の事項を確認してください:
お使いの環境がRPMプラットフォームシステムであること。現在サポートされているシステムは以下の通りです。
Anolis OS 8.X バージョン(カーネル Linux 4.19 バージョン以上)
CentOS Linux 8.X バージョン(カーネル Linux 4.19 バージョン以上)
Debian 10、11、12 バージョン(カーネル Linux 4.19 バージョン以上)
openEuler 22.03 および 24.03 バージョン(カーネル Linux 5.10.0 バージョン以上)
Ubuntu 18.04、20.04、22.04 バージョン(カーネル Linux 4.19 バージョン以上)
現在の環境で利用可能なメモリが3GBを超えていること。
環境にjqコマンドラインツールがインストールされており、systemdがシステムおよびサービスマネージャーとして正しく設定されていること。
環境にデータベース接続ツール(MySQLクライアントまたはOBClientクライアント)がインストールされていること。
部署予定のOceanBaseデータベースがV4.2.2以降のバージョンであること。
お使いのユーザーがsudoコマンドを実行する権限を持っていること。
OceanBaseデータベースのデプロイ
ステップ1:OceanBaseデータベースをインストールする
使用環境が外部ネットワークに接続できるかどうかに応じて、オンラインインストールとオフラインインストールの2種類のインストール方法があります。
OceanBaseイメージソースの追加
[admin@test001 ~]$ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repoOceanBaseデータベースのインストール
[admin@test001 ~]$ sudo yum install oceanbase-ce oceanbase-ce-libs obclientこのコマンドはデフォルトで最新バージョンをデプロイします。バージョン番号を指定することで特定のバージョンをインストールできます。例えば、
yum install oceanbase-ce-4.2.2.0コマンドを使用してOceanBaseデータベースV4.2.2バージョンをインストールできます。最新バージョンのインストールを推奨します。
OceanBaseソフトウェアダウンロードセンターから、必要なバージョンのOceanBaseデータベースおよび対応する依存ライブラリ(
OceanBase Libs)をダウンロードします。ダウンロードが完了したら、インストールパッケージをマシンにコピーします。最新バージョンのインストールパッケージの使用を推奨します。インストールパッケージがあるディレクトリで、rpmコマンドを実行してOceanBaseデータベースをインストールします。
[admin@test001 ~]$ sudo rpm -ivh oceanbase-ce-*.rpm
ステップ2:OceanBaseデータベースを起動する
OceanBaseデータベースをインストールした後、以下の手順に従ってOceanBaseデータベースを起動できます。
(オプション)設定ファイルを変更する
この手順に従って設定ファイルを変更できます。変更しない場合は、設定ファイル内のデフォルト設定がデプロイに使用されます。
[admin@test001 ~]$ sudo vim /etc/oceanbase.cnfこのファイルに含まれるパラメータの内容は以下のとおりです:
ip=127.0.0.1 mysql_port=2881 rpc_port=2882 obshell_port=2886 root_pwd="" redo_dir=/var/lib/oceanbase/redo data_dir=/var/lib/oceanbase/data datafile_size=2G cpu_count=16 memory_limit=6G system_memory=1G log_disk_size=13G説明
この設定ファイルに他のパラメータを追加できます。詳細なパラメータの紹介については、パラメータ一覧を参照してください。
現在、OBServerノードのZone(デフォルトは
zone1)は変更できません。
設定ファイル内のパラメータの紹介は以下の表のとおりです:
パラメータ必須デフォルト値説明ip オプション 127.0.0.1 OBServerノードのIPアドレスです。IPv6アドレスへの設定は現在サポートされていません。 mysql_port オプション 2881 OceanBaseデータベースSQLサービスプロトコルのポート番号。 rpc_port オプション 2882 OceanBaseデータベースリモートアクセスプロトコルのポート番号。 obshell_port オプション 2886 OceanBaseデータベース運用管理ポート。 root_pwd オプション デフォルトは空文字列 OceanBaseクラスタのスーパーユーザー( root@sys)のパスワードです。複雑なパスワードを設定することを推奨します。redo_dir オプション /var/lib/oceanbase/redo clog、ilog、slogのディレクトリです。独立したディスクに配置することを推奨します。 説明
データディスク(デフォルトは
/var/lib/oceanbase/)の利用可能なディスク容量は15GB以上である必要があります。data_dir オプション /var/lib/oceanbase/data SSTableなどのデータを格納するディレクトリを設定します。独立したディスクに配置することを推奨します。 説明
データディスク(デフォルトは
/var/lib/oceanbase/)の利用可能なディスク容量は15GB以上である必要があります。datafile_size オプション 0 対応ノードのデータファイル(block_file)サイズを指定します。設定されていない場合は datafile_disk_percentageパラメータに準じます。詳細についてはdatafile_sizeおよびdatafile_disk_percentageを参照してください。cpu_count オプション 0 OceanBaseデータベースが使用可能なCPUの総数です。0に設定した場合は自動検出されます。 memory_limit オプション 0 observerプロセスが環境から取得できる最大メモリです。設定されていない場合は memory_limit_percentageパラメータに準じます。パラメータの詳細についてはmemory_limitおよびmemory_limit_percentageを参照してください。system_memory オプション 0M 予約済みのシステムメモリです。このパラメータ値は memory_limitのメモリを占有します。設定されていない場合、OceanBaseデータベースは自動調整します。log_disk_size オプション 0 Redoログディスクのサイズを設定します。設定されていない場合は log_disk_percentageパラメータに準じます。詳細についてはlog_disk_sizeおよび"log_disk_percentage"(../../../700.reference/800.configuration-items-and-system-variables/100.system-configuration-items/300.cluster-level-configuration-items/12600.log_disk_percentage.md)を参照してください。OceanBaseのインストールディレクトリ(デフォルトは
/home/admin/oceanbase)配下のetcディレクトリの所有者を変更する[admin@test001 ~]$ sudo chown root /home/admin/oceanbase/etcOceanBaseデータベースを起動する
[admin@test001 ~]$ sudo systemctl start oceanbaseOceanBaseデータベースの起動状態を確認する
[admin@test001 ~]$ sudo systemctl status oceanbase状態が
Service is readyと表示されたら、OceanBaseデータベースが正常に起動したことを意味します。
ステップ3:OceanBaseデータベースに接続する
ここでは、OBClientを使用してOceanBaseデータベースに接続する例を示します。コマンドは以下のとおりです:
[admin@test001 ~]$ obclient -h<IP> -uroot@sys -P<Port> -p<Passwd> -A oceanbase
パラメータの説明:
-h:OceanBaseデータベースの接続IPアドレスを指定します。systemdで起動したOceanBaseデータベースのデフォルトIPは
127.0.0.1です。-u:OceanBaseデータベースの接続アカウントを指定します。形式は
ユーザー名@テナント名です。MySQLテナントの管理者ユーザー名はデフォルトでrootです。-P:OceanBaseデータベースの接続ポートを指定します。これは
/etc/oceanbase.cnfファイル内のmysqlPortの値です。-p:OceanBaseデータベースの接続パスワードを指定します。これは
/etc/oceanbase.cnfファイル内のrootPwdの値です。接続コマンドに直接指定するのではなく、コマンド実行後のプロンプトで入力することを推奨します。この方法では、パスワードが表示されないため、より安全です。-A:OBClientがデータベースに接続する際に統計情報を自動取得しないことを示します。
oceanbase:アクセスするデータベースの名前です。業務用データベース名に変更できます。
OceanBaseデータベースの管理
現在、OceanBaseデータベースの起動(start)、停止(stop)、およびステータス(status)の確認は、systemdを介してのみサポートされています。
OceanBaseデータベースの状態を確認する
以下のコマンドを実行して、OceanBaseデータベースの状態を確認できます。
[admin@test001 ~]$ sudo systemctl status oceanbase
OceanBaseデータベースの状態には、以下のような場合があります:
Activeがactive (running)と表示され、StatusがService is runningと表示されている場合、OceanBaseデータベースの起動中を意味します。Activeがactive (running)と表示され、StatusがService is readyと表示されている場合、OceanBaseデータベースの起動に成功しました。Activeがinactive (dead)と表示されている場合、サービスが停止したことを意味し、OceanBaseデータベースも停止しています。Activeがfailedと表示されている場合、サービスでエラーが発生したことを意味します。ログを確認してトラブルシューティングを行う必要があります。
OceanBaseデータベースの詳細ログを確認する
OceanBaseデータベースの状態に異常が発生した場合、以下のコマンドを実行して、OceanBaseデータベースの詳細情報を確認できます。
[admin@test001 ~]$ sudo journalctl -u oceanbase
Systemdは実際には、OceanBaseデータベースの管理ツールであるobshellにリクエストを送信して通信し、OBServerノードの状態を実際に制御します。ログには多くのtrace idが記録されており、obshellのインターフェースとtrace idを組み合わせてトラブルシューティングを行えます。コマンドは以下のとおりです:
[admin@test001 ~]$ curl -X GET http://<ip>:<obshell_port>/api/v1/task/dag/<trace id> | jq
エラーが observer start または bootstrap フェーズで発生した場合は、OBServerノードのログも確認する必要があります。デフォルトのディレクトリは /home/admin/oceanbase/log です。
よくある質問
ERROR: current user(uid=0) that starts observer is not the same with the original one(uid=500)
このエラーが発生する一般的な原因は、OceanBaseデータベースのインストールディレクトリ(デフォルトは
/home/admin/oceanbase)配下のetcディレクトリの所有権が現在のユーザーと一致しないためです。以下のコマンドを実行して解決できます:chown root /home/admin/oceanbase/etcerrcode=-4290, file="ob_server_log_block_mgr.cpp", line_no=1127, info="::fallocate failed"
このエラーが発生する一般的な原因は、OceanBaseデータベースのデータディスクディレクトリ(デフォルトは
/var/lib/oceanbase/)のディスク容量が不足しているためです。データディレクトリのディスク容量を増やすことができます。
OceanBaseデータベースの削除
systemdで起動されたOceanBaseデータベースを削除する手順は以下のとおりです。
OceanBaseデータベースを停止します。
[admin@test001 ~]$ sudo systemctl stop oceanbaseOceanBaseデータベースをアンインストールします。
OceanBaseデータベースソフトウェアパッケージを削除します。
オンラインインストールの場合、以下のコマンドを実行します:
[admin@test001 ~]$ sudo yum erase packagepackageは削除するソフトウェアパッケージ名に置き換えてください。パッケージ名はyum list | grep oceanbaseコマンドで確認できます。オフラインインストールの場合、以下のコマンドを実行します:
[admin@test001 ~]$ sudo rpm -e packagepackageは削除するソフトウェアパッケージ名に置き換えてください。パッケージ名はrpm -qa | grep oceanbaseコマンドで確認できます。(オプション)OceanBaseデータベースのデータを削除します。
最初のステップを実行すると、環境内のOceanBaseデータベースはアンインストールされますが、データは残ります。後でOceanBaseデータベースを再デプロイした際に、このデータを表示および操作できます。
このステップでOceanBaseデータベースのデータを削除すると、デプロイされたOceanBaseデータベースは完全にアンインストールされます。
OceanBaseデータベースのインストールディレクトリを削除します。
[admin@test001 ~]$ sudo rm -rf /home/admin/oceanbaseOceanBaseデータベースのデータディレクトリを削除します。
[admin@test001 ~]$ sudo rm -rf /var/lib/oceanbase
関連ドキュメント
クラスタにログインして
ALTER USERコマンドを実行することで、ユーザーのパスワードを変更できます。コマンドの詳細については、ALTER USERを参照してください。OceanBaseデータベースをデプロイした後、OceanBaseデータベースへの接続方法の詳細については、OceanBaseデータベースへの接続を参照してください。