{"id":29571885,"url":"https://github.com/oceanbase/obshell","last_synced_at":"2025-07-19T04:36:31.323Z","repository":{"id":234536699,"uuid":"787175524","full_name":"oceanbase/obshell","owner":"oceanbase","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-09T03:05:01.000Z","size":3940,"stargazers_count":6,"open_issues_count":5,"forks_count":6,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-07-09T22:51:15.900Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oceanbase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-16T03:03:55.000Z","updated_at":"2025-07-09T03:05:04.000Z","dependencies_parsed_at":"2024-04-29T09:30:53.901Z","dependency_job_id":"825d0850-fc50-43ad-a33c-66d0a8a415dc","html_url":"https://github.com/oceanbase/obshell","commit_stats":null,"previous_names":["oceanbase/obshell"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oceanbase/obshell","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oceanbase%2Fobshell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oceanbase%2Fobshell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oceanbase%2Fobshell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oceanbase%2Fobshell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oceanbase","download_url":"https://codeload.github.com/oceanbase/obshell/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oceanbase%2Fobshell/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265889161,"owners_count":23844539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-19T04:36:30.538Z","updated_at":"2025-07-19T04:36:31.300Z","avatar_url":"https://github.com/oceanbase.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/oceanbase/oceanbase/blob/master/LICENSE\"\u003e\n    \u003cimg alt=\"license\" src=\"https://img.shields.io/badge/license-Apache--2.0-blue\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://en.oceanbase.com/docs/oceanbase-database\"\u003e\n    \u003cimg alt=\"English doc\" src=\"https://img.shields.io/badge/docs-English-blue\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.oceanbase.com/docs/oceanbase-database-cn\"\u003e\n    \u003cimg alt=\"Chinese doc\" src=\"https://img.shields.io/badge/文档-简体中文-blue\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nEnglish | [Chinese](./README_CN.md)\n\n**OBShell** (OceanBase Shell) is the no-installation cluster command-line tool provided by the [OceanBase Community](https://open.oceanbase.com/) for system administrators and developers. OBShell supports cluster operations and maintenance tasks, and offers operational management APIs based on OBServer. This allows unified management of a single cluster by different ecosystem products, thereby facilitating the integration of third-party tools with OceanBase and reducing the complexity and cost associated with OceanBase cluster management.\n\n# Key Features\n- **No Installation Required**\n\n  OBShell does not require additional installation. Once you have installed the OceanBase-CE database through any method, you will be able to locate the OBShell executable file within the `bin` directory of the working directory on any node.\n\n- **Operational Capabilities**\n \n  OBShell, as a ready-to-use local cluster command-line tool, supports OceanBase cluster operations and maintenance including cluster deployment, cluster start, cluster stop, cluster status inquiry, cluster node scaling, and cluster upgrades, among other functionalities. Additional features are currently under development.\n\n- **Open API**\n  \n  OBShell provides operational management APIs based on the OBServer, facilitating unified management of a single cluster by various ecosystem products. This streamlines the integration of third-party tools with OceanBase, effectively reducing the complexity and cost associated with managing OceanBase clusters.\n\n- **Emergency Operation**\n  \n  OBShell supports emergency operations and maintenance for clusters. Even in the event of a complete OceanBase cluster outage, it can be quickly restarted with a single click and automatically take over control of the cluster, if necessary.\n\nFor more information, please refer to [OBShell](https://www.oceanbase.com/quicksearch?q=obshell).\n\n# Quick Deployment of an OceanBase Cluster\n\nThe state machine for identity transformation in OBShell Agent is illustrated as follows:\n![OBShell Identity](./img/identity.png)\n\nExecute the following commands for a quick deployment of a 3-replica OceanBase database instance. See the deployment guide [here](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000671670).\n\n## 🔥 Using the OBShell Command Line\n\n1. Start the OBShell on each node by following these [instructions](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000671669).\n\n    ```shell\n    # Execute on xxx.xxx.xxx.1\n    /home/admin/oceanbase/bin/obshell agent start --ip xxx.xxx.xxx.1\n    # Execute on xxx.xxx.xxx.2\n    /home/admin/oceanbase/bin/obshell agent start --ip xxx.xxx.xxx.2\n    # Execute on xxx.xxx.xxx.3\n    /home/admin/oceanbase/bin/obshell agent start --ip xxx.xxx.xxx.3\n    ```\n\n2. The Single Agent becomes a Master Agent and sets server-level configurations.\n\n    ```shell\n    # The Master Agent leads the cluster in executing initialization tasks.\n    /home/admin/oceanbase/bin/obshell cluster join -s \"xxx.xxx.xxx.1:2886\" -z zone1 -p 2881 -P 2882 -o 'memory_limit=16G,system_memory=8G,log_disk_size=24G,datafile_size=24G'\n    ```\n\n3. Other Single Agents become Follower Agents and join the Master Agent.\n\n    ```shell\n    # The Follower Agent joins the Master Agent and follows the Master Agent in completing initialization tasks.\n    # Execute on xxx.xxx.xxx.2\n    /home/admin/oceanbase/bin/obshell cluster join -s \"xxx.xxx.xxx.1:2886\" -z zone2 -p 2881 -P 2882 -o 'memory_limit=16G,system_memory=8G,log_disk_size=24G,datafile_size=24G'\n    # Execute on xxx.xxx.xxx.3\n    /home/admin/oceanbase/bin/obshell cluster join -s \"xxx.xxx.xxx.1:2886\" -z zone3 -p 2881 -P 2882 -o 'memory_limit=16G,system_memory=8G,log_disk_size=24G,datafile_size=24G'\n    ```\n\n4. Set cluster-level configurations and initialize the cluster\n\n    ```shell\n    # Execute on any node\n    /home/admin/oceanbase/bin/obshell cluster init -n ob-test --rp ***\n    ```\n\n5. Connect to the OceanBase cluster\n\n    ```shell\n    obclient -hxxx.xxx.xxx.1 -uroot@sys -P2881 -A -p *** \n    ```\nFor more information refer to the [OBShell Cluster Command Group](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000671675).\n\n## 👨‍💻 Source Code Compilation\n\nRefer to the [OBShell Compilation Guide](COMPILE.md) to learn how to compile OBShell.\n\n# System Architecture\n\n![OBShell Architecture](./img/architecture.png)\n\nEach OBShell Agent manages a single observer. Operational maintenance actions for the entire cluster are initiated by one OBShell Agent, with multiple OBShell Agents working in coordination to facilitate progress.\n\n# License\n\nOBShell is licensed under the Apache License, Version 2.0. For details, see the [LICENSE](LICENSE) file.\n\n# Community\n\nHere are the ways to join the community:\n\n* [Chinese Forum](https://ask.oceanbase.com/)\n* [Slack Workspace](https://join.slack.com/t/oceanbase/shared_invite/zt-1e25oz3ol-lJ6YNqPHaKwY_mhhioyEuw)\n* [Ask on Stack Overflow](https://stackoverflow.com/questions/tagged/oceanbase)\n* DingTalk Group: 33254054 ([QR Code](img/dingtalk.png))\n* WeChat Group (Add WeChat Assistant: OBCE666)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foceanbase%2Fobshell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foceanbase%2Fobshell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foceanbase%2Fobshell/lists"}