本記事では、Dockerコンテナを使用して単一ノードのOceanBaseデータベースをデプロイする方法について説明します。
注意
このドキュメントで説明する操作は学習またはテストシナリオにのみ適用されます。本番環境には適用しないでください。
前提条件
本記事の操作を実行する前に、以下の事項を確認してください:
Dockerがインストール済みで、Dockerサービスが起動していること。詳細な操作手順については、Dockerドキュメントを参照してください。
説明
x86アーキテクチャのMACマシンでは、V4.9.0以下のDockerバージョンのみがOceanBaseデータベースのデプロイに対応しています。リンク をクリックしてDockerをダウンロードしてください。
マシンがソフトウェアおよびハードウェア要件を満たしていること。詳細については、ソフトウェアおよびハードウェア要件を参照してください。
OceanBaseデータベースのデプロイ
(オプション)ステップ1:OceanBaseデータベースイメージの取得
以下のコマンドを実行して、OceanBaseデータベースに必要なイメージを取得します。
OceanBaseデータベース関連イメージの検索
[admin@test001 ~]$ sudo docker search oceanbaseOceanBaseデータベースの最新イメージの取得
[admin@test001 ~]$ sudo docker pull oceanbase/oceanbase-ce説明
Dockerイメージの取得に失敗した場合は、quay.ioまたはghcr.ioリポジトリからイメージを取得することもできます。上記の取得コマンドにおいて、
oceanbase/oceanbase-ceをquay.io/oceanbase/oceanbase-ceまたはghcr.io/oceanbase/oceanbase-ceに置き換えるだけです。例えば、sudo docker pull quay.io/oceanbase/oceanbase-ceを実行すると、quay.ioからイメージを取得します。このステップのコマンドにおけるリポジトリアドレスを変更した後、ステップ2のコマンドでも同様にリポジトリアドレスを置き換える必要があります。2つのコマンドで使用するリポジトリは統一しておく必要があります。
上記のコマンドはデフォルトで最新バージョンを取得します。実際のニーズに応じて、dockerhub、quay.io または ghcr.ioからバージョンを選択できます。
ステップ2:OceanBaseデータベースインスタンスを起動する
以下のコマンドを実行して、OceanBaseデータベースインスタンスを起動します。
[admin@test001 ~]$ sudo docker run -p 2881:2881 -p 2886:2886 -v $PWD/ob:/root/ob -v $PWD/obd/cluster:/root/.obd/cluster --name obstandalone -e MODE=NORMAL -e OB_TENANT_PASSWORD=***** -d oceanbase/oceanbase-ce
[admin@test001 ~]$ sudo docker run -p 2881:2881 -p 2886:2886 -v $PWD/ob:/root/ob -v $PWD/obd/cluster:/root/.obd/cluster --name obstandalone -e MODE=MINI -e OB_TENANT_PASSWORD=***** -d oceanbase/oceanbase-ce
クイックスタートモードでは、テナントおよびリソース関連の環境変数を設定しても、OB_TENANT_PASSWORD と OB_SYS_PASSWORD を除き、他の変数は有効になりません。作成されるユーザーテナント名はデフォルトで test となり、これが唯一の許容される値です。
[admin@test001 ~]$ sudo docker run -p 2881:2881 -p 2886:2886 -v $PWD/ob:/root/ob -v $PWD/obd/cluster:/root/.obd/cluster --name obstandalone -e MODE=SLIM -d oceanbase/oceanbase-ce
例におけるオプションの役割は以下のとおりです:
-pは、コンテナのポートをホストのポートにマッピングするために使用されます。この例では、コンテナ内の2881ポートと2886ポートをそれぞれホストの2881ポートと2886ポートにマッピングします。-vは、コンテナとホスト間でファイルやディレクトリを共有し、データの永続化や設定の共有を実現するために使用されます。デフォルトでは、システムはコンテナの/root/obディレクトリにOceanBaseデータベースをデプロイし、その設定は/root/.obd/clusterに保存されます。このオプションを使用することで、ホスト上にデータを永続化できます。-vオプションを使用して、実行するSQLをマウントして実行することもできます。例を以下に示します。{init_sql_folder_path}を実際の初期化SQLファイルのパスに変更する必要があります。[admin@test001 ~]$ sudo docker run -p 2881:2881 -p 2886:2886 -v {init_sql_folder_path}:/root/boot/init.d --name obstandalone -e MODE=SLIM -d oceanbase/oceanbase-ce--nameはDockerコンテナ名を設定するために使用されます。例では、obstandaloneという名前のDockerコンテナを作成します。-eは環境変数を設定するために使用されます。例では、MODEはOceanBaseデータベースの起動モードを設定し、OB_TENANT_PASSWORDはOceanBaseデータベースのroot@testユーザーのパスワードを設定します。詳細な環境変数については、後述の 設定可能な環境変数 を参照してください。
説明
Docker起動時、enable_rich_error_msg パラメータがデフォルトで有効になっています。エラーが発生した場合、traceコマンドを使用して詳細なエラー情報を取得できます。
起動には約2~5分かかります。以下のコマンドを実行し、boot success! が返された場合、起動に成功したことを意味します。
[admin@test001 ~]$ sudo docker logs obstandalone | tail -1
boot success!
ステップ3:OceanBaseデータベースインスタンスへの接続
oceanbase-ceイメージには、obd(OceanBase Deployer、OceanBaseのインストールおよびデプロイツール)とOBClient(OceanBaseコマンドラインクライアント)がインストールされています。コンテナ内でobdコマンドとOBClientクライアントを使用してインスタンスを管理・接続するか、ホストシステムのローカルOBClientまたはMySQLクライアントを使用してOceanBaseデータベースインスタンスに接続することもできます。
コンテナ内からの接続
Dockerコンテナに入る
[admin@test001 ~]$ sudo docker exec -it obstandalone bashクラスタの詳細を確認する
# クラスタリストを確認する obd cluster list # obclusterクラスタの詳細を確認する obd cluster display obclusterクラスタに接続する
obclient -h127.0.0.1 -uroot@sys -A -Doceanbase -P2881 -p
ホストシステムのローカルクライアントを使用した接続
ホストシステムのローカルOBClientまたはMySQLクライアントを使用してOceanBaseデータベースインスタンスに接続することもできます。例:
[admin@test001 ~]$ obclient -uroot@sys -h127.0.0.1 -P2881 -p
説明
OceanBaseデータベースインスタンス起動時に環境変数でパスワードが設定されていない場合、インスタンスで作成されたユーザーはデフォルトで空のパスワードを使用します。
接続に成功すると、端末には以下の内容が表示されます:
Welcome to the OceanBase. Commands end with ; or \g.
Your OceanBase connection id is 3221711319
Server version: OceanBase_CE 4.3.5.3 (r103010012025090210-8b80b225c2dcba7dd0c83f3d5a24e3c1ffc03f24) (Built Sep 2 2025 10:25:24)
Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
obclient [(none)]>
ステップ4:obshell Dashboard管理ページにアクセスする
ホストシステムの2886ポートにアクセスすることで、obshellが提供するobshell DashboardのWeb管理ページにアクセスできます。
設定可能な環境変数
パラメータ名 |
デフォルト値 |
値の説明 |
説明 |
|---|---|---|---|
| MODE | MINI |
説明
|
クラスタの起動モードを設定します。 |
| EXIT_WHILE_ERROR | true |
|
OceanBaseデータベースの起動に失敗した場合にコンテナを終了するかどうかを制御します。 |
| OB_CLUSTER_NAME | obcluster | なし | OceanBaseクラスタ名を設定します。 |
| OB_TENANT_NAME | test | 最長63バイト、大文字小文字の英字、数字、アンダースコアのみ。OceanBaseデータベースのキーワードではないこと。 | 設定後、OceanBaseクラスタ内に同名のMySQLテナントが作成されます。設定しない場合、デフォルトでtestという名前のMySQLテナントが作成されます。
説明
|
| OB_MEMORY_LIMIT | 6G | [6G, +∞) | OceanBaseクラスタで使用可能な総メモリサイズを設定します。これは、他の2つの構成パターンにおけるmemory_limitパラメータと同じ機能を持ちます。 |
| OB_DATAFILE_SIZE | 5G | [5G, +∞) | OceanBaseクラスタ内のデータファイルのサイズを設定します。これは、他の2つの構成パターンにおけるdatafile_sizeと同じ機能を持ちます。 |
| OB_LOG_DISK_SIZE | 5G | [5G, +∞) | OceanBaseクラスタ内のRedoログディスクのサイズを設定します。これは、他の2つの構成パターンにおけるlog_disk_sizeと同じ機能を持ちます。 |
| OB_SYS_PASSWORD | デフォルトは空文字列 | 文字列を設定する必要があります。文字列に特別な要件はありません | OceanBaseクラスタ内のsysテナントの管理者ユーザー(root@sys)のパスワードを設定します。 |
| OB_TENANT_PASSWORD | デフォルトは空文字列 | 文字列を設定する必要があります。文字列に特別な要件はありません | OceanBaseクラスタ内のOB_TENANT_NAMEに対応するテナントの管理者ユーザーのパスワードを設定します。OB_TENANT_NAMEが設定されていない場合、デフォルトでroot@testユーザーのパスワードが使用されます。 |
| OB_SYSTEM_MEMORY | 1G | [1G, +∞) | OceanBaseクラスタ内で、テナントIDが500のテナント用に予約されたメモリ容量を設定します。これは、他の2つの構成パターンにおけるsystem_memoryと同じ機能を持ちます。 |
| OB_TENANT_MIN_CPU | なし | 対象外 | OceanBaseクラスタ内のOB_TENANT_NAMEに対応するテナントの最小CPUリソースを設定します。設定しない場合、デフォルトでOceanBaseクラスタの残りリソースをすべて使用します。これは、リソースユニット作成時のMIN_CPUと同じ機能です。リソースユニットの作成方法の詳細については、CREATE RESOURCE UNITを参照してください。 |
| OB_TENANT_MEMORY_SIZE | なし | 対象外 | OceanBaseクラスタ内のOB_TENANT_NAMEに対応するテナントのメモリリソースを設定します。設定しない場合、デフォルトでOceanBaseクラスタの残りリソースをすべて使用します。これは、リソースユニット作成時のMEMORY_SIZEと同じ機能です。リソースユニットの作成方法の詳細については、CREATE RESOURCE UNITを参照してください |
| OB_TENANT_LOG_DISK_SIZE | なし | 対象外 | OceanBaseクラスタ内のOB_TENANT_NAMEに対応するテナントのログディスク容量を設定します。設定しない場合、デフォルトでOceanBaseクラスタの残りリソースをすべて使用します。これは、リソースユニット作成時のLOG_DISK_SIZEと同じ機能です。リソースユニットの作成方法の詳細については、CREATE RESOURCE UNITを参照してください |
| OB_CONFIGSERVER_ADDRESS | なし | 対象外 | obconfigserverのアドレスを設定します。例:http://10.10.10.1:8080。 |