【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
ob 4.2.1
【 使用版本 】
【问题描述】OceanBase支持主主同步吗,类似mysql的那种 @论坛小助手
您的问题可能存在误解,实际上据我所知,OceanBase 数据库并不支持主主同步(Active-Active replication)这种模式,类似于 MySQL 的双主复制。OceanBase 作为一个分布式数据库系统,其设计的核心理念在于通过多副本和分布式架构来实现高可用性和数据一致性,而不是通过传统的双主复制模式来达到高可用的目的。
在 OceanBase 中,数据的高可用性主要是通过以下几种机制来保障的:
- 多副本机制:OceanBase 会为数据创建多个副本,默认情况下至少有三个副本分布在不同的服务器上,甚至可以跨机房分布,以此来确保即使某些服务器发生故障,数据依然可以被访问和恢复。
- 分区表设计:OceanBase 支持分区表,可以将数据水平分割成多个分区,每个分区可以独立地进行管理和复制,这有助于提高系统的扩展性和可用性。
- Leader 选举与切换:在 OceanBase 中,每个分区都有一个 Leader,负责处理读写请求。当 Leader 发生故障时,系统能够自动进行 Leader 切换,选择一个新的 Leader 来继续提供服务,从而保证服务的连续性。
因此,相较于传统的主主同步模式,OceanBase 通过其独特的分布式架构和多副本机制来实现更高的数据可靠性和系统可用性。如果您有关于如何配置这些功能的具体问题或者需要进一步的帮助,请随时告知。
检索到的文档如下:
小助手的回复解决你的问题了吗
没有 我们有个项目只有两台机器,ob有主备租户,他都没提
根据您描述的情况,在仅有两台机器的环境中部署 OceanBase 并且希望实现某种形式的高可用性或数据冗余,确实需要仔细规划。OceanBase 通常推荐至少三副本的部署策略以确保高可用性和数据一致性,但在资源有限的情况下,可以考虑使用主备租户的方式作为替代方案。
OceanBase 支持在同一集群内部署主租户和备租户,这样即使在一台机器发生故障时,备租户也可以接管服务,继续提供数据库功能。这种方式虽然不如三副本方案那样健壮,但对于资源受限的环境来说,仍能提供一定程度的保护。
以下是关于主备租户的一些关键信息:
- 主备租户的部署:可以在同一集群内部署一个主租户和一个或多个备租户,备租户通过 Redo 日志实时同步主租户上的数据。 [3]
- 主备租户的切换:当主租户不可用时,可以将备租户切换为主租户继续提供服务。 [1]
-
租户的角色:在无级联备库的场景中,主备关系的租户需要至少一个主租户(即租户角色为
PRIMARY
),否则两个租户的日志同步进度会表现为不再推进。 [4]
尽管如此,考虑到您只有两台机器,建议您评估一下这种方案是否足够满足项目的高可用需求。如果可能的话,增加第三台机器以支持三副本部署会更加稳妥。
如果您还有其他具体问题或需要进一步的帮助,请随时告知。
具体信息可参考以下文档:
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
两台机器做高可用只能通过主备租户方式
mysql 的双 master 虽然是双向同步,一般使用时有个实例还是会设置为只读,不允许应用双写。否则一旦应用双写写错数据会导致交叉覆盖的灾难。 双master 同步也是为了快速切换(读写<->只读之间变换)。
mysql 的主从同步(双主同步)都是逻辑同步,主从不严格保证数据一致性。 OB 的主备租户同步是物理同步,备是只读的,不能写。除非激活备租户(那主备同步也就废了)。主备租户正常同步期间可以反复来回正常切换(switchover)。不需要像 mysql 那样搞成双向同步。
OB 4.x 主备租户分布在两个集群里,两个集群里可以有很多租户互为主备,并且主的角色可以交叉。这样每个集群上都有主租户,集群机器都能提供服务(不浪费)。
选入有问必答板块~