obshellによるOceanBaseデータベースの拡張は、以下の2つの方法をサポートしています。
APIを呼び出して拡張する
obshellコマンドを使用して拡張する
本記事では、3レプリカのOceanBaseクラスタを例に、obshellを使用してOceanBaseクラスタを拡張する方法を説明します。
前提条件
OceanBaseクラスタはobshellによって運用管理されていること。詳細な判断方法および接続操作については、obshell以外でデプロイされたクラスタの接続を参照してください。
OceanBaseクラスタのすべてのOBServerノードとobshellが正常に動作していること。
デプロイメントモード
本記事では、4台のマシンの使用状況は以下のとおりです(obshellはデフォルトポート2886を使用します):
ロール |
マシン |
備考 |
|---|---|---|
| OBServerノード | 10.10.10.1 | OceanBaseデータベースzone1 |
| OBServerノード | 10.10.10.2 | OceanBaseデータベースzone2 |
| OBServerノード | 10.10.10.3 | OceanBaseデータベースzone3 |
| スケールアウト用OBServerノード | 10.10.10.4 | OceanBaseデータベースzone1にスケールアウトされる |
APIによる拡張
説明
obshellは呼び出されるAPIに対してセキュリティ検証を行います。そのため、APIを呼び出すたびに、API混合暗号化の記事を参照してリクエストを暗号化し、curlコマンドで暗号化されたリクエストヘッダー(${request_headers})とリクエストボディ(${request_body})を設定する必要があります。
ステップ1:obshellを起動する
拡張対象のクラスタノード(10.10.10.4)でobshellを起動します。詳細については、obshellの起動を参照してください。
[admin@test004 ~]$ /home/admin/oceanbase/bin/obshell agent start --ip 10.10.10.4 -P 2886
ステップ2:拡張インターフェースを呼び出す
クラスタ内の任意のobshellから /api/v1/ob/scale_out インターフェースを呼び出して拡張を開始します。
コマンドラインで対応するAPIを呼び出す方法の説明については、スケールアウトを参照してください。このAPIは非同期のO&Mタスクを作成します。タスクの進捗状況を確認する方法については、タスクの詳細情報を取得するを参照してください。タスクが完了すると、スケールアウトも完了します。
[admin@test001 ~]$ curl -H "Content-Type: application/json" -H 'X-OCS-Header:${request_headers}' -X POST -d '${request_body}' http://10.10.10.1:2886/api/v1/ob/scale_out
obshell-sdk-pythonを使用した対応するAPIメソッドのリクエストについては、スケールアウトを参照してください。
···
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
configs = {"redoDir":"/data/workspace/redo", "dataDir":"/data/workspace/data",
"datafile_size":"24G", "cpu_count":"16", "memory_limit":"16G",
"system_memory":"4G", "log_disk_size":"40G"}
client.v1.scale_out_sync("10.10.10.4", 2886, "zone1", configs) ## /api/v1/ob/scale_outを呼び出す
···
obshell-sdk-goによる対応するAPIメソッドのリクエストについては、スケールアウトを参照してください。
···
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
configs := map[string]string {
"redoDir":"/data/workspace/redo", "dataDir":"/data/workspace/data",
"datafile_size":"24G", "cpu_count":"16", "memory_limit":"16G",
"system_memory":"4G", "log_disk_size":"40G"}
req := client.V1().NewScaleOutRequest("10.10.10.4", 2886, "zone1", configs)
dag, err := client.V1().ScaleOutSyncWithRequest(req) // /api/v1/ob/scale_outを呼び出す
···
ステップ3:スケールアウトが成功したかどうかを確認する
rootユーザーでOceanBaseデータベースのsysテナントにログインし、以下のコマンドを実行してクラスタ内のすべてのOBServerノード情報を確認します。
obclient [oceanbase]> select * from oceanbase.dba_ob_servers;出力は次のとおりです:
+------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+ | SVR_IP | SVR_PORT | ID | ZONE | SQL_PORT | WITH_ROOTSERVER | STATUS | START_SERVICE_TIME | STOP_TIME | BLOCK_MIGRATE_IN_TIME | CREATE_TIME | MODIFY_TIME | BUILD_VERSION | LAST_OFFLINE_TIME | +------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+ | 10.10.10.1 | 2882 | 1 | zone1 | 2881 | YES | ACTIVE | 2024-04-09 17:47:47.849965 | NULL | NULL | 2024-04-09 17:47:42.054759 | 2024-04-09 17:47:48.850012 | 4.3.0.1_100000242024032211-0193a343bc60b4699ec47792c3fc4ce166a182f9(Mar 22 2024 13:19:48) | NULL | | 10.10.10.2 | 2882 | 2 | zone2 | 2881 | NO | ACTIVE | 2024-04-09 17:47:47.749100 | NULL | NULL | 2024-04-09 17:47:42.173519 | 2024-04-09 17:47:48.850012 | 4.3.0.1_100000242024032211-0193a343bc60b4699ec47792c3fc4ce166a182f9(Mar 22 2024 13:19:48) | NULL | | 10.10.10.3 | 2882 | 3 | zone3 | 2881 | NO | ACTIVE | 2024-04-09 17:47:47.490511 | NULL | NULL | 2024-04-09 17:47:42.567437 | 2024-04-09 17:47:48.850012 | 4.3.0.1_100000242024032211-0193a343bc60b4699ec47792c3fc4ce166a182f9(Mar 22 2024 13:19:48) | NULL | | 10.10.10.4 | 2882 | 4 | zone1 | 2881 | NO | ACTIVE | 2024-04-10 10:37:47.530894 | NULL | NULL | 2024-04-09 10:27:32.222980 | 2024-04-09 17:47:48.850012 | 4.3.0.1_100000242024032211-0193a343bc60b4699ec47792c3fc4ce166a182f9(Mar 22 2024 13:19:48) | NULL | +------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+以下のコマンドを実行して、obshellが管理するOBServerノードを確認します。
obclient [oceanbase]> select * from ocs.all_agent;出力は次のとおりです:
+------------+------+---------------+----------------------+-------+--------------+-------+------------+----------+--------------------------+------------------------------------------------------------------------------------------------------+ | ip | port | identity | version | os | architecture | zone | mysql_port | rpc_port | home_path | public_key | +------------+------+---------------+----------------------+-------+--------------+-------+------------+----------+--------------------------+------------------------------------------------------------------------------------------------------+ | 10.10.10.1 | 2886 | CLUSTER AGENT | 4.2.3.0-102024031414 | linux | x86_64 | zone1 | 2881 | 2882 | /home/admin/oceanbase-ce | MEgCQQCfqaND/dAbH/cJhOuTP8gRUBZh1nqrNtFwB9Plw6YwWiSintZPiC9pN/FKlBeR/Klt2jvu8oqZe+S3p/xq+ckPAgMBAAE= | | 10.10.10.2 | 2886 | CLUSTER AGENT | 4.2.3.0-102024031414 | linux | x86_64 | zone2 | 2881 | 2882 | /home/admin/oceanbase-ce | MEgCQQCfqaND/dAbH/cJhOuTP8gRUBZh1nqrNtFwB9Plw6YwWiSintZPiC9pN/FKlBeR/Klt2jvu8oqZe+S3p/xq+ckPAgMBAAE= | | 10.10.10.3 | 2886 | CLUSTER AGENT | 4.2.3.0-102024031414 | linux | x86_64 | zone3 | 2881 | 2882 | /home/admin/oceanbase-ce | MEgCQQCfqaND/dAbH/cJhOuTP8gRUBZh1nqrNtFwB9Plw6YwWiSintZPiC9pN/FKlBeR/Klt2jvu8oqZe+S3p/xq+ckPAgMBAAE= | | 10.10.10.4 | 2886 | CLUSTER AGENT | 4.2.3.0-102024031414 | linux | x86_64 | zone1 | 2881 | 2882 | /home/admin/oceanbase-ce | MEgCQQCfqaND/dAbH/cJhOuTP8gRUBZh1nqrNtFwB9Plw6YwWiSintZPiC9pN/FKlBeR/Klt2jvu8oqZe+S3p/xq+ckPAgMBAAE= | +------------+------+---------------+----------------------+-------+--------------+-------+------------+----------+--------------------------+------------------------------------------------------------------------------------------------------+
上記の2つのコマンドで新しくスケールアウトされたOBServerノードの情報が表示されれば、スケールアウトは成功です。
ステップ4:テナント内リソースの拡張
OceanBaseクラスタの拡張が完了した後、テナント内のリソース拡張については、テナント内リソースの拡張と縮小の概要を参照してください。
obshellコマンドによる拡張
ステップ1:obshellを起動する
スケールアウト対象のクラスタノード(10.10.10.4)でobshellを起動します。詳細については、obshellの起動を参照してください。
[admin@test004 ~]$ /home/admin/oceanbase/bin/obshell agent start --ip 10.10.10.4 -P 2886
ステップ2:スケールアウトコマンドを呼び出してスケールアウトを実行する
コマンドラインでスケールアウトを行う場合、コマンドはスケールアウト対象のクラスタノードで実行する必要があります。スケールアウト対象のクラスタノード(10.10.10.4)で obshell cluster scale-out コマンドを実行します。コマンドの詳細については、obshell cluster scale-outを参照してください。
[admin@test004 ~]$ /home/admin/oceanbase/bin/obshell cluster scale-out -s '10.10.10.1:2886' -z 'zone1' -o 'memory_limit=16G,system_memory=8G,log_disk_size=24G,datafile_size=24G' --rp *****
ステップ3:拡張が成功したか確認する
rootユーザーでOceanBaseデータベースのsysテナントにログインし、以下のコマンドを実行してクラスタ内のすべてのOBServerノード情報を確認します。
obclient [oceanbase]> select * from oceanbase.dba_ob_servers;出力は次のとおりです:
+------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+ | SVR_IP | SVR_PORT | ID | ZONE | SQL_PORT | WITH_ROOTSERVER | STATUS | START_SERVICE_TIME | STOP_TIME | BLOCK_MIGRATE_IN_TIME | CREATE_TIME | MODIFY_TIME | BUILD_VERSION | LAST_OFFLINE_TIME | +------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+ | 10.10.10.1 | 2882 | 1 | zone1 | 2881 | YES | ACTIVE | 2024-04-09 17:47:47.849965 | NULL | NULL | 2024-04-09 17:47:42.054759 | 2024-04-09 17:47:48.850012 | 4.3.0.1_100000242024032211-0193a343bc60b4699ec47792c3fc4ce166a182f9(Mar 22 2024 13:19:48) | NULL | | 10.10.10.2 | 2882 | 2 | zone2 | 2881 | NO | ACTIVE | 2024-04-09 17:47:47.749100 | NULL | NULL | 2024-04-09 17:47:42.173519 | 2024-04-09 17:47:48.850012 | 4.3.0.1_100000242024032211-0193a343bc60b4699ec47792c3fc4ce166a182f9(Mar 22 2024 13:19:48) | NULL | | 10.10.10.3 | 2882 | 3 | zone3 | 2881 | NO | ACTIVE | 2024-04-09 17:47:47.490511 | NULL | NULL | 2024-04-09 17:47:42.567437 | 2024-04-09 17:47:48.850012 | 4.3.0.1_100000242024032211-0193a343bc60b4699ec47792c3fc4ce166a182f9(Mar 22 2024 13:19:48) | NULL | | 10.10.10.4 | 2882 | 4 | zone1 | 2881 | NO | ACTIVE | 2024-04-10 10:37:47.530894 | NULL | NULL | 2024-04-09 10:27:32.222980 | 2024-04-09 17:47:48.850012 | 4.3.0.1_100000242024032211-0193a343bc60b4699ec47792c3fc4ce166a182f9(Mar 22 2024 13:19:48) | NULL | +------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+以下のコマンドを実行して、obshellで管理されているOBServerノードを確認します。
obclient [oceanbase]> select * from ocs.all_agent;出力は次のとおりです:
+------------+------+---------------+----------------------+-------+--------------+-------+------------+----------+--------------------------+------------------------------------------------------------------------------------------------------+ | ip | port | identity | version | os | architecture | zone | mysql_port | rpc_port | home_path | public_key | +------------+------+---------------+----------------------+-------+--------------+-------+------------+----------+--------------------------+------------------------------------------------------------------------------------------------------+ | 10.10.10.1 | 2886 | CLUSTER AGENT | 4.2.3.0-102024031414 | linux | x86_64 | zone1 | 2881 | 2882 | /home/admin/oceanbase-ce | MEgCQQCfqaND/dAbH/cJhOuTP8gRUBZh1nqrNtFwB9Plw6YwWiSintZPiC9pN/FKlBeR/Klt2jvu8oqZe+S3p/xq+ckPAgMBAAE= | | 10.10.10.2 | 2886 | CLUSTER AGENT | 4.2.3.0-102024031414 | linux | x86_64 | zone2 | 2881 | 2882 | /home/admin/oceanbase-ce | MEgCQQCfqaND/dAbH/cJhOuTP8gRUBZh1nqrNtFwB9Plw6YwWiSintZPiC9pN/FKlBeR/Klt2jvu8oqZe+S3p/xq+ckPAgMBAAE= | | 10.10.10.3 | 2886 | CLUSTER AGENT | 4.2.3.0-102024031414 | linux | x86_64 | zone3 | 2881 | 2882 | /home/admin/oceanbase-ce | MEgCQQCfqaND/dAbH/cJhOuTP8gRUBZh1nqrNtFwB9Plw6YwWiSintZPiC9pN/FKlBeR/Klt2jvu8oqZe+S3p/xq+ckPAgMBAAE= | | 10.10.10.4 | 2886 | CLUSTER AGENT | 4.2.3.0-102024031414 | linux | x86_64 | zone1 | 2881 | 2882 | /home/admin/oceanbase-ce | MEgCQQCfqaND/dAbH/cJhOuTP8gRUBZh1nqrNtFwB9Plw6YwWiSintZPiC9pN/FKlBeR/Klt2jvu8oqZe+S3p/xq+ckPAgMBAAE= | +------------+------+---------------+----------------------+-------+--------------+-------+------------+----------+--------------------------+------------------------------------------------------------------------------------------------------+
上記の2つのコマンドで新しく拡張されたOBServerノードの情報が表示されれば、拡張は成功です。
ステップ4:テナント内リソースの拡張
OceanBaseクラスタの拡張が完了した後、テナント内のリソース拡張については、テナント内リソースの拡張と縮小の概要を参照してください。