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:スケールアウトAPIを呼び出す
クラスタ内の任意のobshellから /api/v1/ob/scale_out APIを呼び出してスケールアウトを開始します。
コマンドラインで対応する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クラスタの拡張が完了した後、テナント内のリソース拡張の詳細については、テナント内リソースの拡張と縮小の概要を参照してください。