备份还原简介

数据库备份是 DBA 日常最重要的工作内容。备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。

本章主要介绍 DM 备份与还原的概述和基本概念,为理解归档配置、备份还原的原理与工具使用奠定基础,内容主要包括:

  • 概述
  • 基本概念

1.1 概述

DM 数据库中的数据存储在数据库的物理数据文件中,数据文件按照页、簇和段的方式进行管理,数据页是最小的数据存储单元。任何一个对 DM 数据库的操作,归根结底都是对某个数据文件页的读写操作。

因此,DM 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页。而在备份的过程中,如果数据库系统还在继续运行,这期间的数据库操作并不是都会立即体现到数据文件中,而是首先以日志的形式写到归档日志中,因此,为了保证用户可以通过备份集将数据恢复到备份结束时间点的状态,就需要将备份过程中产生的归档日志也保存到备份集中。

还原与恢复是备份的逆过程。还原是将备份集中的有效数据页重新写入目标数据文件的过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定时间点和指定 LSN。恢复结束以后,数据库中可能存在处于未提交状态的活动事务,这些活动事务在恢复结束后的第一次数据库系统启动时,会由 DM 数据库自动进行回滚。备份、还原与恢复的关系如图 1.1 所示。

备份、还原与恢复

图1.1备份、还原与恢复

1.2 基本概念

本节介绍与 DM 备份与还原相关的一些基本概念,了解这些基本概念是阅读后续章节的基础。

1.2.1 表空间与数据文件

DM 数据库的表空间是一个逻辑概念,其目的主要是为了方便数据库的管理,数据库的所有对象在逻辑上都存放在某个表空间中,而物理上都存储在所属表空间的数据文件中。一个表空间由一个或多个数据文件组成。

数据文件是数据库中最重要的文件类型,是真实数据存储的地方。DM 中数据文件的扩展名为.DBF,分为系统默认生成的数据文件和用户自己创建的数据文件两类。需要注意的是,HUGE 数据文件不同于一般数据文件,其扩展名为.DTA。

DM 数据库中的表空间可以分为普通表空间和混合表空间。普通表空间不能存储 HUGE 表,而混合表空间可以同时存储普通(非 HUGE)表和 HUGE 表,其中 HUGE 数据文件存储在混合表空间定义中指定的 HUGE 数据文件路径下。可以通过为普通表空间添加 HUGE 数据文件路径将其升级为混合表空间。

在创建 DM 数据库时,系统会自动创建 4 个表空间:SYSTEM 表空间、ROLL 表空间、MAIN 表空间和 TEMP 表空间。DM 自动为这几个自动创建的表空间分别生成默认的数据文件:SYSTEM.DBF、ROLL.DBF、MAIN.DBF 和 TEMP.DBF。另外,DM 还会自动创建一个 HMAIN 目录,并将其路径作为 MAIN 表空间的 HUGE 数据文件路径,因此 MAIN 表空间为混合表空间。

用户也可以创建自己的表空间,由用户创建的表空间统称为用户自定义表空间,在创建自定义表空间时需要为表空间指定数据文件。

因此,DM 中的表空间有以下几类:

SYSTEM 表空间

存放了 DM 数据库全局字典信息和全局系统数据,是 DM 数据库能够正常运行的必要前提,默认对应数据文件 SYSTEM.DBF。CREATE TABLE 等 DDL 操作会修改 SYSTEM 表空间数据。

ROLL 表空间

存放 DM 数据库运行过程中产生的所有回滚记录。DM 中几乎所有的数据库修改操作都会生成回滚记录,并保存在 ROLL 表空间的数据文件中。ROLL 表空间是数据库全局对象,不论修改哪一个表空间,生成的回滚记录都是写入 ROLL 表空间,该表空间由系统自动维护,默认数据文件为 ROLL.DBF。

TEMP 表空间

存放临时表数据以及数据库运行过程中产生的临时数据。在数据库运行过程中,SORT、HASH JOIN 等操作都可能会生成临时结果集,它们作为临时数据存放在 TEMP 表空间中。TEMP 表空间是数据库全局对象,由系统自动维护。若数据库重启,保存在 TEMP 表空间中的所有数据都会丢失。TEMP 表空间的默认数据文件为 TEMP.DBF。

DM 的物理备份还原不支持:TEMP 表空间。

MAIN 表空间

MAIN 表空间为混合表空间。在创建用户时,如果没有指定默认表空间,系统自动指定 MAIN 表空间为用户默认的表空间。MAIN 表空间的默认数据文件为 MAIN.DBF,默认 HUGE 数据文件路径为 HMAIN 目录所在路径。

用户自定义表空间

即用户通过创建表空间相关操作生成的表空间。

图 1.2 显示了一个完整的 DM 数据库的表空间和数据文件分布情况,其中 BOOKSHOP 为用户自定义表空间。

表空间和数据文件分布

图1.2一个完整DM数据库的表空间和数据文件分布

1.2.2 重做日志

重做日志,又叫 REDO 日志,忠实记录了所有物理页的修改,基本信息包括操作类型、表空间号、文件号、页号、页内偏移、实际数据等。数据库中 INSERT、DELETE、UPDATE 等 DML 操作以及 CREATE TABLE 等 DDL 操作最终都会转化为对某些数据文件、某些数据页的修改。因此,在系统故障重启时,通过重做 REDO 日志,可以将数据库恢复到故障时的状态。

DM 数据库默认包含两个扩展名为 log 的日志文件,用来保存 REDO 日志,称为联机重做日志文件。这两个文件循环使用。任何数据页从内存缓冲区写入磁盘之前,必须保证其对应的 REDO 日志已经写入到联机日志文件。

REDO 日志包(RLOG_PKG)是 DM 数据库保存 REDO 日志的数据单元,一个日志包内可保存一个或多个 PTX 产生的 REDO 日志。日志包具有自描述的特性,日志包大小不固定,采用固定包头和可变包头结合的方式,包头记录日志的控制信息,包括类型、长度、包序号、LSN 信息、产生日志的节点号、加密压缩信息、日志并行数等内容。

日志包生成时按照序号连续递增,相邻日志包的 LSN 顺序是总体递增的,但是在 DMDSC 集群环境下不一定连续。如果未开启并行日志,RLOG_PKG 包内日志的 LSN 是递增的。如果开启并行日志,一个 RLOG_PKG 包内包含多路并行产生的日志,每一路并行日志的 LSN 是递增的,但是各路之间的 LSN 并不能保证 LSN 有序,因此并行日志包内 LSN 具有局部有序,整体无序的特点。

1.2.3 归档日志

DM 数据库可以在归档和非归档两种模式下运行。DM 支持多种归档方式。系统在归档模式下运行会更安全,当出现介质故障,如磁盘损坏导致数据文件丢失、异常时,利用归档日志,系统可以恢复至故障发生的前一刻。因此,为了保证归档日志文件和数据文件不同时出现问题,建议将归档目录与数据文件配置、保存到不同的物理磁盘上。除了表备份还原,其他的联机备份与还原必须运行在归档模式下。

DM 数据库定义了多种归档方式,包括本地归档、实时归档、即时归档、异步归档和远程归档,其中本地归档和远程归档与备份还原密切相关。

系统将 REDO 日志写入联机日志文件后,根据归档的配置情况,异步地将 REDO 日志写入本地归档日志文件。归档日志文件的命名方式可以参考《DM8 数据守护与读写分离集群 V4.0》。

1.2.4 LSN 介绍

LSN(Log Sequence Number)是由系统自动维护的 Bigint 类型数值,具有自动递增、全局唯一特性,每一个 LSN 值代表着 DM 系统内部产生的一个物理事务。物理事务(Physical Transaction,简称 ptx)是数据库内部一系列修改物理数据页操作的集合,与数据库管理系统中事务(Transaction)概念相对应,具有原子性、有序性、无法撤销等特性。

DM 数据库中与 LSN 相关的信息,可以通过查询 v$rlog 和 V$RAPPLY_PARALLEL_INFO 表来获取。DM 主要包括以下几种类型的 LSN:

  • CUR_LSN 是系统已经分配的最大 LSN 值。物理事务提交时,系统会为其分配一个唯一的 LSN 值,大小等于 CUR_LSN+1,然后再修改 CUR_LSN=CUR_LSN+1。
  • FLUSH_LSN 是已经发起日志刷盘请求,但还没有真正写入联机 Redo 日志文件的最大 LSN 值。
  • FILE_LSN 是已经写入联机 Redo 日志文件的最大 LSN 值。每次将 Redo 日志包 RLOG_PKG 写入联机 Redo 日志文件后,都要修改 FILE_LSN 值。
  • CKPT_LSN 是检查点 LSN,所有 LSN <= CKPT_LSN 的物理事务修改的数据页,都已经从 Buffer 缓冲区写入磁盘,CKPT_LSN 由检查点线程负责调整。

数据库故障重启时,CKPT_LSN 之前的 REDO 日志不需要重做,只需要从 CKPT_LSN+1 开始重做 REDO 日志,就可以将系统恢复到故障前状态。并且,在联机重做日志文件中,LSN 值<=CKPT_LSN 的 REDO 日志都可以被覆盖。

  • APPLY_LSN 是数据库还原恢复后已经写入联机 Redo 日志文件的日志包的原始最大 LSN 值,APPLY_LSN 取自源库的原始日志包中的最大 LSN 值。DSC 集群的每一个节点独立维护 APPLY_LSN。
  • RPKG_LSN 是数据库还原恢复后已经重演日志的最大 LSN。DSC 集群的每一个节点独立维护 RPKG_LSN。

1.2.5 包序号介绍

每个 RLOG_PKG 都有对应的序号属性,称之为包序号(PKG SEQNO),日志包生成时按照序号连续递增。包序号包括本地包序号(LSEQ)和全局包序号(GSEQ),本地包序号是节点内唯一、连续递增的值,用于校验联机日志连续性;全局包序号由数据守护集群的主备库共同维护,具有全局唯一、连续、递增的特性,用于校验归档日志的连续性。

DM 数据库中与全局包序号相关的信息,可以通过查询 v$rlog 和 V$RAPPLY_PARALLEL_INFO 表来获取。数据库端主要包括以下几种类型的全局包序号:

  • CUR_SEQ 是系统已经分配的最大全局包序号。RLOG_PKG 写入联机日志文件前,系统会为其分配一个唯一的全局包序号。
  • FILE_SEQ 是已经写入联机 Redo 日志文件的最大全局包序号。每次将 Redo 日志包 RLOG_PKG 写入联机 Redo 日志文件后,都要修改 FILE_SEQ 值。
  • APPLY_SEQ 是数据库还原恢复后已经写入联机 Redo 日志文件的原始最大全局包序号,APPLY_SEQ 取自源库的原始日志包的包序号。DSC 集群的每一个节点独立维护 APPLY_SEQ。
  • RPKG_SEQ 是数据库还原恢复后已经重演日志的最大全局包序号。DSC 集群的每一个节点独立维护 RPKG_SEQ。

1.2.6 检查点

DM 数据库运行过程中,用户的所有操作都在内存中进行。每修改一条记录都必须先把记录所在的数据页加载到 BUFFER 缓冲区中,然后进行修改。事务运行时,会把生成的 REDO 日志保留在 Redo 日志包 RLOG_PKG 中,每条日志记录对应一个 LSN,当事务提交或 Redo 日志包满或执行检查点时会进行日志刷盘。

检查点(checkpoint)是一个数据库事件,它的功能是按照数据页的修改顺序,依次将 BUFFER 缓冲区中的脏页写入磁盘,并在这个过程中动态调整 CKPT_LSN 值,释放日志空间。

DM 的检查点分为两种:完全检查点和部分检查点:

  • 完全检查点:会将内存缓冲区中的所有脏页写入磁盘,并调整 CKPT_LSN,在数据库正常关闭时会产生一个完全检查点。
  • 部分检查点:根据 dm.ini 配置文件中的参数 CKPT_FLUSH_RATE 和 CKPT_FLUSH_PAGES,确定每次检查点刷脏页的数量。执行部分检查点的过程中,DDL/DML 操作都可以正常执行,DM 系统中绝大多数情况下触发的都是部分检查点。

数据库运行过程中产生的待写入日志首先写入 Redo 日志包 RLOG_PKG,当日志刷盘时一起写入联机日志文件中。在联机日志文件中,可以覆盖写入 REDO 日志的文件长度为可用日志空间;不能被覆盖的 REDO 日志,系统故障重启需要重做的 REDO 日志为有效日志,有效日志的 LSN 取值范围是(CKPT_LSN,FILE_LSN]。

下图说明了联机日志文件、Redo 日志包 RLOG_PKG 以及相关各 LSN 之间的关系。

联机日志文件与 Redo 日志包

图1.3联机日志文件与Redo日志包

1.2.7 备份集

备份集用来存放备份过程中产生的备份数据及备份信息。一个备份集对应了一次完整的备份。一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。并行备份和非并行备份情况下,备份集里的内容略有不同。

1.2.7.1 备份片

备份片用来存储备份数据的文件。备份时,目标数据文件内容或归档日志内容经过处理后,都会存放到各自的备份片文件中。备份片文件后缀为.bak,用来存放备份数据,备份集中存放数据页的备份片称为数据备份片,存放 REDO 日志的备份片称为日志备份片。

备份片的大小可以在备份时通过 MAXPIECESIZE 指定,一个备份集中可能生成多个备份片。

1.2.7.2 元数据

元数据文件用来存放备份信息,元数据文件的后缀为.meta。通过元数据文件,可以了解整个备份集信息。元数据文件中包含的备份信息包括:

  • 备份集本身相关的信息,如是否联机备份,备份的范围,备份的加密信息,以及备份的压缩信息等;
  • 备份源库的建库参数信息,如 DSC 的节点数,是否大小写敏感,PAGE_CHECK 属性等;
  • 数据文件信息,如备份了哪些数据文件,文件大小,以及文件相关的表空间信息等;
  • 备份片的信息,如包含哪些备份片文件、备份片大小等信息;
  • 备份库的 dm.ini 参数信息和密钥文件(dm_service.prikey 或者 dm_external.config,若指定 usbkey 加密,则不备份)。

1.2.8 备份

备份的目的是当数据库遇到损坏的情况下,可以执行还原恢复操作,把数据库复原到损坏前的某个时间点。用于还原恢复数据库的载体是备份集,生成备份集的过程便是备份了。

备份就是从源库(备份库)中读取有效数据页、归档日志等相关信息,经过加密、压缩等处理后写入备份片,并将相关备份信息写入备份元数据文件的过程。

下面将根据数据组织形式、数据库状态、备份粒度、备份范围、以及备份的一致性和完整性等差异,对备份进行介绍。

1.2.8.1 逻辑备份和物理备份

逻辑备份是指利用 dexp 导出工具,将指定对象(库级、模式级、表级)的数据导出到文件的备份方式。逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置。

物理备份则直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。物理备份过程中,不关心数据页的具体内容是什么,也不关心数据页属于哪一张表,只是简单的根据数据库文件系统的描述,来挑选有效的数据页。

这两种备份方式,分别适应不同的应用场景,本书重点介绍物理备份,关于逻辑备份更详细的说明,可参考《DM8_dexp 和 dimp 使用手册》。

1.2.8.2 联机备份和脱机备份

数据库处于运行状态、并正常提供数据库服务情况下进行的备份操作,我们称为联机备份。数据库处于关闭状态时进行的备份操作,被称为脱机备份。

从 V2.0 版本开始,使用 DMRMAN 工具进行脱机备份,并且支持对异常关闭的数据库进行脱机库备份。备份异常关闭的数据库,要求配置了本地归档,如果本地归档不完整,则需要先修复本地归档,再进行备份。

联机备份则使用客户端工具连接到数据库实例后,通过执行 SQL 语句进行;也可以通过配置作业,定时完成自动备份。联机备份不影响数据库正常提供服务,是最常用的备份手段之一。

联机备份时,可能存在一些处于活动状态的事务正在执行,为确保备份数据的一致性,需要将备份期间产生的 REDO 日志一起备份。因此,只能在配置本地归档、并开启本地归档的数据库上执行联机备份。

注意

只有已经关闭的数据库才允许执行脱机备份。正在运行的数据库,无法执行脱机备份,系统会报错。

1.2.8.3 数据备份和归档日志备份

按照备份内容不同,可以分为数据备份和归档日志备份。

  • 数据备份

数据备份主要针对数据文件内容,包括库备份、表空间备份和表备份。其中,未指定 WITHOUT LOG 参数执行的库备份和表空间备份还包含了 REDO 日志备份。

库备份,顾名思义就是对整个数据库执行的备份,又称为库级备份。库备份会拷贝数据库中所有数据文件的有效数据页。

表空间备份是针对特定表空间执行的备份,又称为表空间级备份。表空间备份只能在联机状态下执行。

表备份则拷贝指定表的所有数据页到备份集中,并会记录各个数据页之间的逻辑关系用以恢复。表备份只能在联机状态下执行,一次表备份操作只能备份一张用户表,并且不支持增量表备份。

  • 归档日志备份

归档日志备份是专门针对归档日志文件进行操作,不涉及任何数据文件内容。归档日志备份扫描归档目录收集归档日志文件,并将归档日志写入到备份集中。既可以在数据库运行状态下,执行联机归档日志备份;也可以在数据库关闭状态下执行脱机归档日志备份。

1.2.8.4 归档日志备份范围

联机备份过程中,用户可以正常访问、修改数据库,为了准确记录备份过程中产生了哪些 REDO 日志,确定日志备份范围,我们特别定义了下述几个包序号和 LSN:

  • 节点 BEGIN_LSN

为了保证备份的完整性和有效性,必须包含的归档日志起始 LSN 值。BEGIN_LSN = 备份开始时检查点偏移前一个 RLOG_PKG 的 max_lsn。

  • 节点 BEGIN_SEQ

BEGIN_SEQ 记录了 BEGIN_LSN 所在 Redo 日志包的序号。

  • 节点 END_LSN

为了保证备份的完整性和有效性,必须包含归档日志结束 LSN 值。END_LSN = 备份结束时 FILE_LSN。

  • 节点 END_SEQ

END_SEQ 记录了 END_LSN 所在 REDO 日志包的序号。

  • BAK_END_LSN

备份结束时,可以保证事务一致性的全局备份结束 LSN。单节点 BAK_END_LSN 等于 END_LSN;DSC 集群环境中,每个节点的 END_LSN 都不相同,BAK_END_LSN 大于等于最大的 END_LSN。

如果 BEGIN_SEQ 等于 END_SEQ,则表明备份过程中,该节点没有任何数据被修改。为了简化还原过程,增量备份时要求 BEGIN_LSN 必须大于等于基准备份的 END_LSN,如果不满足条件,则强制生成检查点,直到 BEGIN_LSN 满足条件为止。

1.2.8.5 一致性备份和非一致性备份

按照备份集中的数据是否满足一致性,可以将备份划分为一致性备份和非一致性备份。

不指定 WITHOUT LOG 选项的备份生成的备份集就是一致性备份。一致性备份的备份集包含了完整的数据文件内容和 REDO 日志信息;利用一个一致性备份集就可以将数据库恢复到备份时状态。

指定 WITHOUT LOG 选项的备份生成的备份集都是非一致性备份集。非一致性备份的备份集只包含数据文件相关内容,没有 REDO 日志信息,利用非一致性备份集还原的数据库,无法直接启动,必须借助归档日志进行恢复之后才可以启动。但是有一种情况除外:数据库正常关闭时,会生成完全检查点,脱机备份生成的备份集中,不包含任何 REDO 日志。因此脱机备份一个正常关闭的数据库,既可以从归档日志恢复也可以从备份集恢复。

表空间备份生成的备份集是非一致性备份集。

1.2.8.6 完全备份和增量备份

按照备份数据完整性,可将备份分为完全备份和增量备份。库备份和表空间备份支持增量备份,表备份和归档备份不支持增量备份。

完全备份生成的备份集包含了指定库(或者表空间)的全部有效数据页。当数据规模比较大的情况下,生成的完全备份集通常会比较大,而且备份时间也会比较长。

增量备份是在某个特定备份集基础上,收集数据库新修改的数据页进行备份,可以有效减少备份集的空间占用、提高备份速度。这个特定的、已经存在的备份集称为增量备份的基备份,根据对基备份的要求不同,DM 的增量备份分为以下两种:

  1. 差异增量备份

差异增量备份的基备份既可以是一个完全备份集,也可以是一个增量备份集。

利用增量备份进行还原操作时,要求其基备份必须是完整的;如果差异增量备份的基备份本身也是一个增量备份,那么同样要求其基备份是完整的;任何一个增量备份,最终都是以一个完全备份作为其基备份。因此,完全备份是增量备份的基础。

  1. 累积增量备份

累积增量备份的基备份只能是完全备份集,而不能是增量备份集。

增量备份的基备份集既可以是脱机备份生成的,也可以是联机备份生成的,脱机增量备份的基备份集可以是联机备份生成的,联机增量备份的基备份集也可以是脱机备份生成的。

1.2.9 还原

还原是备份的逆过程,就是从备份集中读取数据页,并将数据页写入到目标数据库对应数据文件相应位置的过程。

由于联机备份时,系统中可能存在一些处于活动状态的事务正在执行,并不能保证备份集中的所有数据页是处于一致性状态;而脱机备份时,数据页不一定是正常关闭的,也不能保证备份集中所有数据页是处于一致性状态。因此,还原结束后目标库有可能处于非一致性状态,不能马上提供数据库服务;必须要进行数据库恢复操作后,才能正常启动。

与备份类似,下面将从数据组织形式、数据库状态、还原粒度、完整性等方面介绍还原的相关内容。

1.2.9.1 逻辑还原和物理还原

逻辑还原是逻辑备份的逆过程,逻辑还原就是使用 dimp 工具,把 dexp 导出的备份数据重新导入到目标数据库。

物理还原是物理备份的逆过程,物理还原一般通过 DMRMAN 工具(或者 SQL 语句),把备份集中的数据内容(数据文件、数据页、归档文件)重新拷贝、写入目标文件。

关于逻辑还原更详细的说明,可参考《DM8_dexp 和 dimp 使用手册》。本文档主要介绍物理备份、还原相关内容。

1.2.9.2 联机还原和脱机还原

联机还原指数据库处于运行状态时,通过 SQL 语句执行还原操作。表还原可以在联机状态下执行。

脱机还原指数据库处于关闭状态时执行的还原操作,脱机还原通过 DMRMAN 工具进行。库备份、表空间备份和归档备份,可以执行脱机还原。脱机还原操作的目标库必须处于关闭状态。

1.2.9.3 数据还原和归档日志还原

根据备份集类型,数据还原可以分为库还原、表空间还原和表还原。库还原和表空间必须脱机执行;表还原操作只能联机执行。

表空间还原的数据来源既可以是表空间备份集,也可以是库备份集。还原的目标表空间不能是 TEMP 表空间,只能是 MAIN、SYSTEM、ROLL 表空间,或者用户定义的表空间。

表还原从表备份集读取数据,重新恢复目标表数据,还会在目标表上重建索引、约束。

归档日志还原则将归档日志备份集中的归档日志内容,重新生成到指定目录中。

1.2.9.4 完全还原和增量还原

完全还原是指直接利用完全备份集进行数据还原操作。增量还原指通过增量备份集进行数据还原操作。但是考虑到增量备份集的基础一定是一个完全备份集,因此增量还原过程中隐含了一个完全还原操作。如果增量备份集的基备份集被删除了,那么单独使用这个增量备份集是无法进行还原操作的。

1.3 备份还原过程

针对不同的备份对象,一个完整的备份还原过程包含的步骤不同。下面分别进行介绍:

  • 库备份与还原包括:备份—还原—恢复。此处恢复又细分为恢复一致性、更新 DB_MAGIC 两步;
  • 表空间备份与还原包括:备份—还原—恢复。此处恢复只包括恢复一致性这一步;
  • 表备份与还原包括:备份—还原;
  • 归档备份与还原包括:备份—还原。

上述有的步骤既可以在联机状态下执行,又可以在脱机状态下执行。用户可根据实际需要选择联机或脱机执行,任选一种即可。下表中列出了不同的状态下所支持的操作。

表 1.1 不同状态下支持的备份还原操作

表 1.1 不同状态下支持的备份还原操作.png

1.4 介质管理层

DM 通过介质管理层 MML,将备份、还原和恢复过程中备份片文件和元数据文件的读取写入动作进行抽象、隔离,备份还原过程中 MML 层会调用一组 SBT 接口来访问备份存储介质。SBT 接口是 DM 定义的一组 API 函数,允许第三方厂商定制、管理备份存储介质;DM 系统自带的备份还原功能也遵循了 SBT 规范。

如果备份、还原时指定 DEVICE TYPE 为 TAPE,且使用第三方提供的 dmsbtex.dll(dmsbtex.so)来完成备份文件的存取功能,则 DEVICE TYPE 指定 TAPE 时还会提供 PARMS 关键字,用于传递第三方可识别的自定义字符串。使用第三方提供的动态库时,用户层应用不受影响。默认 DEVICE TYPE 为 DISK,使用达梦自带 SBT 磁盘存储。

1.5 备份方式

当前仅支持备份集方式的备份还原,不再支持其他备份方式。备份还原实现策略有两种:dmap 辅助进程方式和无辅助进程方式。用户可通过 DM.INI 参数 bak_use_ap 来选择(dmrman 使用参数 use_ap),bak_use_ap 可取值 1、2。默认为 1。

bak_use_ap 的两种取值的相应作用如下:

1:DMAP 辅助进程方式,可支持第三方备份(指定 DEVICE TYPE 为 TAPE)。DMAP 插件执行,改造了备份还原任务子系统,允许指定并行度,大幅提升了备份还原的效率,特别是加密、压缩的处理效率。如果选择使用 DMAP 辅助进程,执行备份还原之前就必须启动 DMAP 服务。安装 DM 数据库以后,DMAP 服务会自动启动。如果需要手动启动,有两种途径,一是启动 DM 服务查看器中的 DmAPService。二是通过手动启动 DMAP 执行码实现,DMAP 执行码位于 DM 安装目录的 bin 子目录下。除此之外,LINUX 下,还可以调用 bin 目录下的 DmAPService 脚本。

2:无辅助进程方式,不依赖 DMAP,由主进程 dmserver 自身执行备份还原,但不支持第三方备份(指定 DEVICE TYPE 为 TAPE)。

DMAP 的使用说明,请参考《DM8 SQL 语言使用手册》。

微信扫码
分享文档
扫一扫
联系客服