DM数据库——备份与还原

DMs数据库——备份还原

备份还原简介

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

  • 概述
    • DM 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页。

    • 还原与恢复是备份的逆过程。还原是将备份集中的有效数据页重新写入目标数据文件的过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态。

      在这里插入图片描述

  • 基本概念
    • 表空间与数据文件
      • 表空间是一个逻辑概念,其目的主要是为了方便数据库的管理,数据库的所有对象在逻辑上都存放在某个表空间中,而物理上都存储在所属表空间的数据文件中。一个表空间由一个或多个数据文件组成
      • **数据文件是数据库中最重要的文件类型,是真实数据存储的地方。**DM 中数据文件的扩展名为.DBF。
      • 创建 DM 数据库时,系统会自动创建 4 个表空间:SYSTEM 表空间、ROLL 表空间、MAIN 表空间和 TEMP 表空间。以下从这几个表空间介绍
        • 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。
        • MAIN空间
          • MAIN 表空间为混合表空间。在创建用户时,如果没有指定默认表空间,系统自动指定 MAIN 表空间为用户默认的表空间。MAIN 表空间的默认数据文件为 MAIN.DBF,默认 HUGE 数据文件路径为 HMAIN 目录所在路径。
    • 重做日志
      • 忠实记录了所有物理页的修改,基本信息包括操作类型、表空间号、文件号、页号、页内偏移、实际数据等。在系统故障重启时,通过重做 REDO 日志,可以将数据库恢复到故障时的状态。
      • REDO 日志包(RLOG_PKG)是 DM 数据库保存 REDO 日志的数据单元,一个日志包内可保存一个或多个 PTX 产生的 REDO 日志。
    • 归档日志
      • DM 数据库可以在归档和非归档两种模式下运行。DM 支持多种归档方式。
        • 本地归档、实时归档、即时归档、异步归档和远程归档,其中本地归档和远程归档与备份还原密切相关。
      • 当出现介质故障,如磁盘损坏导致数据文件丢失、异常时,利用归档日志,系统可以恢复至故障发生的前一刻。
    • LSN介绍
      • log sequence number,由系统自动维护的 Bigint 类型数值,具有自动递增、全局唯一特性,每一个 LSN 值代表着 DM 系统内部产生的一个物理事务。
      • 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 日志,就可以将系统恢复到故障前状态。
        • APPLY_LSN 是数据库还原恢复后已经写入联机 Redo 日志文件的日志包的原始最大 LSN 值,APPLY_LSN 取自源库的原始日志包中的最大 LSN 值。DSC 集群的每一个节点独立维护 APPLY_LSN。
        • RPKG_LSN 是数据库还原恢复后已经重演日志的最大 LSN。DSC 集群的每一个节点独立维护 RPKG_LSN。
    • 包序号介绍
      • 每个 RLOG_PKG(REDO日志包) 都有对应的序号属性,称之为包序号(PKG SEQNO),日志包生成时按照序号连续递增。
      • 包序号包括本地包序号(LSEQ)和全局包序号(GSEQ),本地包序号是节点内唯一、连续递增的值,用于校验联机日志连续性;全局包序号由数据守护集群的主备库共同维护,具有全局唯一、连续、递增的特性,用于校验归档日志的连续性。
      • 数据库端主要包括以下几种类型的全局包序号:
        • 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。
    • 检查点
      • DM数据库每修改一条记录都必须先把记录所在的数据页加载到 BUFFER 缓冲区中,然后进行修改;检查点就是按照数据页的修改顺序,依次将 BUFFER 缓冲区中的脏页写入磁盘,并在这个过程中动态调整 CKPT_LSN 值,释放日志空间。
        • 确保发生故障时可以从最近时间点检查,而不用从头开始
      • 检查点分为两种:
        • 完全检查点:将内存缓冲区中的所有脏页写入磁盘,并调整 CKPT_LSN,在数据库正常关闭时会产生一个完全检查点。
          • 就是把所有数据页写完了再留一个检查点
        • 部分检查点:根据配置文件设置的参数确定每次检查点刷脏页的数量。
    • 备份集
      • 备份集用来存放备份过程中产生的备份数据及备份信息。一个备份集对应了一次完整的备份。一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。
        • 备份片:用来存储备份数据的文件。备份时,目标数据文件内容或归档日志内容经过处理后,都会存放到各自的备份片文件中。备份片文件后缀为.bak,用来存放备份数据。
        • 元数据:用来存放备份信息,元数据文件的后缀为.meta。包含的备份信息:
          • 备份集本身相关的信息,如是否联机备份,备份的范围,备份的加密信息,以及备份的压缩信息等;
          • 备份源库的建库参数信息,如 DSC 的节点数,是否大小写敏感,PAGE_CHECK 属性等;
          • 数据文件信息,如备份了哪些数据文件,文件大小,以及文件相关的表空间信息等;
          • 备份片的信息,如包含哪些备份片文件、备份片大小等信息;
          • 备份库的 dm.ini 参数信息和密钥文件(dm_service.prikey 或者 dm_external.config,若指定 usbkey 加密,则不备份)。
    • 备份
      • 目的是当数据库遇到损坏的情况下,可以执行还原恢复操作,把数据库复原到损坏前的某个时间点。

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

        • 逻辑备份和物理备份

          • 逻辑备份是指利用 dexp 导出工具,将指定对象(库级、模式级、表级)的数据导出到文件的备份方式。逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置。
            • 等于只关系备份的内容,不关心备份数据在何种位置
          • 物理备份则直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。物理备份不关心数据页的具体内容是什么,也不关心数据页属于哪一张表,只是根据数据库文件系统的描述,挑选有效的数据页。
        • 联机备份和脱机备份

          • 数据库处于运行状态、并正常提供数据库服务情况下进行的备份操作,我们称为联机备份。联机备份使用客户端工具连接数据库实例,通过执行 SQL 语句进行;也可以通过配置作业,定时完成自动备份。

            • 联机备份不影响数据库正常提供服务,是最常用的备份手段之一。
          • 数据库处于关闭状态时进行的备份操作,被称为脱机备份。使用 DMRMAN 工具进行脱机备份,并且支持对异常关闭的数据库进行脱机库备份。

            注意:

            只有关闭了的数据库才可以进行脱机备份。正在运行的数据库如果使用脱机备份会报错

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

          • 数据备份主要针对数据文件内容,包括库备份、表空间备份和表备份。
            • 库备份:就是对整个数据库执行的备份,又称为库级备份。库备份会拷贝数据库中所有数据文件的有效数据页。
            • 表空间备份:是针对特定表空间执行的备份,又称为表空间级备份。表空间备份只能在联机状态下执行。
            • 表备份:拷贝指定表的所有数据页到备份集中,并会记录各个数据页之间的逻辑关系用以恢复。
              • 表备份只能在联机状态下执行,一次表备份操作只能备份一张用户表,并且不支持增量表备份。
          • 归档日志备份是专门针对归档日志文件进行操作,不涉及任何数据文件内容。归档日志备份扫描归档目录收集归档日志文件,并将归档日志写入到备份集中。
        • 归档日志备份范围

          • 节点 BEGIN_LSN:归档日志起始 LSN 值
            • BEGIN_LSN = 备份开始时检查点偏移前一个 RLOG_PKG 的 max_lsn
          • 节点 BEGIN_SEQ:记录BEGIN_LSN 所在 Redo 日志包的序号
          • 节点 END_LSN:归档日志结束 LSN 值
            • END_LSN = 备份结束时 FILE_LSN
          • 节点 END_SEQ:END_LSN所在redo日志包的序号
          • BAK_END_LSN:全局备份结束LSN。单节点等于END_LSN,DSC环境,大于等于最大的END_LSN

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

        • 一致性备份和非一致性备份

          • 不指定 WITHOUT LOG 选项的备份生成的备份集就是一致性备份。
            • 一致性备份的备份集包含了完整的数据文件内容和 REDO 日志信息;利用一个一致性备份集就可以将数据库恢复到备份时状态。
          • 指定 WITHOUT LOG 选项的备份生成的备份集都是非一致性备份集。
            • 非一致性备份的备份集只包含数据文件相关内容,没有 REDO 日志信息,利用非一致性备份集还原的数据库,无法直接启动,必须借助归档日志进行恢复之后才可以启动。
        • 完全备份和增量备份

          • 完全备份生成的备份集包含了指定库(或者表空间)的全部有效数据页。当数据规模比较大的情况下,生成的完全备份集通常会比较大,而且备份时间也会比较长。
          • 增量备份是在某个特定的备份基础上,收集数据库新修改的数据页进行备份,可以有效减少备份集的空间占用、提高备份速度。DM的增量备份分为差异增量备份和累积增量备份。两者都必须以一个完全备份作为其基备份。完全备份是增量备份的基础。
    • 还原

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

      • 逻辑还原和物理还原
        • 逻辑还原是逻辑备份的逆过程,逻辑还原就是使用 dimp 工具,把 dexp 导出的备份数据重新导入到目标数据库
        • 物理还原是物理备份的逆过程,物理还原一般通过 DMRMAN 工具(或者 SQL 语句),把备份集中的数据内容重新拷贝、写入目标文件。
      • 联机还原和脱机还原
        • 联机还原指数据库处于运行状态时,通过 SQL 语句执行还原操作。表还原可以在联机状态下执行。
        • 脱机还原指数据库处于关闭状态时执行的还原操作,脱机还原通过 DMRMAN 工具进行。库备份、表空间备份和归档备份,可以执行脱机还原。
      • 数据还原和归档日志还原
        • 数据还原:分为库还原、表空间还原和表还原,表空间还原既可以是表空间备份集,也可以是库备份集。还原的目标表空间不能是TEMP表空间,只能是MAIN、SYSTEM、ROLL表空间和用户定义的表空间。
        • 归档日志还原:将归档日志备份集中的归档日志内容,重新生成到指定目录中
      • 完全还原和增量还原
        • 完全还原是指直接利用完全备份集进行数据还原操作。
        • 增量还原指通过增量备份集进行数据还原操作。增量还原过程中隐含了一个完全还原操作。如果增量备份集的基备份集被删除了,那么单独使用这个增量备份集是无法进行还原操作的。

备份还原原理

  • 归档技术

    备份与恢复过程都依赖归档日志,归档日志是保证数据一致性和完整性的重要保障。配有归档日志的数据库系统在出现故障时丢失数据的可能性更小

    • 归档种类
      • 本地归档
        • REDO 日志本地归档(LOCAL),就是将 REDO 日志写入到本地归档日志文件的过程。配置本地归档情况下,REDO 日志刷盘线程将 REDO 日志写入联机 REDO 日志文件后,对应的 RLOG_PKG 由专门的归档线程负责写入本地归档日志文件中。
        • 本地归档日志文件不能被覆盖,写入其中的 REDO 日志信息会一直保留,直到用户主动删除;如果配置了归档日志空间上限,系统会自动删除最早生成的归档 REDO 日志文件
        • 为了最大限度地保护数据,当磁盘空间不足导致归档写入失败,系统将自动挂起等待,直到释放出足够的空间后继续运行。DM提供了按照指定的时间或指定的LSN删除归档日志的系统函数SF_ARCHIVELOG_DELETE_BEFORE_TIMESF_ARCHIVELOG_DELETE_BEFORE_LSN,谨慎使用。避免归档日志缺失,导致数据无法恢复。
      • 远程归档
        • 远程归档(REMOTE ARCHIVE)专门用于 DMDSC 环境中,是将当前节点的远程归档目录配置为另一节点的本地归档目录,以此来共享它的本地归档日志文件。远程归档必须双向配置,即两个节点将自己的远程归档相互配置在对方机器上。
        • 两种配置方式:
          • 共享本地归档的远程归档,即将远程归档目录配置为另一个节点的本地归档目录,来共享它的本地归档日志文件
          • 通过MAL发送的远程归档,将写入本地归档的REDO日志信息,通过MAL发送到远程节点并写入到指定的目录中,生成远程归档日志文件
    • 归档修复
      • 数据库实例异常关闭时,可能存在部分 REDO 日志未写入本地归档日志文件中,归档日志文件中的内容比实际可恢复的数据少一部分。这种情况下,将无法利用归档日志文件将数据恢复到最新状态,需要从联机日志文件拷贝该部分日志以补齐归档日志。
      • 本地归档修复会扫描联机日志文件,将那些已经写入联机日志文件、但还没有写入到归档日志文件的 REDO 日志,重新写入到归档日志文件,流程如下:
        1. 收集本地归档日志文件;
        2. 扫描归档文件,获取最后一个有效 RLOG_PKG 偏移;
        3. 首先,根据偏移来截取最后一个本地归档日志文件中有效内容,删除掉 RLOG_PKG 偏移之后的多余内容,保留 RLOG_PKG 偏移之前的内容,并调整日志文件头信息。然后,再创建一个新的空的归档日志文件;
        4. 扫描联机日志文件,拷贝缺失的 REDO 日志并写入新创建的归档日志文件。
    • 归档备份还原

      归档日志备份是数据库备份的一个有效补充。在使用非一致性备份集进行还原后,必须使用归档日志进行恢复之后,数据库才能启动

      • 归档备份
        • 归档日志备份专门用来备份本地归档日志文件,将符合条件的本地归档日志文件拷贝到备份集中保存起来。
        • 归档日志备份仅备份指定数据库生成的本地归档日志文件,要求归档日志文件的 DB_MAGIC 与数据库的 DB_MAGIC 保持一致。如果本地归档目录中包含多个不同数据库的归档日志文件,也只会备份一个特定数据库的归档日志。
      • 归档还原
        • 归档日志还原就是将备份集中的归档日志文件重新拷贝到指定归档目录中。使用归档日志备份集,既可以将归档日志文件还原到指定数据(还原时指定目标库的 dm.ini)的归档目录,也可以还原到用户指定的任意归档目录中。
  • 数据备份还原

    在这里插入图片描述

    • 数据备份
      • 根据 DM 数据文件系统的描述信息,准确判断每一个数据页是否被分配、使用,将未使用的数据页剔除,仅保留有效数据页进行备份(称为智能抽取)
      • 对处于 RES_OFFLINE 和 CORRUPT 状态的表空间,则只记录表空间相关信息和状态,不会真正拷贝数据页。数据备份过程中,会对数据进行校验,如果校验失败则会将相关信息写入到日志文件 dm_BAKRES_xxx.log 中,但不会终止当前备份操作。
      • 库备份
        • 完全备份:备份程序会扫描数据文件,拷贝所有被分配、使用的数据页,写入到备份片文件中(如上图中第二根横轴所示)。库备份会扫描整个数据库的所有数据文件。
        • 增量备份:备份程序会扫描数据文件,拷贝所有基备份结束以后被修改的数据页,写入到备份片文件中。
          • 为了简化增量备份的还原过程,避免还原过程中重做基备份集对应的归档日志,DM 要求执行增量备份时,<=基备份 END_LSN 的所有数据页已经写入磁盘。
      • 表空间备份
        • 表空间备份只拷贝指定表空间的数据页,因此,相对于数据库备份而言,表空间备份的速度会更快,生成的备份集会更小。对一些关键数据的表空间,可以使用该备份进一步保障安全
      • 表备份
        • 主要包括数据备份和元信息备份两部分。表备份不需要配置归档就可以执行,并且不支持增量表备份。
    • 压缩与加密
      • DM 支持对备份数据进行压缩和加密处理,用户在执行备份时,可以指定不同的压缩级别,以获得不同的数据压缩比。默认情况下,备份是不进行压缩和加密处理的。
      • 备份加密包括加密密码、加密类型和加密算法三个要素。加密密码通过使用 IDENTIFIED BY<加密密码>来指定,使用备份集的时候必须输入对应密码。加密类型和算法,用户均可手动指定。
    • 并行备份
      • 库备份、表空间备份以及归档日志备份可以进行并行处理,用户通过关键字 PARALLEL 指定是否执行并行备份,以及并行备份的并行数。目前的数据库并行备份还原都是以文件为单位,适用于待备份文件大小比较均匀的情况。
  • 还原

    还原恢复时,若性能较差,则可以通过适当增大 dm.ini 文件中 BUFFER 的参数值或根据当前系统主机核数适当调整 REDOS_PARALLEL_NUM 的参数值来提升还原恢复性能

    • 数据还原
      • 库还原

        DM既可以将一个已存在的数据库作为还原目标库,也可以指定一个路径作为还原目标库的目录。库还原的主要步骤包括:清理目标库环境、重建数据库文件、拷贝数据页、重建联机日志文件、修改配置参数等

        • 清理目标库环境
          • 如果指定已存在的数据库作为还原目标库,还原操作首先解析 dm.ini 配置文件,获取 dm.ctl 控制文件路径,删除控制文件中的数据文件,然后根据 OVERWRITE 选项,如果指定 OVERWRITE 选项,若待还原文件存在,则删除;如果未指定 OVERWRITE 选项,若待还原文件存在,则报错
          • 如果将数据库还原到指定目录,则会在这个目录创建一个dm.ini配置文件,设置CTL_PATH、SYSTEM_PATH配置项指向这个目录,并在这个目录下创建dm.ctl控制文件。DMDSC不支持指定目录还原数据库。
        • 重建数据库文件
          • 如果将一个已存在数据库作为还原目标,则需要将目标数据库的 dm.ini 路径作为还原参数。还原过程中,会重新创建数据文件,并将相关信息写入 dm.ctl 控制文件中。
          • 如果将数据库还原到指定目录,则会在这个目录创建一个 dm.ini 配置文件,设置 CTL_PATH、SYSTEM_PATH 配置项指向这个目录,并在这个目录下创建 dm.ctl 控制文件。DMDSC 不支持指定目录还原数据库。
          • 数据文件重建策略:
            1. 目标库和备份集中的 SYSTEM_PATH 路径相同,则按照备份集中记录的原始路径创建文件;
            2. 目标库和备份集中的 SYSTEM_PATH 路径不相同,默认在目标库的 SYSTEM_PATH 目录下创建文件;
            3. 目标库设置 REDOS_FILE_PATH_POLICY 参数为 1 时,用户创建的表空间(表空间 id 大于等于 5)按照数据文件在源库中的路径结构,在目标库 SYSTEM_PATH 下创建相同路径结构的文件;
            4. 使用 mapped file 指定源文件与目标文件的映射关系,定制数据库文件的物理分布情况,可以很好的满足用户关于数据文件分布的需求。
        • 重建联机日志文件
          • 指定目录还原,系统目录使用指定还原目录,所有库配置文件均认为在指定还原目录下。
          • 联机日志文件命名规则,单机环境为 db_name+ 文件编号.log,其中 db_name 取自备份集备份库的名称,文件编号从 1 开始,如 DAMENG01.log。联机日志文件至少 2 个。
        • 拷贝数据页
          • 从备份集中读取数据页,并将数据页写入数据文件指定位置的过程。
        • 重置目标库
          • 具体包括:
            1. 更新日志信息,设置当前 CKPT_LSN 为备份集中 BEGIN_LSN,并设置日志文件状态为 INACTIVE;
            2. 更新 DB_MAGIC,还原后,库中 PERMANENT_MAGIC 仍与备份集中相同;
            3. 设置还原标志,标识当前库为指定库要还原的库,不允许使用;
            4. 更新目标库的控制文件 dm.ctl,把当前库中的数据文件信息都记录到控制文件中,使用备份集中的服务器秘钥文件,重新生成新的秘钥文件。
        • 修改配置参数
          • 还原到指定库时,默认会保留目标库的配置参数不变,也可以在还原时指定 REUSE DMINI 子句,使用备份集中的配置参数替换目标库 dm.ini 中的配置参数。还原到指定目录时,会重新建立一个dm.ini配置文件,并用备份集中的参数值来设置这些配置项。一般与路径相关的配置参数,不会被替换,而是保留目标库的原始值不变。
          • 注意事项:
            1. 指定的 dm.ini 必须存在且各项配置信息有效,其中 CTL_PATH 必须配置且路径必须有效;
            2. 若指定目录还原,则指定目录作为数据库系统目录处理;
            3. 由于还原是要确保数据库数据的完整性,因此,对于增量备份的还原,需要搜集完整的备份集链表,然后从前到后,逐个还原备份集中数据。鉴于增量备份 BEGIN_LSN 确定规则,增量备份的还原过程中,不需要重做任何归档日志。
      • 表空间还原

        • 表空间还原只可以在脱机状态下执行。脱机时通过 DMRMAN 工具执行,对表空间状态没有限制。如果还原后状态为RES_OFFLINE,表明表空间已进行还原操作,但数据不完整;在部分数据文件损坏时,可以指定还原数据文件,跳过损坏的数据文件。也支持mapped file进行数据文件映射。
      • 表还原

        • 表还原主要包括三部分内容:表结构还原、数据还原、以及重建索引和约束。

        • 如果还原目标表不存在,则利用备份集中记录的建表语句重建目标表,如果存在,则清除表中数据、删除二级索引和约束。数据还原过程从表备份集拷贝数据页,重构数据页之间的逻辑关系,并重新形成一个完整的表对象。在数据还原结束后,使用备份集中记录的信息,重新再表上创建二级索引,并建立各种约束。

        • 表备份集允许跨库还原,但要求还原目标库与源库的数据页大小等建库参数相同。需要匹配的建库参数参考下表:

          名称描述
          PAGE_SIZE数据页大小
          BLANK_PAD_MODE空格填充模式,可选值:0/1
          CASE_SENSITIVE字符大小写是否敏感
          CHARSET/UNICODE_FLAG字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
          USE_NEW_HASH是否使用新的 HASH 算法
          LENGTH_IN_CHARVARCHAR 类型长度是否以字符为单位(N)
          PAGE_ENC_SLICE_SIZE数据页加密分片大小
    • 数据恢复

      数据恢复是指在还原执行结束后,重做REDO日志,将数据库恢复到一致性状态,并执行更新DB_MAGIC的过程。其中重做REDO日志可以多次执行,直到恢复到目标状态。还原结束后,必须经过恢复操作,数据库才允许启动。

      • 指定备份集恢复

        • 简要过程包括:
          1. 从备份集读取 REDO 日志,并生成一个临时的本地归档日志文件;
          2. 利用生成的临时归档日志文件,重做 REDO 日志,并将数据修改写入磁盘;
          3. 删除临时生成的归档日志文件;
          4. 更新数据库日志信息,设置 CKPT_LSN 为最后一个重做的 REDO 日志 LSN 值;
          5. 修改数据状态为 ACTIVE,标记数据库启动时需要进行相应的回滚活动事务、PURGE 已提交事务。
      • 指定归档恢复

        • 利用本地归档日志进行恢复时,DMRMAN 工具会扫描指定的归档日志目录,收集与恢复数据库 PERMANENT_MAGIC 值相等的归档日志文件。
        • 主要的执行场景:
          • 将还原后处于非一致性状态的数据库恢复到一致性状态
          • 将已经处于一致性状态的数据库尽可能地恢复到最新状态
          • 将数据库恢复到指定时间点状态
          • 将数据库恢复到指定 LSN 产生时的状态

        注意:

        使用DDL、CLONE方式备份的数据库,不支持指定归档恢复

        指定归档恢复时,不建议使用联机状态下源库的归档,此时无法保证归档的完整性

      • 更新DM_MAGIC

        • 若备份集满足 BEGIN_LSN 等于 END_LSN,即在备份过程中未产生 REDO 日志,则使用此备份集还原后只需要更新 DB_MAGIC 即可完成恢复。更新 DB_MAGIC 不重做 REDO 日志,仅仅更新库的 DB_MAGIC 值和数据库状态。
      • 表空间恢复

        • 在表空间还原后,重做指定表空间所有 REDO 日志将这个表空间数据恢复到最新状态。表空间恢复只能在脱机状态下通过 DMRMAN 工具完成。
        • 表空间恢复的 REDO 日志是从本地归档日志文件中提取。表空间恢复同样要求满足归档日志覆盖 [BEGIN_LSN,END_LSN] 的要求。
      • DMDSC库恢复

        • DMDSC 库与普通单节点数据库的区别在于 DMDSC 库的多个节点共同维护一份库数据,每个节点上都有独立的联机日志和本地归档日志。
        • 重做 REDO 日志恢复时,需要重做所有节点上的 REDO 日志,因此需要提供各个节点的归档日志。

备份还原实战

  • 工具介绍

    • DIsql工具:用于执行联机的数据备份与数据还原,包括数据库备份、归档备份、表空间备份与还原、表备份与还原
    • DMRMAN工具:用于执行脱机的数据备份、还原与恢复,包括脱机的数据库备份、还原与恢复,脱机还原表空间,归档的备份、还原与修复
    • 客户端工具 MANAGER 和 CONSOLE 对应命令行工具 DIsql 和 DMRMAN 的功能,分别用于联机和脱机备份还原数据
  • 准备工作

    • 支持与限制
      • 联机备份
        • 对联机备份的支持与限制:
          1. MPP 环境仅允许库和归档备份,且各节点都会执行,生成相应的备份集,支持 DDL CLONE;
          2. DSC 环境支持库备份、表空间备份和表备份,要求 DSC 环境的所有节点都处于 OPEN 状态;
          3. MOUNT 状态所有备份均不支持;
          4. SUSPEND 状态所有备份均不支持;
          5. OPEN 状态支持所有备份,支持 DDL CLONE;
          6. PRIMARY 模式支持所有备份,支持 DDL CLONE;
          7. STANDBY 模式仅支持库级、表空间级和归档备份,支持 DDL CLONE;
          8. DDL CLONE 必须备份归档,不允许指定 WITHOUT LOG。
      • 联机还原
        • 仅支持表级还原,对联机还原的支持与限制:
          1. MPP 和分布式数据库不支持;
          2. PRIMARY 支持;
          3. SUSPEND 状态所有还原均不支持;
          4. OPEN/NORMAL 支持。
      • 脱机备份
        • 脱机备份支持库级和归档备份。
          1. MPP 视同单机环境,仅当前节点执行备份操作;
          2. 允许异常退出后备份,支持 DDL_CLONE;
          3. DSC 支持库级备份,支持 DDL_CLONE;当 DSC 环境下正常节点的 CKPT_LSN 小于故障节点的 CKPT_LSN 时,不支持脱机备份。
      • 脱机还原
        • 脱机还原跟目标库所处的模式、状态以及集群环境(MPP 和 DSC)无关,允许库级、表空间级和归档还原。
        • 在不影响数据库正常运行的情况下,建议定期执行联机数据库备份,且完全备份和增量备份结合使用。
    • 归档配置
      • 概念

        • 如果是归档模式,联机日志文件中的内容保存到硬盘中,形成归档日志文件;如果是非归档模式,则不会形成归档日志。
        • DM 的 dmarch.ini 可以进行归档配置,dmarch.ini 生效的前提是 dm.ini 中的参数 ARCH_INI 置为 1
      • 联机配置归档

        • 语法如下:

          ALTER DATABASE <修改数据库子句>;
          <修改数据库子句>::= 
          	<数据库状态> |
          	<ADD | MODIFY | DELETE> ARCHIVELOG <归档配置语句> |
          	ARCHIVELOG CURRENT
          <数据库状态>::=
          	MOUNT | 
          	SUSPEND |
          	OPEN [FORCE] | 
          	NORMAL |
          	PRIMARY|
          	STANDBY | 
          	ARCHIVELOG | 
          	NOARCHIVELOG
          <归档配置语句>::= 'DEST = <归档目标>, TYPE = <归档类型>'
          <归档类型>::=
          	LOCAL [<文件和空间限制设置>][,ARCH_FLUSH_BUF_SIZE = <归档合并刷盘缓存大小>][, HANG_FLAG=<0|1>] |
          	REMOTE ,INCOMING_PATH = <远程归档路径> | 
          <文件和空间限制设置>::=[,FILE_SIZE = <文件大小>][,SPACE_LIMIT = <空间大小限制>]
          
          • < 数据库状态 >:支持修改数据库状态为 MOUNT、SUSPEND、OPEN、NORMAL、PRIMARY、STANDBY、ARCHIVELOG、NOARCHIVELOG。其中,ARCHIVELOG 表示开启归档模式,NOARCHIVELOG 表示关闭归档模式。指定 OPEN 时支持指定 FORCE,表示强制 OPEN 数据库。
          • ADD:增加归档。
          • MODIFY:修改归档,支持修改已有归档的配置参数,不建议修改归档类型。
          • DELETE:删除归档,不允许删除本地归档。
          • ARCHIVELOG CURREN:把新生成的,还未归档的联机日志都进行归档。
      • 手动配置归档

        • 本地归档:

          1. 手动编辑dmarch.ini文件,保存在dm.ini所在目录

            编写内容:

            [ARCHIVE_LOCAL1] 
            
            ARCH_TYPE = LOCAL 
            
            ARCH_DEST = d:\dm_arch\arch
            
            ARCH_FILE_SIZE = 1024 
            
            ARCH_SPACE_LIMIT = 2048
            
          2. 编辑 dm.ini 文件,设置参数 ARCH_INI=1,保存;

          3. 启动数据库实例,数据库已运行于归档模式。

        • 远程归档:

          • 与本地归档一样,远程归档也是配置在 dmarch.ini 文件中
  • 使用联机执行SQL语句进行备份还原

    使用DIsql工具进行备份

    • 使用SQL语句配置本地文档(必须的步骤):
      • 修改数据库为MOUNT状态

        ALTER DATABASE MOUNT;
        
      • 开启归档模式(这个不开启,后面操作不了)

        ALTER DATABASE ARCHIVELOG;
        
      • 配置本地归档

        alter database add  archivelog 'dest=/home/dmdba/dmdata/arch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=2048';
        
      • 修改数据库为OPEN状态

        ALTER DATABASE OPEN;
        
    • 数据库备份
      • 使用语句备份(最简单的数据库备份语句):

        BACKUP DATABASE BACKUPSET '/dmdata/arch';  
        
        • 会在默认的备份路径下生成名为“db_bak_01”的备份集目录。默认的备份路径为 dm.ini 中 BAK_PATH 配置的路径,若未配置 BAK_PATH,则默认使用 SYSTEM_PATH 下的 bak 目录。
        • 当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
        • 系统处于归档模式下时,才允许进行数据库联机备份。若备份库为 DSC 库,且未指定 WITHOUT LOG,则也需要配置 REMOTE 归档。
        • MOUNT 状态下不允许进行数据库备份。
        • DDL_CLONE 库备份集不能作为增量备份的基备份,仅能用于库级还原。
        • 执行联机数据库备份过程中,如果报错归档不完整,则需要先执行生成检查点操作,才能正常备份。例如:select checkpoint(50);
    • 表空间备份
      • 表空间备份也必须在归档模式下运行

        backup tablespace dmhr backupset '/dmdata/arch/dmhr';
        

        在这里插入图片描述

        • 可以指定位置,如上面的命令,也可以只写一个备份名,系统会默认在dm.ini的BAK_PATH路径中备份
      • 完全备份:

        BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_full_bak_01';
        
        • FULL参数可以省略,默认为完全备份
      • 增量备份:

        BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/ts_increment_bak_02';
        
    • 表备份
      • 表备份均为联机完全备份,不需要备份归档日志,不存在增量备份之说

        backup table dmhr.city backupset '/dmdata/arch/city';
        

        在这里插入图片描述

    • 归档备份
      • 归档备份的前提:

        • 归档文件的 db_magic、permanent_magic 值和库的db_magic、permanent_magic值必须 一样;
        • 服务器必须配置归档;
        • 归档日志必须连续,如果出现不连续的情况,前面的会忽略,仅备份最新的连续部分。如果未收集到指定范围内的归档,则不会备份
      • 备份语句:

        BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01';
        
        • 备份集“arch_bak_01”会生成到默认的备份路径下
    • 数据备份高级主题
      • 加密备份

        • 备份语句中通过指定 IDENTIFIED BY…WITH ENCRYPTION…ENCRYPT WITH… 执行加密备份

        • IDENTIFIED BY 子句指定加密密码;WITH ENCRYPTION 子句指定加密类型;ENCRYPT WITH 子句指定加密算法

          BACKUP DATABASE BACKUPSET '/dmdata/arch/db_bak_for_encrypt' IDENTIFIED BY "cdb546789" ENCRYPT WITH RC4;  
          
          • 加密备份过程中 IDENTIFIED BY 子句必须指定,子句WITH ENCRYPTION 和子句ENCRYPT WITH 可不指定,此时 WITH ENCRYPTION 默认值为1ENCRYPT WITH默认值为AES256_CFB。
      • 设置跟踪日志文件

        • 与生成跟踪日志文件相关的参数有两个:TRACE FILE 和 TRACE LEVEL

          BACKUP DATABASE BACKUPSET '/dmdata/arch/dm_bak/db_bak_for_trac_01' TRACE FILE'/dmdata/arch/dm_log/db_bak_trace.log' TRACE LEVEL 2;
          
          • TRACE FILE 用于指定生成的跟踪日志文件路径,TRACE LEVEL 表示是否启用 TRACE。
          • TRACE LEVEL 有效值包括 1 和 2。1 表示不启用 TRACE 功能,2 表示启用,系统默认值为 1。
    • 管理备份
      • 管理备份一个重要的目的是删除不再需要的备份,DM没有提供自动删除过期备份的功能,删除备份需要手动执行。

      • 备份管理相关系统过程与函数总结如下:

        函数名称说明
        SF_BAKSET_BACKUP_DIR_ADD添加备份目录
        SF_BAKSET_BACKUP_DIR_REMOVE删除内存中指定的备份目录
        SF_BAKSET_BACKUP_DIR_REMOVE_ALL删除内存中全部的备份目录
        SF_BAKSET_CHECK对备份集进行校验
        SF_BAKSET_REMOVE删除指定设备类型和指定备份集目录的备份集
        SF_BAKSET_REMOVE_BATCH批量删除满足指定条件的所有备份集
        SF_BAKSET_REMOVE_BATCH_S批量安全删除满足指定条件的所有库级备份集
        SF_BAKSET_REMOVE_BATCH_N批量删除满足指定条件的所有备份集,并保留用户指定个数的库级完全备份集
        SP_DB_BAKSET_REMOVE_BATCH批量删除指定时间之前的数据库备份集。
        SP_TS_BAKSET_REMOVE_BATCH批量删除指定表空间对象及指定时间之前的表空间备份集。
        SP_TAB_BAKSET_REMOVE_BATCH批量删除指定表对象及指定时间之前的表备份集
        SP_ARCH_BAKSET_REMOVE_BATCH批量删除指定条件的归档备份集
      • 管理备份视图相关如下:

        动态视图名称功能
        V$BACKUPSET显示备份集基本信息
        V$BACKUPSET_DBINFO显示备份集的数据库相关信息
        V$BACKUPSET_DBF显示备份集中数据文件的相关信息
        V$BACKUPSET_ARCH显示备份集的归档信息
        V$BACKUPSET_RLOG显示备份集的日志信息
        V$BACKUPSET_BKP显示备份集的备份片信息
        V$BACKUPSET_SEARCH_DIRS显示备份集搜索目录
        V$BACKUPSET_TABLE显示表备份集中备份表信息
        V$BACKUPSET_INDEX显示表备份集中备份索引信息
        V$BACKUPSET_SUBS显示并行备份中生成的子备份集信息
    • 数据还原
      • 表还原

        1. 保证数据库为 OPEN 状态;

        2. 创建待备份的表;

          CREATE TABLE TAB_FOR_RES_01(C1 INT);
          
        3. 备份表数据

          BACKUP TABLE TAB_FOR_RES_01 BACKUPSET '/home/dm_bak/tab_bak_for_res_01';
          
        4. 校验备份(可选)

          SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/tab_bak_for_res_01');
          
        5. 还原表数据

          RESTORE TABLE TAB_FOR_RES_01 FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_01';
          
  • 使用DMRMAN进行备份

    ​ DMRMAN(DM RECOVERY MANAGER)是 DM 的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。

    ​ 通过 DMRMAN 工具执行脱机操作过程中,仅会使用通过关键字 DATABASE 指定的目标库的本地归档配置信息,不会对本地归档配置文件中其他类型归档配置信息进行校验。

    • 启动和配置DMRMAN
      • 启动和退出DMRMAN

        • 启动:LINUX 上数据库的执行码目录为/opt/dmdbms/bin

          ./dmrman
          
        • 退出:直接输入exit即可

      • DMRMAN参数

        参数含义备注
        CTLFILE指定执行语句所在的文件路径,不能和 CTLSTMT 同时使用。脚本文件格式支持*.txt可选参数
        CTLSTMT指定待执行语句,不能和 CTLFILE 同时使用。如:CTLSTMT=“BACKUP DATABASE ‘/home/dmdbms/data/DAMENG/dm.ini’”可选参数
        DCR_INI指定 dmdcr.ini 路径,用于 ASM 存储时访问 ASM 服务;若未指定,则认为不存在 ASM 存储。可单独使用,也可与其他参数配合使用。主要用于 DMDSC 环境可选参数
        USE_AP指定备份还原执行策略。取值 1、2。默认为 1。 1:使用 dmap 辅助进程方式执行备份还原;执行备份还原时要求先启动 dmap 服务。 2:无辅助进程方式,由 dmserver 进程自身完成备份还原,不依赖 dmap 服务;配置成 2 的情况下,不能执行第三方备份(即指定 DEVICE TYPE 为 TAPE)。可选参数
        AP_PORT使用 DMAP 备份还原时 DMAP 的端口号,dmap 的监听端口,监听方配置此参数,取值范围 1024~65534,默认为 4236,发起连接端的端口在 1024-65535 之间随机分配可选参数
        HELP打印帮助信息可选参数
    • 数据备份
      • 备份数据库

        • 使用 DMRMAN 脱机备份数据库需要关闭数据库实例。若是正常退出的数据库,则脱机备份前不需要配置归档;若是故障退出的数据库,则备份前,需先进行归档修复。

        • 备份语句:

          BACKUP DATABASE '/home/dmdbms/data/DAMENG/dm.ini';
          
          • 命令执行完后会在默认的备份路径下生成备份集目录。默认的备份路径为 dm.ini 中 BAK_PATH 配置的路径,若未配置 BAK_PATH,则默认使用 SYSTEM_PATH 下的 bak 目录。
        • 完全备份:默认为完全备份

          BACKUP DATABASE '/home/dmdbms/data/DAMENG/dm.ini' FULL BACKUPSET '/home/dmdata/bak/db_full_bak_01';
          
        • 增量备份:

          BACKUP DATABASE '/home/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/home/dmdata/bak'BACKUPSET '/home/dmdata/bak/db_increment_bak_02';
          
      • 备份归档

        • 使用 DMRMAN 备份归档需要设置归档,否则会报错。备份语句如下:

          BACKUP ARCHIVE LOG DATABASE '/home/dmdbms/data/DAMENG/dm.ini';
          
          • 命令执行完后会在默认的备份路径下生成备份集目录,默认的备份路径为 dm.ini 中 BAK_PATH 的配置值,若未配置,则使用 SYSTEM_PATH 下的 bak 目录。
        • 创建设置条件的归档备份

          BACKUP ARCHIVE LOG LSN BETWEEN 50000 AND 120000 DATABASE '/home/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dmdata/bak/arch_lsn_bak_02';
          
          • 命令中的 LSN BETEEWN start AND end 表示备份 LSN 值在 start 与 end 之间的归档
      • 数据备份高级主题

        • 加密备份

          • DMRMAN 备份命令中通过指定 IDENTIFIED BY … WITH ENCRYPTION … ENCRYPT WITH … 命令执行加密备份。
          • 与DIsql不同:DMRMAN不可在备份时指定参数生成跟踪文件,只能使用CONFIGURE命令进行事先配置
          BACKUP DATABASE '/home/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dmdata/arch/db_bak_for_encrypt_04' IDENTIFIED BY "cdb546" WITH ENCRYPTION 2 ENCRYPT WITH RC4;
          
        • 跟踪日志文件

          • DMRMAN不可在备份时指定参数生成跟踪文件,只能使用CONFIGURE命令进行事先配置

          • 步骤:

            1. 保证数据库处于关闭状态;

            2. 使用 CONFIGURE 命令配置生成跟踪日志文件:

              CONFIGURE DEFAULT TRACE FILE '/home/dm_trace/trace.log' TRACE LEVEL 2;
              
            3. 备份数据库。启动 DMRMAN 工具输入以下命令:

              RMAN>BACKUP DATABASE '/home/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dmdata/db_bak_for_trace_01' ;
              
              
    • 管理备份
      • 备份集查看

        show backupset '/home/test/yy/dm_bak/db_full_bak_01' ##查看某个单个备份集信息
        SHOW BACKUPSETS WITH BACKUPDIR '/home/dm_bak1','/home/dm_bak2';  ##查看多个备份集信息
        
        • SHOW BACKUPSET…命令用于查看单个备份集信息;WITH BACKUPDIR 参数指定多个备份集搜索目录,同时查看所有的备份集
      • 备份集校验

        CHECK BACKUPSET '<备份集目录>' [DEVICE TYPE <介质类型> [PARMS '<介质参数>']][DATABASE '<INI_PATH>'];
        
        • BACKUPSET:指定目标校验备份集目录
        • DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK
        • PARMS:只对介质类型为 TAPE 时有效
        • DATABASE:数据库 dm.ini 文件路径,若指定,则该数据库的默认备份目录将作为备份集搜索目录之一
      • 备份集删除

        REMOVE BACKUPSET '/home/dmdata/bak/db_bak_for_remove_01';
        
      • 批量删除指定时间之前的备份集

        REMOVE BACKUPSETS WITH BACKUPDIR '/home/dmdata' UNTIL TIME '2019-6-1 00:00:00';
        ##删除2019年6月1日前7天/home/dmdata 目录下的所有备份
        
    • 数据库还原
      • 通过 RESTORE 命令还原后的数据库不可用,需进一步执行 RECOVER 命令,将数据库恢复到备份结束时的状态。

      • 数据库备份集分为联机和脱机两种类型。通常情况下,用户会在联机状态下备份数据库,因此下面以联机数据库备份为例说明使用 DMRMAN 如何执行数据库还原操作。

        1. 联机备份数据库,保证数据库运行在归档模式及 OPEN 状态:

          SQL>BACKUP DATABASE BACKUPSET '/home/dmdata/bak/db_full_bak_for_restore';
          
        2. 准备目标库。还原目标库可以是已经存在的数据库,也可使用 dminit 工具初始化一个新库

          ./dminit path=/home/dmdbms/data db_name=DAMENG_FOR_RESTORE
          
        3. 校验备份,校验待还原备份集的合法性。此处使用脱机校验

          RMAN>CHECK BACKUPSET '/home/dmdata/bak/db_full_bak_for_restore';
          
        4. 还原数据库

          RMAN>RESTORE DATABASE '/home/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dmdata/bak/db_full_bak_for_restore';
          
    • 数据库恢复
      • 使用 RECOVER 命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。

      • 从数据库恢复分为从备份集恢复和从归档恢复两类:

        • 从备份集恢复

          1. 启动DIsql联机备份数据库

            BACKUP DATABASE BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_backupset';
            
          2. 准备目标库,可以使用备份库,也可以重新生成库

            ./dminit path=/home/dmdbms/data db_name=DAMENG_FOR_RESTORE auto_overwrite=1
            
          3. 启动 RMAN,校验备份

            RMAN>CHECK BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_backupset';
            
          4. 还原数据库

            RMAN>RESTORE DATABASE '/home/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_backupset';
            
          5. 恢复数据库

            RMAN>RECOVER DATABASE '/home/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_backupset';
            
        • 从归档恢复

          1. 启动 DIsql 联机备份数据库,以及备份从检查点开始的本地归档日志

            BACKUP ARCHIVELOG FROM LSN 421401 BACKUPSET '/home/dmdata/arch/arch_bak_lsn_421401';
            
            BACKUP DATABASE BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_arch';
            
          2. 准备目标库,可以使用备份库,也可以重新生成库

            RMAN>REPAIR ARCHIVELOG DATABASE '/home/dmdbms/data/dm.ini';
            
          3. 启动RMAN,校验备份

            RMAN>CHECK BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_arch';
            
          4. 还原数据库

            RMAN>RESTORE DATABASE '/home/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_arch';
            
          5. 查看备份集的数据库信息,获取源库的DB_MAGIC

            RMAN>SHOW BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_arch' INFO DB;
            
          6. 利用归档恢复数据库

            RMAN>RECOVER DATABASE '/home/dmdbms/data/DAMENG/dm.ini' WITH ARCHIVEDIR'/home/dmdata/arch' USE DB_MAGIC 1447060265;
            
          7. 若执行后归档恢复过程中,出现归档不足的错误,则利用归档校验工具 dmrachk,查看归档目录中归档连续性情况,然后再利用备份的本地归档日志,还原到归档目录后,再次执行恢复操作。

        • 不论是哪种数据库恢复方式,都必须在进行恢复后更新数据库

          RMAN>RECOVER DATABASE '/home/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;  ##更新数据库
          
  • 使用图形化客户端工具进行备份还原

    ​ 在 WINDOWS 的 DM 数据库系统,可以通过选择“开始”->“程序”->“达梦数据库”,然后选择具体的某个客户端工具;

    ​ Linux上的DM数据库则需要进入到对应存放工具的位置,使用命令./xxx执行工具进入图形化

    • 使用MANAGER工具进行联机备份还原
      • MANAGER的主页面:

        在这里插入图片描述

        • 可以看到,备份选项下面细分了四个备份,对应上面的四种备份方式
      • 右键选择【新建备份】,这里以库备份为例子

        在这里插入图片描述

        • 参数信息:
          • 备份名: 备份的名称。
          • 备份集目录: 备份集的路径,默认为数据库的默认备份目录加备份名。系统默认的备份路径为 dm.ini 中 BAK_PATH配置的路径,若未配置,则使用 SYSTEM_PATH 下的 bak 目录。
          • 备份片大小: 备份片的最大大小,如果备份文件超过该大小,则系统自动将备份文件分为多个文件。以 MB 为单位。未限制时,32 位系统默认为 2GB,64 位系统默认为 128GB。限制时,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB。
          • 备份描述: 对备份文件的描述,用户可以根据需要填写。
          • 备份类型:
            • 完全备份:对数据库的完全备份,不依赖于其他备份,可以独立地进行数据库还原和恢复。
            • 增量备份:在完全备份或增量备份的基础上进行的备份。进行增量备份时,允许用户自己指定基备份来进行备份,默认使用最近一次备份作为基备份。
      • 高级选项页面页有一些参数:

        在这里插入图片描述

        • 备份压缩:可以选择压缩或不压缩,通过压缩可以减少备份文件所需要的磁盘空间。默认为不压缩。
        • 压缩级别:压缩的级别。可以设置压缩级别 0~9:0 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。
        • 备份日志:是否需要备份归档日志中的内容。默认备份日志。
        • 加密类型:加密的类型,默认为不加密。具体加密类型如下:
          • 不加密:不对备份文件进行加密处理。
          • 简单口令加密:对备份文件设置口令,但文件内容仍以明文方式存储。
          • 完全数据加密:对备份文件进行完全的加密,备份文件以密文方式存储。
        • 加密密码:当选择简单口令加密或完全数据加密时,需要输入加密密码。
        • 确认密码:当选择简单口令加密或完全数据加密时,需要确认输入的加密密码。
        • 加密算法:加密时使用的算法。在选择简单口令加密和完全数据加密的情况下适用。若未指定,则使用默认算法 AES256_CFB。
        • 介质类型:指定存储备份集的设备类型,目前暂支持磁盘和磁带,默认选择磁盘。
        • 介质参数:使用第三方介质类型(磁带类型)时使用的参数。
        • 跟踪日志:备份过程的跟踪日志路径。系统有默认路径,当日志级别为记录跟踪日志时启用。
        • 日志级别:是否记录跟踪日志。默认不记录。
        • 线程数:备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。
        • 并行数:指定是否执行并行备份,以及执行并行备份的并行数。并行数的取值范围为 0~128。若勾选但没有指定并行数,则默认并行数为 4。若未勾选,则认为非并行备份。
        • 拆分块大小:用户指定对于大数据量数据文件并行备份时拆分块的大小,默认为 1GB,最小为 512MB,当指定的拆分块大小小于 512MB 时,系统自动调整为 512MB。
      • DDL页面则是可以查看新建库备份的语句,也可以通过保存将SQL脚本保存到文件中

        在这里插入图片描述

      • 备份管理

        • 备份集查看:右键菜单->属性,可以打开备份属性查看对话框,属性列表中可以查看该备份集的信息,包括备份集的元数据信息以及数据库信息

          在这里插入图片描述

          在这里插入图片描述

      • 数据还原

        • 右键菜单->备份还原,打开表备份还原对话框

          在这里插入图片描述

          • 参数说明:
            • 模式名:模式的名称。
            • 表名:表的名称。
            • 备份名:备份的名称,无需填写,系统自动获取。
            • 备份集目录:备份集路径,无需填写,系统自动获取。
            • 索引:指定还原数据后是否重建二级索引。默认重建。
            • 约束:指定还原数据后是否重建约束。默认重建。
            • 表结构:指定是否执行表结构还原。若未勾选表结构,则必须勾选表数据。
            • 表数据:指定是否执行表中数据还原,表数据还原要求还原目标表结构与备份集中表结构完全一致,否则报错,所以在表数据还原时,建议勾选表结构还原执行,减少报错。若未勾选表数据,则必须勾选表结构。
        • 高级选项:

          在这里插入图片描述

          • 参数说明:
            • 介质类型:指定存储备份集的设备类型,目前暂支持磁盘和磁带,默认选择磁盘。
            • 介质参数:使用第三方介质类型(磁带类型)时使用的参数。
            • 加密算法:备份时使用的加密算法。
            • 加密密码:备份时使用的加密密码。
            • 日志级别:是否记录跟踪日志。默认不记录。
            • 跟踪日志:还原过程的跟踪日志路径。系统有默认路径,当日志级别为记录跟踪日志时启用。
    • 使用CONSOLE工具进行脱机备份还原
      • CONSOLE首页:

        在这里插入图片描述

      • 数据备份

        • 点击右边的新建备份,打开新建备份对话框

          在这里插入图片描述

          • 参数说明:
            • INI 文件路径:必填,待备份目标数据库 dm.ini 文件路径。

            • 备份集名:选填,指定生成备份集名称,若未指定,则使用缺省命名规则命名备份集。

            • 备份集目录:选填,指定当前备份集生成路径,若未指定,则在默认备份目录中生成备份集。

            • 备份片限制大小:备份片的最大大小,如果备份文件超过该大小,则系统自动将备份文件分为多个文件。以 MB 为单位。未限制时,32 位系统默认为 2GB,64 位系统默认为 128GB。限制时,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB。

            • 备份类型:

              • 完全备份:对数据库的完全备份,不依赖于其他备份,可以独立地进行数据库还原和恢复。
              • 增量备份:在完全备份或增量备份的基础上进行的备份。进行增量备份时,允许用户自己指定基备份来进行备份,默认使用最近一次备份作为基备份。
            • 基备份集搜索目录:选填,仅适用于增量备份,指定基备份集的搜索目录,可以同时指定多个,增量备份时必须保证依赖的所有基备份集都可以在指定的基备份集搜索目录中找到。

            • 基备份集目录:选填,仅适用于增量备份,指定基备份集路径,默认系统会在指定的基备份集搜索目录下查找最近一次备份作为基备份。

            • 备份描述:选填,根据实际情况对备份集进行描述。

        • 高级选项:

          在这里插入图片描述

          • 这里参数和上面MANAGER的一致,就不过多说
      • 备份管理

        • 指定搜索目录,点击获取备份,得到备份列表

          在这里插入图片描述

        • 选择备份,点击属性,打开属性对话框,查看备份属性

          在这里插入图片描述

          • 元信息主要显示备份集本身相关的信息如备份是否为联机备份、备份的范围、备份的加密信息以及备份的压缩信息等
          • 节点信息显示系统中各节点开始/结束 LSN 以及开始/结束日志包序号。单库只有一个节点,集群系统中会有多个节点
          • 文件信息显示备份集的所有数据文件和备份片信息
          • 数据库信息显示备份库的固有信息
      • 数据还原

        • 在备份还原管理主界面中,点击还原按钮,打开备份还原对话框

          在这里插入图片描述

          • 参数说明:

            • 备份集目录:指定用于还原目标数据库的备份集路径。若指定为相对路径,会在默认备份目录下搜索备份集。
            • INI 路径:使用指定还原目标库的 dm.ini 文件路径的方式还原。
            • 库目录:使用指定还原目标库的数据文件所在目录的方式还原。
          • 三种还原选择:库还原,,归档还原、表空间还原(这里就简单说一下就好,实际遇到了再说)

        • 高级选项:

          在这里插入图片描述

        • 生成映射文件:

          在这里插入图片描述

      • 恢复

        • 从备份集恢复

          在这里插入图片描述

          • 这里也是两种选择:库恢复、表空间恢复
      • 数据库更新

        • 更新DB_MAGIC

          在这里插入图片描述

  • 查看操作日志

    • 事件日志文件
      • 一种全局日志文件,全局日志文件不可配置

      • 事件日志文件 dm_DMSERVER_xxx.log 记录了 DM 数据库运行时的关键事件。例如:系统启动、关闭、内存申请失败、IO 错误等一些致命错误;数据库运行过程中的日志信息;备份还原过程中备份还原操作的阶段性信息等

      • 全局日志信息格式:

        时间 + 日志类型(INFO/WARN/ERROR/FATAL)+ 进程(database)+ 进程 ID(P 开头)+ 线程(dm_sql_thd/main_thread 等)+ 日志内容
        
    • 备份还原文件
      • 备份还原日志文件不可配置

      • dm_BAKRES_xxx.log 是 DM 备份还原在执行备份与还原时生成的日志,包括任务发起进程发送信息以及 AP 进程处理过程信息。每条信息包括生成时间、信息级别、生成日志的进程名称和进程 ID,对于 AP 进程还会生成任务发起进程 ID。

      • 备份还原日志信息格式:

        时间 + 日志类型(INFO/WARN/ERROR/FATAL/CMD/CMD_PARSE)+ 进程(dmrman/database/dmbakres)+ 进程 ID(P 开头)+ 任务发起进程 ID(PP 开头,显示 dmrman 或者 database 的进程 ID,不存在任务发起进程时显示 4294967295,即 0xFFFFFFFF)+ 日志内容
        
    • SBT接口跟踪文件
      • SBT 接口跟踪文件可配置

      • SBT 接口在打开 TRACE 跟踪(TRACE LEVEL > 1)的情况下生成执行日志,默认文件名为 dm_SBTTRACE_xxx.log,用户可根据需要自行设置文件名。

      • SBT 接口跟踪文件中日志信息格式为:

        时间 +SBT 接口的调用过程
        
    • DMRMAN日志文件
      • 用 DMRMAN 工具进行脱机备份还原时,产生的相关日志信息均记录在 DMRMAN 日志文件中
      • DMRMAN 日志文件格式和事件日志信息格式一样

1878053463)]

  • 查看操作日志

    • 事件日志文件
      • 一种全局日志文件,全局日志文件不可配置

      • 事件日志文件 dm_DMSERVER_xxx.log 记录了 DM 数据库运行时的关键事件。例如:系统启动、关闭、内存申请失败、IO 错误等一些致命错误;数据库运行过程中的日志信息;备份还原过程中备份还原操作的阶段性信息等

      • 全局日志信息格式:

        时间 + 日志类型(INFO/WARN/ERROR/FATAL)+ 进程(database)+ 进程 ID(P 开头)+ 线程(dm_sql_thd/main_thread 等)+ 日志内容
        
    • 备份还原文件
      • 备份还原日志文件不可配置

      • dm_BAKRES_xxx.log 是 DM 备份还原在执行备份与还原时生成的日志,包括任务发起进程发送信息以及 AP 进程处理过程信息。每条信息包括生成时间、信息级别、生成日志的进程名称和进程 ID,对于 AP 进程还会生成任务发起进程 ID。

      • 备份还原日志信息格式:

        时间 + 日志类型(INFO/WARN/ERROR/FATAL/CMD/CMD_PARSE)+ 进程(dmrman/database/dmbakres)+ 进程 ID(P 开头)+ 任务发起进程 ID(PP 开头,显示 dmrman 或者 database 的进程 ID,不存在任务发起进程时显示 4294967295,即 0xFFFFFFFF)+ 日志内容
        
    • SBT接口跟踪文件
      • SBT 接口跟踪文件可配置

      • SBT 接口在打开 TRACE 跟踪(TRACE LEVEL > 1)的情况下生成执行日志,默认文件名为 dm_SBTTRACE_xxx.log,用户可根据需要自行设置文件名。

      • SBT 接口跟踪文件中日志信息格式为:

        时间 +SBT 接口的调用过程
        
    • DMRMAN日志文件
      • 用 DMRMAN 工具进行脱机备份还原时,产生的相关日志信息均记录在 DMRMAN 日志文件中
      • DMRMAN 日志文件格式和事件日志信息格式一样

总结

  • 本章是对DM数据库的备份还原进行学习,篇幅有点长(可以直接从实战开始看),总的来说是把DM数据库备份还原的概念、原理以及实战都给罗列出来了。

参考

  • https://eco.dameng.com/document/dm/zh-cn/pm/backup-restore-introduction.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值