资讯详情

OceanBase 开源分布式数据库实战指南:架构特性、快速部署与源码编译全解析

📅 2026/9/15 21:04:09 | 华诺云谱 👁 阅读
OceanBase 开源分布式数据库实战指南:架构特性、快速部署与源码编译全解析
OceanBase 开源分布式数据库实战指南架构特性、快速部署与源码编译全解析【免费下载链接】oceanbaseOceanBase is the unified distributed database for the AI era — open-source, multi-model, one engine for your most demanding workloads.项目地址: https://gitcode.com/GitHub_Trending/oc/oceanbaseOceanBase 是蚂蚁集团自主研发的开源分布式关系型数据库基于 Paxos 协议与分布式架构实现高可用和线性扩展可运行在常见服务器集群上而不依赖特殊硬件。本文以 README_CN.md 为主线结合本仓库源码系统讲解 OceanBase 的核心特性、all-in-one / Docker / Kubernetes / 源码编译四种部署方式并深入 observer 进程的启动参数、构建系统与依赖管理机制帮助读者从会部署进阶到看得懂源码、能自行编译调试。一、OceanBase 是什么OceanBase Database 是一个分布式关系型数据库完全由蚂蚁集团自主研发。它基于 Paxos 协议 以及分布式架构实现了高可用和线性扩展数据库运行在常见的服务器集群上不依赖特殊的硬件架构。这意味着你可以基于通用的 x86_64、aarch64 甚至 loongarch64 服务器组建集群从仓库 deps/init 目录下同时存在oceanbase.el7.x86_64.deps、oceanbase.al8.aarch64.deps、oceanbase.an8.loongarch64.deps等多平台依赖清单即可得到印证。从仓库顶层 CMakeLists.txt 可以看到当前源码版本标识为OB_BUILD_VERSION 5.0.2.0支持开源版OceanBase_CE、独立版OceanBase_standalone等构建模式并声明使用 C/C/ASM 三种语言进行构建。二、关键特性根据 README_CN.md 的关键特性章节OceanBase 的核心能力可归纳为六点水平扩展单集群支持超过 1500 节点、PB 级数据量和单表超万亿行数据极致性能TPC-C 7.07 亿 tmpC 和 TPC-H 1526 万 QphH 30000GB低成本存储成本节省 70%–90%实时分析不需要额外开销支持 HTAP混合事务/分析处理高可用RPO 0零数据丢失RTO 8 秒恢复时间MySQL 兼容可以很方便地从 MySQL 迁移过来。这些能力并非停留在宣传层面从仓库源码结构可以找到对应的工程支撑。src目录下的模块划分见 src/CMakeLists.txt清晰展示了其架构组成模块目录职责对应src/sqlSQL 引擎包含 3620 个文件承载 SQL 解析、执行与 MySQL 协议兼容层src/storage存储引擎2401 个文件支撑 LSM-Tree 存储与高压缩比低成本的关键src/logservice日志服务与 Paxos 日志复制是高可用 RPO0 / RTO8s 的核心实现src/rootserverRootService负责集群管理、负载均衡与 DDL 任务调度src/observerobserver 服务进程包含 MySQL 协议处理mysql/子目录、多租户管理omt/等src/plPL/SQL 与存储过程支持其中 src/observer/CMakeLists.txt 展示了 observer 进程的模块构成ob_set_subtarget(ob_server mysql ...)列出了obmp_connect.cpp、obmp_query.cpp、obmp_stmt_execute.cpp等 MySQL 协议处理器这正是MySQL 兼容的协议层实现。三、快速开始四种部署方式3.1 使用 all-in-one 一键部署仅限 Linuxall-in-one 方式适合在 Linux 平台快速部署一个 OceanBase 数据库实例需要联网下载安装包# 下载并安装 all-in-one需要联网 bash -c $(curl -s https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/installer.sh) source ~/.oceanbase-all-in-one/bin/env.sh # 快速部署 OceanBase database obd demo安装完成后执行obd demo即可拉起一个单机数据库实例。obd是 OceanBase Deployer 的简称仓库 tools/deploy 目录下提供了与部署配套的初始化脚本例如 tools/deploy/init_create_tenant_routines.sql、tools/deploy/init_for_ce.sql、[tools/deploy/init_user.sql)注实际文件名为tools/deploy/init_user.sql用于初始化租户例程、CE 版系统表与初始用户。3.2 使用 Docker 部署官方在多个镜像仓库提供oceanbase/oceanbase-ce镜像如果你从默认仓库拉取遇到问题可以切换到其他镜像仓库quay.io、ghcr.io中的同名镜像。启动 OceanBase 数据库实例mini 模式# 部署一个 mini 模式实例 docker run -p 2881:2881 --name oceanbase-ce -e MODEmini -d oceanbase/oceanbase-ce # 使用 quay.io 仓库的镜像部署 OceanBase # docker run -p 2881:2881 --name oceanbase-ce -e MODEmini -d quay.io/oceanbase/oceanbase-ce # 使用 ghcr.io 仓库的镜像部署 OceanBase # docker run -p 2881:2881 --name oceanbase-ce -e MODEmini -d ghcr.io/oceanbase/oceanbase-ce连接 OceanBasedocker exec -it oceanbase-ce obclient -h127.0.0.1 -P2881 -uroot # 连接 root 用户 sys 租户这里2881是 MySQL 协议端口root用户默认在sys租户下属于集群管理租户。仓库同时提供了开发容器定义 .devcontainer/Dockerfile基于 ubuntu:20.04 预装了 git、rpm、cpio、make、build-essential、libaio 等编译依赖可作为源码编译的开发环境参考。3.3 使用 Kubernetes 部署使用 ob-operator 可在 Kubernetes 环境中快速部署和管理 OceanBase 数据库实例。ob-operator 是 OceanBase 的 Kubernetes Operator 实现通过自定义资源CRD将部署租户、扩缩容、切换主备等运维操作声明式地托管给 Kubernetes 调度具体使用方法可参考 ob-operator 的快速上手文档见 README_CN.md 对应章节。3.4 使用源码编译部署从源码编译是深入 OceanBase 的最佳路径。整个编译流程可以分为依赖初始化与CMake 构建两步这两步在仓库中都有完整的工程支持。第一步初始化编译依赖OceanBase 的第三方依赖以 rpm 包形式托管由 deps/init/dep_create.sh 脚本负责下载与解包。该脚本会通过/etc/os-release读取操作系统发行版与 CPU 架构uname -m自动匹配对应的依赖清单文件在 x86_64、aarch64、sw_64 三种架构下分别支持 CentOS/Anolis/AliOS/Ubuntu/openEuler/Kylin 等主流发行版例如 el7 系的 CentOS 7el9 系的 Ubuntu 22.04依据匹配结果选择deps/init/oceanbase.el7.x86_64.deps之类的清单逐行解析[deps]段中的 rpm 包名通过wget下载并用rpm2cpio | cpio解包到deps/3rd目录支持通过环境变量DEP_CACHE_DIR开启共享依赖缓存避免多机器重复下载。以 deps/init/oceanbase.el7.x86_64.deps 为例清单头部声明了仓库地址repo依赖列表涵盖 gtest、libcurl-static、openssl-static、boost、hyperscan、vsag、s2geometry、protobuf-c、apache-arrow、apache-orc 等数十个编译期依赖覆盖测试框架、网络库、向量索引、几何计算、序列化与列存格式等方向。第二步CMake 构建 observer依赖就绪后通过顶层 CMakeLists.txt 组织构建先引入cmake/Utils.cmake与cmake/Env.cmake再按顺序构建deps/easy网络框架、deps/oblib基础库、src/objitLLVM 相关与src。src/CMakeLists.txt中通过ob_server_add_target(ob_server)汇总各子模块最终在 src/observer/CMakeLists.txt 中链接出observer可执行文件。构建出的 observer 可执行文件支持丰富的启动参数见下文第四节。四、observer 进程启动参数详解编译部署手动编译的 observer 时需要理解其启动参数。启动参数解析逻辑位于 src/observer/main.cpp 的print_help()与get_opts_setting()中汇总如下短参数长参数说明校验规则来自源码-h--help打印帮助信息—-z--zone指定 zone 名称—-p--mysql_portMySQL 协议端口端口须大于 1024 且小于 65536-P--rpc_portRPC 通信端口同上-N--nodaemon前台运行不以守护进程方式—-n--appname应用名称—-c--cluster_id集群 ID取值范围 [1, 4294967295]-d--data_dir数据目录—-i--devname网卡设备名—-I--local_ip本机 IP—-o--optstr额外配置项字符串—-r--rs_listRootService 列表—-l--log_level日志级别ERROR/USER_ERR/WARN/INFO/TRACE/DEBUG-6--ipv6使用 IPv6 地址—-m--mode服务模式—-f--scn闪回 SCN—-L--plugins_load加载的插件—-H--home工作目录home—-V--version打印版本信息—-C--dump_config_to_json将全部配置项导出为 JSON—从 src/observer/main.cpp 源码可以看到两个实用细节端口校验to_port_x()强制要求端口落在(1024, 65536)区间避免与特权端口冲突配置导出observer 支持-C参数把集群配置与租户配置一次性导出为./ob_all_available_parameters.json便于自动化工具读取全部可用参数。此外print_version()会输出PACKAGE_STRING、REVISION、BUILD_BRANCH、BUILD_TIME、BUILD_FLAGS等构建信息方便定位二进制版本。五、从源码看系统架构README 中提到的系统架构介绍指向外部文档这里我们从仓库源码结构出发还原其核心架构脉络以下内容由源码结构推断供阅读源码时参考多租户与资源隔离src/observer/omtObserver Multi-Tenant子模块承载多租户调度包含ob_tenant.cpp、ob_multi_tenant.cpp、ob_tenant_config.cpp等每个租户拥有独立的配置与资源配额SQL 引擎src/sql下划分出executor、optimizer、rewrite、parser、engine、session等目录构成从词法/语法分析到执行计划生成与执行的完整链路存储引擎src/storage采用 LSM-Tree 架构包含 memtable、sstable、compaction、minor freeze、checkpoint 等子模块配合src/storage/blocksstable的编码压缩能力实现高压缩比存储日志与高可用src/logservice/palf实现 Paxos 日志复制applyservice、replayservice、restoreservice分别处理日志应用、回放与恢复共同支撑 RPO0、RTO8s 的目标RootService 集群管控src/rootserver作为集群的大脑负责 unit 管理、分区均衡ob_partition_balance.cpp、DDL 任务ddl_task/、备份恢复backup/、restore/等网络框架deps/easy是底层的网络库36 个头文件、31 个 C 源文件支撑 RPC 通信观测与诊断src/observer/virtual_table提供了超过 200 个内部虚拟表ob_all_virtual_*例如ob_all_virtual_sql_auditSQL 审计、ob_all_virtual_sys_stat系统统计、ob_all_virtual_session_info会话信息是 DBA 排查问题的窗口。六、Roadmap、案例与社区Roadmap产品迭代规划在仓库 Issues 与官方项目看板中持续更新见 README_CN.md Roadmap 章节案例OceanBase 已服务超过 2000 家来自金融服务、电信、零售、互联网等行业的客户社区贡献欢迎社区贡献代码仓库根目录提供了 CONTRIBUTING.md贡献指南、CODE_OF_CONDUCT.md行为准则与 NOTICE 文件开发者可据此了解提 PR 的流程与规范社区渠道官方提供中文论坛、钉钉群群号 33254054二维码见 images/dingtalk.png、微信群添加小助手 OBCE666以及 GitHub Issues 等多种交流方式。使用中遇到的问题可通过 Issues 反馈或查阅官方产品文档。七、LicenseOceanBase 数据库根据 Apache License 2.0 获得许可详细条款见 LICENSE 文件。该许可证允许自由使用、修改与分发这也是其被广泛用于企业生产与二次开发的基础。仓库根目录还提供了 replace_license.py 脚本用于在源码文件中批量统一许可证头声明。八、总结通过本文你可以完整掌握 OceanBase 的四条上手路径obd demo一键部署、Docker mini 模式快速验证、Kubernetes 托管部署以及从 deps/init/dep_create.sh 依赖初始化到 CMake 编译的源码级构建流程。更进一步结合 src/observer/main.cpp 的参数表和src下的模块划分你可以快速定位 SQL 引擎、存储引擎、日志服务、RootService 等核心组件的源码入口为后续的性能调优、源码阅读与二次开发打下基础。【免费下载链接】oceanbaseOceanBase is the unified distributed database for the AI era — open-source, multi-model, one engine for your most demanding workloads.项目地址: https://gitcode.com/GitHub_Trending/oc/oceanbase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。