OceanBase使用一个Zone,在这个Zone中设置多个OBServer能否实现分布式,有没有实现步骤呢
这种不会满足高可用性,存在很大的隐患,生产环境一定要杜绝。OB的高可用性由zone的数量来决定,原理是根据paxos。机器够的话建议设置为三个zone。
首先确实不推荐单zone。
不过单zone 也可以有分布式。
单zone 的 OB 集群并不一定是单机,也可以是多机。如果有2台机器组成单 zone 集群,里面的租户的 unit_num
也可以设置为 2 ,然后租户的表的分区就会打散。有些表连接的执行计划就是分布式的。如果用了分区表,分区表的多个分区可能就打散了,对分区表的扫描也可能是一个分布式。
注意:sys租户的 unit_num
始终是 1 ,不能改为 2 ,sys租户杜绝分布式,没必要。
好的,感谢版主的回复。我们有个场景是测试环境,需要考虑成本,想着能尽量节省点资源。
请问下如果我们用单个Zone,想设置多副本,应该如何处理呢
我个人理解 zone 只是个逻辑概念。
对于某个租户来说,在一个 zone 中,最多只能有一份数据副本。所以一个租户有几份副本,这个租户就对应几个 zone ,副本数和 zone 数相等。
此方法不建议在生产环境钟使用,没有保障数据冗余性
推荐先看下 OBCA 4.x 前两节的 PDF,了解下 zone 之类的基础概念吧。我今天正好也在看~
那就用三个zone,几个zone就是几个副本。一个zone就是一个副本(单幅本),比如,一个zone下有5个observer,那么这五个observer只维护这一个副本,挂了一个observer整个集群就不可用了
可以试一试,不过肯定没办法实际应用
副本 就是 数据的冗余, 副本的范围可大可小。 小到表的一个分区,一个分区可以有多个副本。大到整个租户的数据,可以有多个副本。 此时仍然统称为一个租户。我们说租户的拓扑 1-1-1,指的就是租户有三个副本(数据有三份)。
OB 如何管理多个副本的位置,方法就是用 zone。租户有个 locality 属性就是指定每个 zone 里的数据副本特性。如 F@zone1,F@zone2,F@zone3
。通常每个zone 里只有一个 数据副本(默认指全功能副本 FULL)。
租户的locality 设置了副本特性后,租户里的表的分区都默认遵循这个设置。
上面是事后的解释,实际部署的过程是先部署集群,部署集群的时候就定义了 有几个zone。
所以,如果集群部署时单zone,那么集群里的租户 也就只能有一个 zone,自然副本数只有一个了。如果集群是3个zone,租户还是可以选是 1个 、2个 或 3个zone,副本数也就是1个、2个或3个。
租户还可以有备租户,备租户的数据也可以理解为是租户数据的副本,备租户自身可以是单zone或多zone,这个很灵活,跟主租户副本数可以不一致。 一个三副本的主租户和一个单副本的备租户是常见用法,这样业务数据有4份副本。业务数据用多少个副本取决于业务数据的重要性。
数据的副本技术在其他友商数据库中也能看到,区别只是副本实现的技术不一样。
您好,非常感谢您的答疑!因为我们还是首次调研使用OB,有些疑问特别想和您请教下,不知您是否方便加个联系方式呢,我的微信15801143900
官网资料很丰富,还是建议先看看。
白皮书:https://obcommunity-private-oss.oceanbase.com/prod/blog/2023-09/OceanBase%20原生分布式一体化架构原理.pdf
或者也可以看看我公众号的总结:历史文章精选(~2024/1/15)
好的
单个ZONE是不能设置多副本的,一个ZONE里面只能有一份完整的数据
如果仅仅是测试的话,机器有限,也可以建两个zone,单个zone,也可以使用到分布式,但是没有高可用能力,副本也无法根据多维度自动去均衡负载,性能不一定好,两个zone的话可以自动负载均衡,可以简单测试,生产的话最好是三副本以上,有条件的话还可以搭建备集群增加容灾能力。