目录标题
1️⃣ 基本定义
- PG = Partition Group(分区组)
- 一个 PG 里面包含 若干个副本(Replica),负责存储某一部分表的数据。
- OceanBase 将数据按 Tenant → Table → Partition → PG → Replica 的层级管理。
2️⃣ 层级关系
| 层级 | 说明 |
|---|---|
| Tenant | 租户,相当于一个数据库实例 |
| Table | 表,属于某个 Tenant |
| Partition | 表的分片(如果表分区) |
| PG | 分区组,每个 PG 存放一个或多个分区的数据副本 |
| Replica | 副本,一个 PG 可以有多个副本(通常 3 个)分布在不同节点上 |
所以 PG 是 数据分片的副本集合,是 OceanBase 数据一致性与高可用的最小管理单元。
3️⃣ PG 的特点
-
高可用
- 一个 PG 通常有 3 个副本(leader + follower + learner)。
- Leader 负责读写请求,Follower 提供备份和读取。
-
分布式存储
- 不同 PG 的副本分布在不同的 observer 节点上。
- 一个大表可能跨多个 PG,每个 PG 存储表的一部分数据。
-
数据迁移 / 负载均衡单位
- OB 调度节点做扩容/迁移时,都是以 PG 为单位搬迁数据。
- PG 的迁移不会影响其他 PG 的正常读写。
4️⃣ 在 PG 模式与 PG + PostgreSQL 模式的区别
- OB 有 MySQL 模式 和 PostgreSQL 模式
- PostgreSQL 模式下,你会看到 PG 概念更加明显,因为每个 PG 就是一个逻辑 分片 + 副本集合。
- MySQL 模式下,表也会有 PG,但对使用者来说是透明的(你直接访问表即可,PG 在后台管理)。
5️⃣ 简单示意图
Tenant (mysqlt1)
└─ Table (user_info)
├─ Partition 1
│ └─ PG 101
│ ├─ Leader Replica -> Node1
│ ├─ Follower Replica -> Node2
│ └─ Follower Replica -> Node3
└─ Partition 2
└─ PG 102
├─ Leader Replica -> Node2
├─ Follower Replica -> Node3
└─ Follower Replica -> Node1
每个 PG 有自己独立的 Leader/Follower,读写请求会路由到 Leader。
总结
- PG = Partition Group = 分区组 + 副本集合
- PG 是 OB 的最小管理和调度单位
- PG 决定数据的高可用、分布式存储和负载均衡策略
下面给你画一张OceanBase PG(Partition Group)架构的完整示意图,包括 Tenant → Table → Partition → PG → Replica 的关系,清晰直观。
🧩 OceanBase PG 架构示意图(ASCII 图)
┌──────────────────────────────────────────────────────────────┐
│ Tenant: mysqlt1 │
│ (每个租户都有独立的资源 + 数据 + 事务管理) │
└──────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ Table: order_info │
│ (表可能有 0/1/N 个 Partition,视分区策略而定) │
└──────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────┬──────────────────────────┐
│ Partition 0 │ Partition 1 │
│ (非分区表则只有1个) │ (范围/哈希分区) │
└──────────────────────────┴──────────────────────────┘
│ │
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ PG 1001 │ │ PG 1002 │
│(分区组/最小管理单元)│ │(分区组/最小管理单元)│
└──────────────────┘ └──────────────────┘
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
┌────────────┬────────────┬────────────┐ (副本)
│ Leader │ Follower │ Follower │
│ Node1 │ Node2 │ Node3 │
└────────────┴────────────┴────────────┘
📌 图示说明
✔ 1. Tenant(租户)
OceanBase 多租户架构,每个租户相当于一个“独立的数据库实例”
不同租户之间数据隔离、资源隔离。
✔ 2. Table(表)
一个租户下可以有多张表。
✔ 3. Partition(表分区)
表可能:
- 不分区 → 1 个分区
- Range / List / Hash 分区 → N 个分区
✔ 4. PG = Partition Group(分区组)
PG 是 OB 最核心的概念,是最小的数据调度、复制、高可用单元。
每个 PG 下包含多个副本(通常为 3):
- 1 个 Leader(负责事务提交、读写)
- 2 个 Follower(副本 + 提供只读能力)
OceanBase 的数据迁移、均衡、备份、恢复都以 PG 为粒度 进行。
✔ 5. Replica(副本)
PG 会在多个节点(observer)上放置多个副本:
| 副本类型 | 功能 |
|---|---|
| Leader | 处理写入、强一致读取 |
| Follower | 接收日志同步,用于 HA、高可用 |
| 学习者副本(可选) | 备份或归档使用 |
📌 更直观的全流程示意(分布式)
Tenant
↓
Table
↓
Partition(s)
↓
┌───────────┐
│ PG │ <--- OceanBase 的最小调度单元
└───────────┘
↓ ↓ ↓
Replica Leader/Follower 分布三个不同 observer 节点
📌 为什么 OB 要引入 PG?
PG 解决分布式数据库的 3 个核心问题:
① 高可用
用副本 + Leader 机制实现。
② 负载均衡
以 PG 为单位迁移,避免一次性搬迁大表。
③ 弹性扩容
只需把 PG 迁移到新节点即可。
如果你愿意,我还能:
✅ 画 PG 迁移流程图
✅ 画 事务在 PG Leader 上执行的流程图
✅ 画 备份(Backup Set)与 PG 之间的关系图
1269

被折叠的 条评论
为什么被折叠?



