OceanBase 数据库通过 OceanBase 集群来进行管理。一个 OceanBase 集群由多个 Zone 组成,Zone 的个数大于等于 3 个,每个 Zone 又包含了多个 OceanBase 服务器(observer 进程运行在这些服务器上),一般情况下各个 Zone 内的机器配置与数量保持一致,多台 OceanBase 服务器作为资源组成各个业务所需的资源池。
OceanBase 集群、Zone 和 OceanBase 服务器的关系
一个集群由多个 Zone 组成,每一份数据在各个 Zone 上都会有一份副本,并且只能有一份副本,这样一个 Zone 故障后不会影响业务正常运行和数据的完整性。从物理角度上来说,不同的 Zone 可以对应不同的城市;也可以对应一个城市的不同机房;还可以对应一个机房的不同机架,从而实现不同级别的容灾。
Zone 的个数大于等于 3 个,因为 OceanBase 数据库采用 Paxos 协议,多数派需要达成一致,3 个及以上的 Zone 可以保证当 1 个 Zone 故障后,剩下的 2 个 Zone 内的副本依然还可以构成多数派,不影响业务。
资源单元是一个容器
资源单元是一个容器。实际上,副本是存储在资源单元之中的,所以资源单元是副本的容器。资源单元包含了计算存储资源(Memory、CPU 和 IO 等)
一个资源池由具有相同资源规格(Unit Config)的若干个资源单元组成。一个资源池只能属于一个租户。
一个资源池只能属于一个租户。一个租户在同一个 Server 上最多有一个资源单元。
集群的多副本架构
OceanBase 集群通常是三副本架构,少数场景可能会使用五副本。在三副本架构下,OceanBase 集群的节点数通常是三的倍数,集群节点会分为三个区域( Zone )。每个 Zone 的节点数通常保持相等,可以有 1 或多个节点。每个租户的数据也会分布在这三个 Zone 里,但不一定用尽每个 Zone 的所有节点,这取决于租户资源池属性的设置,由运维人员确定。
我的总结:
1:一个集群至少需要3个Zone,每个Zone彼此相对副本,每个Zone可以位于不同的城市,或者位于不同的机房,或者不同机房的不同机架,以备容灾;
2:一个Zone里面可以拥有一台或者多台Oceanbase服务器(observer 进程运行在这些服务器上),一般情况下各个 Zone 内的机器配置与数量保持一致;
3:多台 OceanBase 服务器组成一个资源池。管理员可以调整资源池的配置大小;
4:一个资源池可以对应多个Zone,每个OBserver可以有不同个数的分区;
5:分区位于Zone内的OBserver上,副本位于不同Zone上,不同Zone有相同的副本;
6:创建的资源单元如何对应OBserver的 ?? 等待解惑