本記事では、Dockerコンテナを用いて単一ノードのOceanBaseデータベースをデプロイする方法を説明します。
注意
本記事の手順は、学習またはテスト環境でのみ使用可能です。本番環境では使用しないでください。
前提条件
本記事の手順を実行する前に、以下の情報を確認する必要があります:
Dockerをインストールし、Dockerサービスを起動済みであることを確認してください。詳細については、Dockerドキュメントを参照してください。
説明
x86アーキテクチャのMacマシンでは、OceanBaseデータベースのデプロイにDocker V4.9.0およびそれ以前のバージョンのみサポートされています。リンクをクリックして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=MINI -e OB_TENANT_PASSWORD=***** -d oceanbase/oceanbase-ce
tabクイック起動モードでインスタンスをデプロイする
クイック起動モードでは、テナントおよびリソース関連の環境変数を設定した場合、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
ホストのローカルクライアントを使用して接続する
OceanBaseデータベースインスタンスへの接続には、ホストのローカルOBClientまたはMySQLクライアントを使用できます。例を以下に示します:
[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のGUIウェブ管理ページにアクセスできます。
設定可能な環境変数
| 変数名 | デフォルト値 | 値の説明 | 説明 |
|---|---|---|---|
| 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。 |