• 机房级故障

  • 地域级故障

OceanBase 数据库在架构部署前,一般会针对不同级别的高可用需求提供不同级别的高可用架构方案。其中服务器级别高可用方案是由 OceanBase 数据库最小三副本的特性保障的,机房级别高可用方案一般是将不同的 Zone 部署在不同机房。地域级高可用则通过三地五中心架构或主备 OceanBase 数据库链路高可用架构去实现。针对不同高可用级别的架构,所采用异常处理方式也有所不同。

由于 OceanBase 数据库天然的三副本架构,在处理此类异常时通常可根据异常节点数进行不同处理:

  • 多节点异常:通常这类异常出现情况并不会太多,除了同一批硬件同时异常的情况。通常遇到此类问题时,需要先定位故障多节点分布情况,可通过 sys 租户中的 表,根据不同故障节点的 IP 去定位故障节点是否属于同一个 Zone,如果故障节点同属于一个 Zone,可以通过 STOP Zone 命令将这个多个节点异常的 Zone 停止。这样这个 Zone 就不对外提供服务了,在应急情况下这个操作是非常有效的。同理, 操作不会将整个 Zone 内的进程停止,仅仅在 __all_server 表中标记停止时间。详细操作信息,请参见 。

在拥有机房级容灾能力的 OceanBase 集群中,不同的 Zone 应该部署在不同的机房中,当某个机房发生故障时即可采用 Zone 管理操作进行流量切换,类似于服务器多节点异常情况的处理。目前比较常见的同城多机房容灾部署架构有同城三机房三/五副本架构,即同城三个机房分别部署三个 Zone 或以 2-2-1 的分布方式部署五个 Zone。此架构下 OceanBase 集群具有同城机房级容灾能力,不同机房间流量切换损耗几乎等于不同机房间的网络延迟。

还可部署同城双机房三/五副本架构,即同城两个机房,选择其中一个机房作为多数派 Zone 部署机房,另一个机房作为灾备机房部署少数派个副本。此架构下 OceanBase 集群同样具有同城机房级容灾能力,流量切换损耗也仅为机房间网络延迟,但只有在多数派其中一个副本异常时发生。

当某个机房发生故障时,用户可通过 操作将异常 Zone 置于不对外提供服务的状态,在 IDC 恢复工作后再通过 START Zone 操作将 Zone 恢复正常。详细操作信息,请参见 启动或停止 Zone

如果多个 IDC 发生异常,且故障副本数达到多数派,此时需要采取恢复备份等停服操作去恢复集群。

OceanBase 集群异常的处理逻辑总体来讲,就是利用 OceanBase 数据库多副本高可用特性,将正常的数据库访问流量通过管理操作切至正常副本,从而达到故障容灾的效果,以为管理员、运维同学和机房同学提供充足的时间去修复不同层级中实际发生的异常,保障数据服务不中断。