备份恢复是 OceanBase 数据库高可用特性的核心组件,主要用于保障数据的安全,包括预防存储介质损坏和用户的错误操作等。如果存储介质损坏或者用户误操作而导致了数据丢失,可以通过恢复的方式恢复用户的数据。

备份组件架构

OCP 支持备份配置,配置完成后您可以查看基线备份历史、增量备份历史等功能,同时也支持支持租户备份状态查询。

备份服务的组件架构如下图所示。逻辑备份与恢复 - 图1其中:

  • OceanBase 集群是需要被备份的源数据库。

  • MetaDB 为第三方元数据库,含有备份恢复的参数表配置以及控制备份任务表。

  • Agent 作为备份工具,是一个常驻进程,它通过每隔一段时间查询元数据库 MetaDB 中有无备份任务来控制整个基线数据和增量数据备份的发起或取消,也会随着任务的推进更新状态。

  • OSS 或基于NFS 的文件系统是备份的存储介质。

  • Agent 从源数据库拉取数据后会写入存储介质,故存储介质中含有恢复数据库到某一个时间点的所有数据。

恢复组件架构

恢复是备份的逆过程,当故障发生后您可以通过 OCP 将当前数据恢复至指定版本。

恢复服务的组件架构如下图所示。逻辑备份与恢复 - 图2其中:

  • Oceanbase 集群是待恢复的集群。

  • MetaDB 为第三方元数据库,备份和恢复所使用的元数据库可以部署在同一个 MetaDB。

  • Agent 作为恢复工具,是一个常驻进程,每隔一段时间查询元数据库 MetaDB 中的控制表。它负责调度整个恢复任务的发起,也会随着任务的推进更新任务状态。

  • OSS 或基于 NFS 的文件系统是备份的存储介质,上面含有恢复集群所需要的所有数据,包括基线数据和增量数据。

使用限制

备份恢复功能的使用限制如下:

  • 不支持 OUTLINE 恢复。

  • 不支持系统租户或内部表恢复。

  • 不支持 Unit、Resource Pool、Tenant 等语句的备份恢复。

  • 未进回收站的删除操作无法备份。

  • 恢复的时候无法恢复 liboblog 备份落后时间内的数据。

  • 增量逻辑备份只保证最终一致性。

  • 恢复时 DataBase、Table 的 Locality 不生效。

  • 增量备份不支持比较大的事务,如果事务过大可能导致备份内存爆。

  • 删除租户需要合并一次才能备份基线。

  • 一次合并只允许一次基线备份。