DBA在日常业务中面临着繁琐的运维管理任务,亟需高效的工具和灵活的解决方案帮助他们简化操作、提升效率。因此,命令行操作和维护工具(CLI工具),因其高效、灵活、可远程管理以及技术深度等特点,成为DBA和开发人员不可或缺的重要工具。
为了更好地满足用户对 OceanBase 更灵活、更深层次管理的需求,我们推出了obshell(OceanBase Shell)。作为OceanBase工具家族的新成员,obshell开放了内核运维接口,通过免安装、本地集群命令行工具的方式,进一步简化并增强了用户对OceanBase的管理能力。
obshell于2024年1月首次亮相,并于4月20日正式开源。本文将介绍obshell的产品定位,以及与OCP、OCP Express、OBD(OceanBase Deployer)等产品及第三方工具的协作关系,并探讨obshell的现状和未来发展规划。
一、分布式运维的复杂性思考
在探讨为何 OceanBase 选择开放运维管理 API 接口时,我们不得不深入剖析背后的逻辑及其对用户的直接价值。OceanBase 与其他数据库产品的一个明显差异点,生态工具更倾向于可视化的方式,如 OCP、OMS、ODC、OAT 乃至 OBD 等工具,来简化数据库管理过程,提升用户体验。这一选择有其深层次原因:一方面,简单易用的界面满足大多数用户的操作习惯;另一方面,通过降低管理复杂度,帮助用户显著提升用户的工作效率。正如蚂蚁集团 SRE 团队以少量 DBA 高效管理整个公司内部所有数据库的真实案例,好工具无疑是提升生产力的关键。
然而,在追求可视化带来的便捷性的同时,我们也收到了来自不同用户群体的多样化需求:
-
高效批量操作的需求:用户普遍反映,尽管 OCP 功能强大且操作简便,但在处理如多租户同时扩缩容等批量操作时,仍期望能有一套工具集,支持通过 shell 或 Python 脚本等自动化手段,进一步提升工作效率。这种需求体现了在复杂运维场景下,用户对灵活性和高效性的追求。
-
成本敏感型用户的诉求:对于业务量较小、集群规模有限的用户而言,部署成本成为了一个不可忽视的因素。他们更倾向于像管理 MySQL 那样,无需额外的硬件资源,通过简单的黑屏命令来管理 OceanBase,以此降低运维成本。这种需求反映了不同规模用户对于运维方式的不同偏好和考量。
-
第三方生态厂商的整合需求:在与第三方生态厂商的合作中,我们发现许多厂商希望直接通过一套 Open API 来管理 OceanBase,而非间接通过 OCP 的 API,同时也需要避免和 OCP、OBD 自身管理功能发生冲突。这一需求不仅关乎技术整合的便捷性,更涉及到避免功能冲突和保障管理权限的独立性问题。
-
传统数据库用户的习惯传承:对于长期使用 Oracle、DB2 等传统数据库的用户而言,他们更倾向于使用命令行工具来管理数据库,因为通过命令行管理数据库已成为一种习惯。
二、obshell进展如何,目前已经提供哪些能力?
我们在设计 obshell 时,借鉴了其他优秀产品的命令行设计理念,以便契合大部分用户的使用习惯。同时,我们创新地支持通过 Open API 方式管理和维护数据库,这符合现代化设计的理念,使开发者能更方便地操作数据库。
obshell 是 OceanBase 专为运维人员和开发人员提供的免安装、即插即用的本地集群命令行工具。它支持集群和租户的运维、监控、备份恢复、测试以及工具集等常见命令。同时,基于 OBServer 提供的运维管理 API 接口,第三方工具可以通过调用 obshell 接口,实现对同一集群的统一管理,进而降低 OceanBase 集群管理的复杂度和成本。无论是企业版还是社区版的 OceanBase,obshell 在功能上完全一致。
当前 obshell V4.2.3 目前已支持 Cluster、Agent、Task、Utilities 四个命令组(共计 15 个命令)、 25+ Open API 以及 Python & Go 的 SDK,主要支持核心的 OceanBase 集群管理功能以及应急操作能力。未来,我们将逐步完善 OceanBase 集群管理能力,包括集群缩容,集群级别备份恢复等,同时增加租户级别的操作,如创建、删除、扩缩容,备份恢复等。
三、Obshell 的定位是什么,能解决什么问题?
obshell 作为 OceanBase 与其他产品工具交互的统一入口,是底层组件,用于与其他产品的集成。因此,我们规划让 OCP、OCP Express 和 OBD 等产品都能够使用 obshell 进行相关运维操作。目前,OBD 已经基于 obshell 完成了开发适配,其他产品也将逐步进行适配。我们鼓励其他伙伴将 obshell 集成到自建运维管控系统中,从而实现对 OceanBase 的标准化管理。
此外,通过 obshell ,OceanBase 实现了对用户群体的全覆盖能力:obshell 和 OCP Express 以其低成本的特性主要面向轻量级场景;而 OBD 则作为中心化的多集群管理和部署工具,主要服务中小型用户。需要注意的是,OBD 将专注于产品工具的安装部署和易用性提升,而不再扩展支持运维相关操作。您可以将 OBD 的定位视为商业版 OAT,因此不建议基于 OBD 进行系统集成。另外,OCP 作为可视化的多集群管控平台,主要服务中大型客户,同时也提供 Open API,便于与客户的自建系统集成。
最终,我们希望用户能够通过使用 obshell 和其他产品,结合最佳实践,构建简单高效的数据库管理体系,轻松管理 OceanBase 数据库。
四、写在最后
OceanBase 发展历程,我们一直秉持的理念就是:把复杂留给自己,把简单留给用户。obshell 也是基于这一理念的延伸和扩展,也是 OceanBase 数据库发展的一个必然结果。我们不得不承认,分布式数据库的运维管理复杂度远高于集中式数据库。如何让用户管理分布式数据库如同使用集中式数据库一样简单,obshell 是 OceanBase 帮助更广泛用户的更好的武器。未来,我们还会推动 OCP Express、OCP 等产品适配 obshell ,并联合第三方工具厂商适配 obshell 。
开源开放、简单易用且具备超强稳定性的数据库产品才能变得更通用,并最终在长期且残酷的市场竞争中走向真正的流行。obshell 基于当前流行的 Go 语言编写,如果您对 OceanBase 的命令行运维管理感兴趣,我们期待与您一起成长,打造更好的分布式数据库命令行运维工具!