環境要件
obshell-sdk-pythonはPython 3.0以降のバージョンに対応しています。
環境内のobshellが実行中であることを確認する必要があります。
手順
説明
このセクションでは、OceanBaseクラスタのデプロイを例に、obshell-sdk-pythonの使用方法を紹介します。任意のOBServerノードで以下の手順を実行するだけです。
obshell-sdk-pythonのインストール
pip install obshellクライアントの作成
from obshell import ClientSet from obshell.auth import PasswordAuth def main(): client = ClientSet("10.10.10.1", 2886, PasswordAuth("****", "v1"))例の
10.10.10.1はターゲットobshellノードのIPアドレス、2886はターゲットobshellノードのサービスポート番号です。実際の状況に応じて、対応するIPアドレスとポート番号に変更してください。PasswordAuthはobshellへのリクエスト時に使用されるセキュリティ認証方式です。ターゲットobshellが存在するクラスタのroot@sysユーザーのパスワードと、使用する認証方式のバージョン番号を設定する必要があります。バージョン番号を指定しない場合、clientはターゲットobshellのバージョンに応じて適切な認証方式のバージョンを自動選択します。説明
ターゲットobshellの身元がSingle Agentの場合、PasswordAuthを設定する必要はありません。
また、指定したバージョンのclientを作成することもできます。例は以下のとおりです。
from obshell import ClientV1 from obshell.auth import PasswordAuth def main(): client = ClientV1("10.10.10.1", 2886, PasswordAuth("****", "v1"))OceanBaseクラスタのデプロイ
obshell-sdk-pythonは、OceanBaseクラスタを作成するための2種類のメソッドを提供しています。1つは、obshellに対応するAPIメソッドをリクエストして成功した後、すぐに返却する方法です。もう1つは、obshellにAPIをリクエストして成功した後、obshellのタスクが完了するのを待ってから返却する方法です。前者は非同期タスク実行、後者は同期タスク実行です。
このセクションでは、1-1-1クラスタのデプロイを例に、コードは以下のとおりです:
非同期タスク実行タスクの同時実行from obshell import ClientSet from obshell.auth import PasswordAuth def main(): client = ClientSet("10.10.10.1", 2886, PasswordAuth("****")) # join して自分を MASTER にする dag = client.v1.join("10.10.10.1", 2886, "zone1") client.v1.wait_dag_succeed(dag-generic_id) # follower をクラスターに追加する dag = client.v1.join("10.10.10.2", 2886, "zone2") client.v1.wait_dag_succeed(dag_generic_id) dag = client.v1.join("10.10.10.3", 2886, "zone3") client.v1.wait_dag_succeed(dag-generic_id) # 各 OBServer ノードのパラメータを設定する configs = { "datafile_size": "24G", "log_disk_size": "24G", "cpu_count": "16", "memory_limit": "16G", "system_memory": "8G", "enable_syslog_recycle": "true", "enable_syslog_wf": "true"} dag = client.v1.config_observer(configs, "GLOBAL", []) client.v1.wait_dag_succeed(dag-generic_id) # OceanBase クラスターの設定情報を設定する dag = client.v1.config_obcluster("test-sdk", 11, "****") client.v1.wait_dag_succeed(dag-generic_id) # クラスターを初期化する dag = client.v1.init() client.v1.wait_dag_succeed(dag-generic_id) # 現在のクラスターの状態情報を取得する status = client.v1.get_status() print(status)from obshell import ClientSet from obshell.auth import PasswordAuth def main(): client = ClientSet("10.10.10.1", 2886, PasswordAuth("****")) # join して自分を MASTER にする client.v1.join_sync("10.10.10.1", 2886, "zone1") # follower をクラスターに追加する client.v1.join_sync("10.10.10.2", 2886, "zone2") client.v1.join_sync("10.10.10.3", 2886, "zone3") # 各OBServerノードのパラメータを設定する configs = { "datafile_size": "24G", "log_disk_size": "24G", "cpu_count": "16", "memory_limit": "16G", "system_memory": "8G", "enable_syslog_recycle": "true", "enable_syslog_wf": "true"} client.v1.config_observer_sync(configs, "GLOBAL", "") # OceanBaseクラスタの設定情報を設定する client.v1.config_obcluster_sync("test-sdk", 11, "****") # クラスタを初期化する client.v1.init_sync() # 現在のクラスタの状態情報を取得する status = client.v1.get_status() print(status)