本記事では、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以降)
利用可能なメモリは3 GB以上である必要があります。
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 Libs)は、OceanBaseソフトウェアダウンロードセンターからダウンロードすることができます。ダウンロード完了後、インストールパッケージを自分のマシンにコピーします。最新バージョンのインストールパッケージを使用することを推奨します。インストールパッケージのあるディレクトリで、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/)の空きディスク容量は15 GB以上でなければいけません。data_dir オプション /var/lib/oceanbase/data SSTableなどのデータを保存するディレクトリを設定します。独立したディスクへの設定を推奨します。 説明
データディスク(デフォルトは
/var/lib/oceanbase/)の空きディスク容量は15 GB以上でなければいけません。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 オプション 0 M 予約済みのシステムメモリ。このパラメータ値は memory_limitのメモリを消費します。設定されていない場合、OceanBaseデータベースは自動的に適応します。log_disk_size オプション 0 Redoログディスクのサイズを設定します。設定されていない場合、 log_disk_percentageの構成パラメータに従います。詳細については、log_disk_sizeおよび log_disk_percentageを参照してください。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データベースのデータを削除する
ステップ1の実行後、ご利用の環境にある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データベースへの接続を参照してください。