第七章 OB 备份与恢复

7.1 OceanBase 备份恢复技术架构

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

目前 OceanBase 数据库支持 OSS、NFS 和 COS 三种备份介质,提供了备份、恢复、管理三大功能。

7.1.1 逻辑备份

OceanBase 逻辑备份架构如下图所示

各组件说明

  • OceanBase 集群是需要被备份的源数据库;
  • MetaDB 为第三方元数据库,含有备份恢复的参数表以及任务表;
  • 备份恢复组件,是一个常驻进程,每隔一段时间查询元数据库MetaDB 中的有无备份任务,来控制整个基线、增量数据备份的发起、取消,也会随着任务的推进更新状态;
  • 存储介质可以为OSS 或者基于NFS 的文件系统,备份恢复组件从源数据库拉取数据后写入存储介质,存储介质中含有恢复数据库到某一个时间点的所有数据。

OB未来新版本将不需要“备份恢复组件”,管理员通过OCP创建备份恢复任务后,OB集群将发起备份恢复到存储介质中。

OceanBase支持全量备份和增量备份,全量备份是对存储层的基线数据进行备份,增量备份是通过redo-log备份,OceanBase支持在线实时的全量和增量备份,对业务无感知。

OceanBase 逻辑备份的一些说民

  • 备份支持2种介质,一种是阿里云OSS存储,另外一种是普通的NFS。NFS需要一个公共目录,每个OB Server都可以访问,NFS服务器为每台OB Server创建子目录。
  • 备份性能可以达到网卡的上限,约1G左右。恢复性能,一般也可以达到500兆左右。
  • 备份恢复最小粒度是租户,让备份和恢复更加灵活。
  • 备份恢复数据方面,支持逻辑数据(比如用户权限、表定义、系统变量、用户信息、视图信息等)和物理数据。

7.1.2 物理备份

OceanBase 数据库从 V2.2.52 版本开始支持集群级别的物理备份。物理备份由基线数据、日志归档数据两种数据组成,因此物理备份由日志归档和数据备份两个功能组合而成:

  • 日志归档是指日志数据的自动归档功能,OBServer 会定期将日志数据归档到指定的备份路径。这个动作是全自动的,不需要外部定期触发。
  • 数据备份指的是备份基线数据的功能,该功能分为全量备份和增量备份两种:
  • 全量备份是指备份所有的需要基线的宏块。
  • 增量备份是指备份上一次备份以后新增和修改过的宏块。

OceanBase 数据库支持租户级别的恢复,恢复是基于已有数据的备份重建新租户的过程。用户只需要一个 alter system restore tenant 命令,就可以完成整个恢复过程。恢复过程包括租户系统表和用户表的 Restore 和 Recover 过程。Restore 是将恢复需要的基线数据恢复到目标租户的 OBServer,Recover 是将基线对应的日志恢复到对应 OBServer。OceanBase 数据库目前支持手动删除指定的备份和自动过期备份的功能。

OceanBase 物理备份架构

7.1.3 OceanBase 备份恢复功能小节

7.2 备份恢复操作指南

7.2.1 基于 OCP 的逻辑备份恢复(白屏运维)

7.2.1.1 操作步骤

操作步骤

注意事项

  • 集群搭建完毕后开始备份前一定要执行一次major_freeze,不然会由于版本1没有冻结时间而导致备份失败;
  • 基线备份过程如果有合并的话,所有任务会重置,重新开始;
7.2.1.2 OCP 备份恢复配置说明
  • OCP 本身也是一个集群(默认obcluster 集群),下面有sys、ocp_meta、ocp_monitor 等租户。
  • 备份服务组件可以使用ocp_meta 租户下的数据库。
  • 在基于Docker 镜像安装OCP时,会在ocp_meta 租户下默认创建backup1472、backup147x、backup21、backup2230 四个不同版本的元数据库,并在这些backup 数据中已经创建好了备份和恢复相应的表和表组,用户可以根据具体的OB 版本直接选择使用。
7.2.1.3 通过 OCP 发起备份

OCP 备份任务

租户备份和该租户所在的集群备份是互斥关系,不能同时存在:

  • 没有备份调度时,可以创建集群备份调度或租户备份调度;
  • 如果已创建集群备份调度,该集群中所有租户的备份调度默认继承集群的配置,不能另外单独设置租户调度任务;
  • 若已创建租户备份调度,不能再次创建集群维度的备份调度。需要先取消租户的备份调度,并暂停增量备份;才能重新配置集群备份调度;
  • 一个集群中只能创建一个租户备份调度。

立即备份

  • 立即备份指对已设置备份调度的集群或租户,手动发起一个即时的备份任务。如果已配置了备份调度,可以直接手动进行一次基线备份。
  • 一个OceanBase 合并版本只能做一次基线备份,如果基于同一版本,发起多次备份,则后续的备份会直接报错,但这个版本的备份是正常可用的。
7.2.1.4 通过 OCP 恢复备份数据
  • 系统执行完一次备份之后,就可以随时根据这次备份发起一次恢复任务。目前恢复任务的最小粒度为租户级别数据,可以批量恢复多个租户。
  • 此处的点击位置与恢复版本无关,主要取决于恢复时间,系统会自动选择一个合适的基线数据版本+增量数据进行恢复。

注意执行恢复命令恢复租户的时候是不会自动创建资源的,得预先创建要恢复的的租户的resource pool

创建 resource pool 参考的 SQL 命令:

7.2.2 基于 SQL 命令的备份恢复(黑屏运维)

7.2.2.1 部署备份介质

可使用 NFS,所有 ObServer 都要连接到NFS服务器(或采用 OSS 服务器)

<此处略:详细步骤请见实验指导手册>

7.2.2.2 执行备份
  1. 配置备份目的地: 执行Alter system 语句配置备份目的地
  • NFS : obclient> ALTER SYSTEM SET backup_dest='file:///data/nfs/backup’;
  • OSS: obclient>ALTER SYSTEM SET backup_dest='oss://XXXXXXXXXXXXXXXXXXXXXXX;
  1. 启动Oceanbase 的数据库日志归档功能
  • obclient> ALTER SYSTEM ARCHIVELOG
  1. 执行全量备份或增量备份
  • obclient> ALTER SYSTEM MAJOR FREEZE; <--------执行全量备份前,对集群进行一次合并
  • obclient> SET ENCRYPTION ON IDENTIFIED BY ‘password’ ONLY; <----设置备份密码(可选)
  • obclient> ALTER SYSTEM BACKUP DATABASE; <-------执行全量备份
  • obclient> Alter system backup incremental Database ; ; <-------执行增量备份, 确保已经有全量备份存在
  1. 查看任务状态
  • obclient> SELECT * FROM CDB_OB_BACKUP_PROGRESS; <---------- 查看备份任务
  • obclient> SELECT * FROM CDB_OB_BACKUP_SET_DETAILS;; <-----查看备份任务历史
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

埃泽漫笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值