本节主要介绍物理备份的方式及其架构。
物理备份
OceanBase 数据库提供了在线物理备份的功能,该功能由日志备份+数据备份两大子功能组成。日志备份持续的维护了集群产生的日志,数据备份维护了快照点的备份,两者结合可以提供恢复到备份位点之后任意时间的能力。
日志备份
OceanBase 数据库提供了集群级别的日志备份能力。日志备份是 log entry 级别的物理备份,并且能够支持压缩和加密的能力。
日志备份的工作由 Partition 的 Leader 副本负责。每个 OBServer 负责本机 Leader 副本日志的读取、按照 Partition 拆分、日志聚合后发送的工作。
日志备份的周期默认为 2 分钟,提供了准实时的备份能力。
V2.2.77 版本以后,日志备份提供了按天拆分目录的功能,方便用户对于备份数据的管理。
数据备份
OceanBase 数据库提供了集群级别的数据备份的能力。数据备份目前是基于 restore point 的能力做的数据快照保留,保证了备份期间的数据能够保持全局一致性。数据保留带来了额外的磁盘空间的消耗,如果备份机器的磁盘水位线超过配置的警戒值,会导致数据备份失败。
数据备份的流程都是 RootService 节点调度的,将 1024 个分区作为一组任务发送给 OBServer 备份。备份数据包括分区的元信息和宏块数据。物理备份是指宏块数据的物理备份,元信息是内存序列化后的值。
OceanBase 数据库的基线宏块具有全局唯一的逻辑标识,这个逻辑标识提供了增量备份重用宏块的能力。在 OceanBase 数据库中,一次增量备份指的是全量的元信息的备份+增量的数据宏块的备份。增量备份的恢复和全量备份的恢复流程基本上是一致的,性能上也没有差别,只是会根据逻辑标识在不同的 backupset 之间读取宏块。
数据清理
OceanBase 数据库提供了当前配置路径下自动清理的功能,该功能由 RootService 定期检查用户配置的 Recovery Window,从而删除不需要数据备份。在删除数据备份的同时,会自动的根据保留的数据备份中最小的回放位点来删除不需要的日志备份。
备份的备份
备份的备份是指数据库备份的二次备份能力,通常一次备份为了较好的性能,会存放在性能较好的备份介质上,而这种介质的容量会比较有限,保留备份的时间会比较短;二次备份则是把一次备份的数据挪到空间更大、保留时间更长、成本更低的介质上。
目前 OceanBase 数据库提供了内置的备份的备份的功能,支持用户调度 OBServer 将一次备份的数据搬迁到指定的目录中。 目前支持 OSS 和 NFS 两种介质。
逻辑备份
V2.2.7 版本以后 OceanBase 数据库不再提供集群级别的逻辑备份功能,提供了数据的逻辑备份的 OBDUMPER 工具。该工具是 java 开发的一个并行的客户端导出工具,支持 SQL 或者 CSV 格式的数据导出,也支持全局的过滤条件。
有关逻辑备份工具的具体介绍,请参见 OBDUMPER 文档。




