首批通过分布式安全可靠测评,为关键业务系统打造
obshell-sdk-python 快速上手
更新时间:2026-04-10 11:58:01
环境要求
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 集群:一是向 obshell 请求对应的 API 方法成功后,立刻返回;二是向 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)