和zone的节点数 有关系 一个zone 一个observer节点 是一个副本 如果 一个副本 两个个observer节点 是两个副本
老师,我还有些疑问,1、那第一张图上说的“每个zone仅能有一个副本”是什么意思呢?
2、如果和zone内的节点数有关,那么只有1个zone,有三个节点,是否可以部署高可用呢?要怎么设置副本数呢?“PRIMARY_ZONE=zone1,LOCALITY=FULL{1}@node1”这样设置吗?
图1中的“每个 Zone 仅能有一个副本”:是指V3版本中的partition,或者V4版本中的tablet概念。例如:在一个三副本的租户下创建一张普通表,那么这张普通表 会有三份完全相同的数据分别存放在三个不同的ZONE内,每个ZONE内的这份数据就叫这张普通表的一个副本。
图2中的"有2个Leader副本提供服务,且均匀分布在zone1的两台机器上": 这是V4版本中的LS概念。从图2也可以看出LS_ID分别为:1001和1002。
V4版本,副本的leader和follower是以LS为单位,不像V3版本中以partition为单位。
1、说的是日志流的副本这个概念 副本的leader和follower这样
2、不是高可用 1-1-1的架构这样是高可用
下面的文档 你可以看看
流量分布
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002012838
Locality 介绍
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013122
老师,1、每个zone内只能有一个日志流副本,对吗?
2、图2说的一个zone内两个leader副本,我还是没有理解,这个指的不是日志流副本吗?
根据文档库中的信息,让我来为您详细解释一下:
-
每个Zone内只能有一个日志流副本:
- 这个说法是针对普通日志流而言的。具体来说,在普通日志流中,每个Zone仅能有一个副本,并且该副本类型需要与Locality中指定的副本类型匹配(参考自日志流和副本概述)。这意味着在普通的日志流设置下,一个Zone内部只会存在一个参与Paxos协议投票的全能型副本(FULL/F)。
-
关于图2提到的一个Zone内两个Leader副本的问题:
- 图2描述的情况涉及到了广播日志流的概念。从V4.2.0版本开始,OceanBase引入了广播日志流,它会在租户内的每个OBServer节点上都部署一个副本,以确保复制表可以在任意一个OBServer节点上提供强一致性读服务(参考自广播日志流)。在这种情况下,虽然每个Zone仍然只有一个全能型副本(FULL/F),但是为了提高读性能和其他目的,系统会在同一个Zone内的其他有该租户Unit资源的机器上各放置一个只读型副本(READONLY/R)。因此,当您看到一个Zone中有多个Leader副本时,实际上是指这些副本分布在不同的OBServer节点上,而不仅仅是局限于一个物理位置或服务器。
-
对于高可用性的配置:
- 如果您希望在一个Zone中有三个节点并且实现高可用性,建议采用多Zone架构而非单Zone架构。例如,可以设置为
PRIMARY_ZONE="zone1,zone2,zone3"
,并在每个Zone中分别配置至少一个全能型副本(FULL/F)。这样即使某个Zone出现故障,其他Zone仍能继续提供服务,保证系统的高可用性。至于具体的Locality设置,应该根据您的实际需求来定义,比如LOCALITY="FULL{1}@zone1,FULL{1}@zone2,FULL{1}@zone3"
,这将确保每个Zone都有一个全能型副本参与Paxos投票过程。
- 如果您希望在一个Zone中有三个节点并且实现高可用性,建议采用多Zone架构而非单Zone架构。例如,可以设置为
希望以上解释能够帮助您更好地理解OceanBase中关于副本和Zone的关系。如果有更多问题,请随时提问!
具体信息可参考以下文档: