本記事では、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データベースの管理
現在、systemdを使用してOceanBaseデータベースの起動(start)、停止(stop)、および状態(status)の確認のみがサポートされています。
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データベースへの接続を参照してください。