OceanBase 学习笔记(四):上生产,K8s 部署与备份监控
前三天(一概念、二租户SQL、三高可用)都是在讲原理加本地体验。最后这篇落到我们真实的环境——K8s + OceanBase,讲怎么在 K8s 上把集群和租户管起来、怎么备份、怎么看健康。这也是这个学习笔记系列收尾的一篇。
笔记体收官。K8s 和备份这块我更多是”对着文档梳理”,实操还在路上,所以偏原理和路径,具体 YAML / 命令以你手上的版本为准。
1. K8s 上跑 OB:ob-operator
官方有个 OceanBase Database Operator(ob-operator),是 K8s 的 CRD 控制器。你用 YAML 声明 OBCluster、OBTenant 这些自定义资源,operator 就负责拉起 observer、组集群、建租户、做日常运维——不用自己登机器 docker run 或手动 obd。
几个对应关系值得记一下:
- OB 的 Zone 会映射到 K8s 的拓扑域(节点池 / 可用区)。也就是说,OB 的”跨 Zone 容灾”在 K8s 上就是”跨 AZ 部署”,operator 把 Zone 和节点可用区对齐。
- 每个 OBServer 通常对应一个 Pod(常见是 StatefulSet 管着一组)。
- 我们生产那套 K8s+OB,大概率就是 ob-operator 这种模式在跑。
提一句:除了 operator,还有 OBD(OceanBase Deployer) 是给物理机 / 虚拟机用的部署工具。K8s 场景优先 ob-operator,别搞混。
整条链路画出来是这样的:

ob-operator 用 CRD 声明式管理集群/租户;Zone 对齐 K8s 可用区;备份归档到对象存储,指标接 Prometheus。
2. 备份与恢复
这点我一开始想简单了,以为”跟 MySQL 一样 mysqldump 就完事”。后来才懂:分布式下物理备份 + 日志归档才是正道,否则没法保证一致性时点恢复。
OB 的备份思路:
- 数据备份:基线数据(SSTable)做物理备份,一般每周全量 + 每日增量。
- 日志备份(归档):Redo 日志持续归档。这一步必须开,否则只能恢复到最近一次备份点,中间发生的事务就丢了。
- 恢复到指定时间点(PITR):基于某一个全量备份 + 之后的归档日志,可以回滚到任意时间点。
- 备份目标通常是对象存储:OSS / S3 / COS 之类,K8s 上配个存储桶凭证即可。
所以正确的姿势是”全量 + 增量 + 日志持续归档”三件套,丢了哪样都做不到干净恢复。
3. 可观测性与排障
OB 自带一套很全的系统视图,排障基本绕着它们转:
DBA_OB_*系列:看集群 / 租户 / 服务器 / Unit,比如DBA_OB_TENANTS、DBA_OB_SERVERS(看各 OBServer 是否 active)、DBA_OB_UNITS。GV$*/V$*系列:看进程、会话、SQL 统计,比如GV$OB_PROCESSES、V$SQL、慢 SQL 和执行计划。- 资源水位、日志流 Leader 分布是否均衡(primary_zone 有没有生效),都能从这些视图看出来。
监控层面,OB 有 exporter,常见搭配是 Prometheus + Grafana 把指标拉出来做面板和告警。
排障的通用思路我给自己记了一条:先看服务和 Zone 状态 → 再看租户资源是否打满 → 看慢 SQL 和数据分布 → 最后看日志流 Leader 是否均衡。按这个顺序基本不会乱。
4. 给我们 K8s+OB 栈的几点提醒
- Zone 必须对齐真实 AZ。否则”跨机房容灾”只是名义上的,一个机房真挂了 OB 多数派没了,高可用就成空话。
- ob-operator 管集群,但备份和监控得自己接。对象存储的归档桶、Prometheus 抓取,这些不在 operator 默认范围里。
- 多租户是真隔离,但资源给少了会互相抢。Unit 规格和 primary_zone 要提前规划,别等上线了才发现某个租户把 CPU 吃满拖慢邻居。
5. 系列收尾
四篇走下来,路线是:
- 概念 + 本地跑起来:OB 是原生分布式、Shared-Nothing、observer 单进程、兼容 MySQL/Oracle、LSM-Tree 存储。
- 租户 / 资源 / SQL 实战:Cluster→Tenant→DB→Table,Unit/Pool 是资源载体,建租户三步,分区表决定数据分布。
- 高可用与弹性:日志流 Paxos 多数派 + 租约防脑裂,locality/primary_zone 控副本与 Leader,扩缩容靠 RootService 自动均衡。
- 上生产(本篇):K8s 用 ob-operator 声明式管理,备份靠物理备份 + 日志归档到对象存储做 PITR,可观测性靠
DBA_OB_*/GV$视图 + Prometheus。
从”分布式数据库是啥”到”在生产 K8s 上不懵”,这条路算是走通了。后面真在集群上实操踩了坑,再来补几篇实战。
参考:
- OceanBase ob-operator 文档
- OceanBase 数据库整体架构
- OceanBase 官方文档总入口(备份恢复 / 日志归档的具体文档版本差异较大,建议在文档站里按你使用的版本搜索)




