GBase8s提供了ontape和onbar两种备份和恢复数据库的工具。它们都可以用来完成系统备份、逻辑日志备份以及系统恢复等功能,同时这两种工具也有着各自不同的特性 ontape的使用十分简单、方便,但是必须在命令行环境下执行。
onbar需要结合存储管理软件来进行工作。这些软件既可以是GBase 8s的存储管理软件,也可以是第三方的存储管理软件。并且这此存储管理软件所支持的设备都可以用来进行onbar的备份和恢复。另外,onbar支持将数实恢复到某时间点的功能。
需要注意的是,这两个工具是相互排斥的,比如一个用ontape 生成的备份不能用onbar来恢复,反之亦然,不管选择哪种工具,其基本的备份和恢复过程是相同的。
下面我们主要介绍GBase8s各份和还原的基本原理和步骤。
GBase 8s的备份是将数据库中部分或者全部的存储空间以及逻辑日志文件进行复制。备份的对象可以是单个的dbspace,也可以是一组dbspace。一个 dbspace 又可以包含一个或者多个数据库,也可以是一个表或者表的一个分区。
GBase 8s的备份分为三个级别,分别是零级备份、一级备份和二级备份。
零级备份:基础备份,包含备份命令执行时服务器或者指定dbspace上的所有数据。
一级备份:包含最近一次零级备份后所进行修改的服务器所有数据或指定dspacc上的数据备份。
二级备份:包含最近一次零级备份或一级备份后所进行修改的服务器的所有数据备份。
值得注意的是,GBase 8s在进行很多数据库管理操作之前都需要进行零级备份,为了确保数据库的恢复,在进行以下操作前需对rootdbspace及修改过的dbspace进行零级备份。
- 添加或删除镜像。
- 添加逻辑日志文件。
- 更改物理日志的大小或者位置
- 删除一个chunk或者 dbspace
在以下操作之后,需要对受到影响的 dbspace 进行零级备份:
- 更改存储管理配置。
- 增加一个 dbspace 或者 blobspace。
- 对一个包含逻辑日志文件的dbspace 做镜像。
- 增加一个逻辑日志文件(为了使日志文件可用)。
- 删除逻辑日志文件。
- 更改物理日志的大小或者位置,并且重新启动共享内存。
备份创建
在数据库启动备份时,系统将会按照以下步骤进行备份。(1)服务器临时冻结逻辑日志,检查逻辑日志的剩余空间。若剩余空间小于一个逻辑日志文件大小的一半,则服务器将中断备份。此时需要用户先将逻辑日志备份到其他磁盘空出足够的逻辑日志空间,再重新提交备份指令。
(2)服务器执行检查点操作,在检查点之后所创建的页面不会被备份,而物理日志中之前的数据页将会被备份。
(3)服务器建立一张列列表中包含了每个chunk中需要备份的页信息。在检查点立时来被使用过的页面不会被备份。
(4)服务器会物理日志中为每一个备份的dbspace建立一张临时表。用来记录检查健立后,用户对数据库进行的修改。这些临时表将会在SPACETEMP的 pce当没有够的时空间时,服务器将
疼止此次备份。
(5)启动用于备份数据的内部线程。
逻辑日志备份
逻辑日志备份是将一个或多个逻辑日志文件复制到第二存储媒介的过程。在逻辑日志文件中记录了检查点、DDL语和库入新等操作。每个服务器的逻辑日志文件的数目是有限的,服务器以循环的方式利用逻辑日志,并将日志记录连续地写入日志文件中。当第一个日志文件写满后,服务器开始写入第二个日志文件,以此类推。当所有的日志文件都被用完后,服务器将重新写入第一个日志文件。因此,在服务器重新利用一个日志文件之前,该文件必须被备份。逻辑日志有两种备份方式,分别是请求式备份和连续日志备份。
请求式备份:这种备份方式需要显式启动,它会备份除当前正在使用的逻辑日志文件外所的有日志文件。这种逻辑日志备份方式需要进行频繁的备份。
连续日志备份:这种方式会在一个逻辑日志写满后对其进行自动备份,因此尤其适用于使用不同的磁盘备份数据和日志的情况。
大对象和日志备份
当数据库包含存储在bobspace中的简单二进制大对象(blob)时,由于服务器不记 blob的相关日志,当数据库中的 byte 或者 text 列被更新时.blob 将会被写到新的 blobpage中,同时原来的blobpage 会被保留,一直到包含 free-map page 和 free-map list page 的逻辑日志被备份时才会被删除。同样,在删除一个大对象时,相应的bobpage直到包含 free-man page 和 free-map list page 的逻辑日志备份后才会被释放。智能大对象备份
GBase 8s 也支持智能大对象的增量备份。在之前系统备份时间戳与当前系统时间截之间的页面将会被备份。在对大对象做增量备份时,首先要读large-objectheader页面。并在内存中生成一个需要做备份的页面列表。将这些页面读出并比较它们之的时间戳,以此来决定这些页面是否被送到备份程序。
智能大对象的元数据备份和普通dbspace 的备份是相同的,在页面的备份方法上有所不同。智能大对象页面的具体备份过程如下。
(1)首先在 sbspace 上加锁,读取 large-object header 分区中的信息,生成需要备份的列表,这个列表也被称作备份描述页。
(2)将这个列表发送到数据库服务器的备份线程中,备份线程将扫描和检索这些页面,并将这些页面送到客户端程序中。
(3)sbspace 页面的备份顺序如图11.7所示,备份描述页是一种用来记录所备份用户数据的偏移量和大小的特殊数据结构。
智能大对象恢复
智能大对象恢复过程如下。(1)首先恢复元数据。
(2)备份描述控制页面列表列出了用户页面将要被恢复的去向。这些列表的物理地址 extent 大小将被记录在内存表中。
(3)恢复客户端将从磁盘上读取 smart-large-object页面,并由服务器将其写入控制页所指定的位置。
另外,在 GBase 8s进行恢复时,需要用到以下的配置文件。
- ONCONFIG配置文件。
- Sqlhosts 文件。
- Sm_version 文件。
- 紧急引导文件ixbar.*
物理恢复和逻辑恢复
恢复过程分为物理恢复和逻辑恢复两个部分。物理恢复是通过恢复零级备份、一级备份或二级备份来恢复存储空间的过程。逻辑恢复是指在物理恢复之后,通过磁盘上的逻辑日志备份重做或撤销相关事务,将数据库恢复到故障前状态的过程。冷恢复和热恢复
恢复又可以分为冷恢复和热恢复。冷恢复是指系统恢复时服务器要处于离线状态,直到那些关键的space功之后,数据库才可以被访问。一般在以下场景中需要对数据做冷恢复。- 数据库服务器不能使用,不能切换到在线模式。
- 关键的dbspace.如 root dbspace 或者逻辑日志所在的dbspuce 不能使用。
冷恢复和热恢复同时使用被称为混合恢复。当用户希望尽快恢复系统,并且不需要所有的bspace使用时可使用合恢混合恢复首先使用冷恢复进行oot dbspace、物理日志和逻辑日志所在的dbspace 的恢复。当这些dbspace都恢复成功后,用户就可以开始访问数据库了。剩余的dbspace 可以通过热恢复来进行恢复。
日志抢救
日志抢救是指在服务器处于离线状态时,用户仍然可以备份逻辑日志。如图11.10所示,那些还没有备份且没有被损坏的日志将会被备份出来,这些日志文件将会同之前的备份日志一起回滚。从而保证数据库的完整性。为了确保冷恢复时没有数据丢失,一般需要手动地进行日志抢救。




