OceanBase是蚂蚁集团自主研发的分布式关系型数据库,采用多副本一致性协议实现高可用。在真实业务场景中,它通常以集群形态部署在多台物理服务器或云主机上,通过分区表和全局索引横向扩展吞吐。理解其部署逻辑,核心在于把握总控服务locality配置、单元化概念以及observer节点的无共享架构。每个节点都运行独立的observer进程,彼此通过内网心跳交换选举与日志信息。

开始部署前,服务器规划直接决定集群能否抵抗宕机。最小可用集群一般建议三台机器,形成三副本。每台机器推荐八核以上CPU、十六GB及以上内存、千兆或万兆内网互通。操作系统常用CentOS 7或Anolis OS,内核版本不低于3.10。三台机器需配置固定IP,并在hosts文件里互相解析,避免后续依赖DNS导致延迟。时钟必须同步,可部署chrony服务,将偏差控制在五十毫秒内,否则节点易被判超时下线。
除了网络与时钟,资源隔离也很关键。OceanBase会占用大量内存作为缓存,若与别的重型应用混布,可能触发OOM杀掉observer。建议单独划分数据盘,使用xfs文件系统并挂载时加入noatime选项,减少元数据写入。系统层要关闭透明大页,执行echo never大于对应sys路径,同时调整vm.swappiness到零或个位数,防止频繁换页拖慢性能。
操作系统参数与用户准备
在每台服务器创建专用系统用户oceanbase,不要用root直接运行数据库进程,既符合安全规范,也避免文件权限混乱。用useradd命令建立家目录,并将数据盘授权给该用户。此后所有目录创建、进程启动都在此用户下完成。很多线上事故源于权限错位导致observer无法写clog,因此提前chown十分必要。
内核参数需修改/etc/sysctl.conf,重点包括fs.file-max设为大值如百万级别,net.core.somaxconn调整到2048以上,以便高并发连接排队。还要在/etc/security/limits.conf里为该用户添加nofile软硬限制655350,nproc也相应放开。修改后执行sysctl -p并重新登录会话使其生效。这些动作看似琐碎,却是集群平稳运行的底层保障。
集群初始化与observer启动
OceanBase提供了obd工具来简化集群编排。写一份yaml配置文件,声明三台server的ip、rpc_port、mysql_port以及各自数据目录。文件中需指定cluster_name与root_password,内存规格可按机器实际填写,例如 sixteenG机器给observer分配十G。执行obd cluster deploy后,工具会自动分发安装包并创建目录结构。
部署完并非立即可用,还要obd cluster start拉起进程。此时各节点observer按配置互相握手,选出一个leader总控节点。可通过obclient连接任意一节点的mysql端口,执行select * from oceanbase.dba_ob_servers查看状态。若显示status为ACTIVE,说明集群三副本同步正常。遇到启动失败,优先看运行日志里的错误信息,常见的是端口被占或时钟偏移。
基础校验与简单调优
集群起来后,建一个测试租户验证资源隔离能力。OceanBase的租户类似实例,可限定cpu和内存配额,避免业务互相干扰。通过sys租户执行create resource unit定义规格,再create tenant绑定。随后用新租户账号连入,建表插数,观察各节点是否按主键散列到不同分区。这一步能确认分布式能力真正生效,而非伪装成单节点。
调优方面,初装集群默认参数偏保守。可适度调大memstore_limit_percentage让写入缓冲更宽,减少转储频率。若业务读多写少,调高cache命中相关的block_cache比例。但任何改动应在测试环境跑基准如sysbench后再上生产,防止参数冲突引发抖动。日常监控可借助obdiag采集日志,定期审查合并任务和副本均衡状态。
| 项目 | 最小三节点建议 | 说明 |
|---|---|---|
| CPU | 8核每节点 | observer计算与后台合并需消耗 |
| 内存 | 16GB每节点 | 给进程分配10G左右 |
| 网络 | 千兆内网 | 低延迟互通,禁用公网直连 |
| 磁盘 | 200GB SSD | 分离数据盘与系统盘 |
通过上述步骤,普通服务器也能完成蚂蚁集团OceanBase分布式集群的搭建。重点记住规划先行、参数兜底、工具减负。后续扩容只需在新机器装好依赖,用obd cluster scale_out加入即可,原有数据会自动按新拓扑再平衡。掌握这套逻辑,面对更大规模部署也不过是重复动作与监控细节的叠加。
OceanBase部署分布式数据库集群服务器配置修改时间:2026-08-16 17:32:33