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_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 日志,重新写入到归档日志文件,流程如下:
- 网络本地归档日志文件;
- 扫描归档文件,获取最后一个有用 RLOG_PKG 偏移;
- 起首,根据偏移来截取最后一个本地归档日志文件中有用内容,删撤除 RLOG_PKG 偏移之后的多余内容,生存 RLOG_PKG 偏移之前的内容,并调整日志文件头信息。然后,再创建一个新的空的归档日志文件;
- 扫描联机日志文件,拷贝缺失的 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 不支持指定目次还原数据库。
- 数据文件重建策略:
- 目的库和备份集中的 SYSTEM_PATH 路径雷同,则按照备份集中纪录的原始路径创建文件;
- 目的库和备份集中的 SYSTEM_PATH 路径不雷同,默认在目的库的 SYSTEM_PATH 目次下创建文件;
- 目的库设置 REDOS_FILE_PATH_POLICY 参数为 1 时,用户创建的表空间(表空间 id 大于等于 5)按照数据文件在源库中的路径结构,在目的库 SYSTEM_PATH 下创建雷同路径结构的文件;
- 使用 mapped file 指定源文件与目的文件的映射关系,定制数据库文件的物理分布情况,可以很好的满意用户关于数据文件分布的需求。
- 重建联机日志文件
- 指定目次还原,系统目次使用指定还原目次,所有库设置文件均以为在指定还原目次下。
- 联机日志文件命名规则,单机情况为 db_name+ 文件编号.log,此中 db_name 取自备份集备份库的名称,文件编号从 1 开始,如 DAMENG01.log。联机日志文件至少 2 个。
- 拷贝数据页
- 从备份集中读取数据页,并将数据页写入数据文件指定位置的过程。
- 重置目的库
- 具体包括:
- 更新日志信息,设置当前 CKPT_LSN 为备份集中 BEGIN_LSN,并设置日志文件状态为 INACTIVE;
- 更新 DB_MAGIC,还原后,库中 PERMANENT_MAGIC 仍与备份集中雷同;
- 设置还原标记,标识当前库为指定库要还原的库,不允许使用;
- 更新目的库的控制文件 dm.ctl,把当前库中的数据文件信息都纪录到控制文件中,使用备份集中的服务器秘钥文件,重新天生新的秘钥文件。
- 修改设置参数
- 还原到指定库时,默认会生存目的库的设置参数稳定,也可以在还原时指定 REUSE DMINI 子句,使用备份集中的设置参数替换目的库 dm.ini 中的设置参数。还原到指定目次时,会重新创建一个dm.ini设置文件,并用备份集中的参数值来设置这些设置项。一般与路径相干的设置参数,不会被替换,而是生存目的库的原始值稳定。
- 留意事项:
- 指定的 dm.ini 必须存在且各项设置信息有用,此中 CTL_PATH 必须设置且路径必须有用;
- 若指定目次还原,则指定目次作为数据库系统目次处理;
- 由于还原是要确保数据库数据的完整性,因此,对于增量备份的还原,必要搜集完整的备份集链表,然后从前到后,逐个还原备份集中数据。鉴于增量备份 BEGIN_LSN 确定规则,增量备份的还原过程中,不必要重做任何归档日志。
- 表空间还原
- 表空间还原只可以在脱机状态下执行。脱机时通过 DMRMAN 工具执行,对表空间状态没有限制。假如还原后状态为RES_OFFLINE,表明表空间已进行还原操纵,但数据不完整;在部分数据文件损坏时,可以指定还原数据文件,跳过损坏的数据文件。也支持mapped file进行数据文件映射。
- 表还原
- 表还原重要包括三部分内容:表结构还原、数据还原、以及重建索引和约束。
- 假如还原目的表不存在,则利用备份集中纪录的建表语句重建目的表,假如存在,则扫除表中数据、删除二级索引和约束。数据还原过程从表备份集拷贝数据页,重构数据页之间的逻辑关系,并重新形成一个完整的表对象。在数据还原竣事后,使用备份集中纪录的信息,重新再表上创建二级索引,并创建各种约束。
- 表备份集允许跨库还原,但要求还原目的库与源库的数据页大小等建库参数雷同。必要匹配的建库参数参考下表:
名称描述PAGE_SIZE数据页大小BLANK_PAD_MODE空格填充模式,可选值:0/1CASE_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日志可以多次执行,直到恢复到目的状态。还原竣事后,必须经过恢复操纵,数据库才允许启动。
- 指定备份集恢复
- 扼要过程包括:
- 从备份集读取 REDO 日志,并天生一个临时的本地归档日志文件;
- 利用天生的临时归档日志文件,重做 REDO 日志,并将数据修改写入磁盘;
- 删除临时天生的归档日志文件;
- 更新数据库日志信息,设置 CKPT_LSN 为最后一个重做的 REDO 日志 LSN 值;
- 修改数据状态为 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 的功能,分别用于联机和脱机备份还原数据
- 准备工作
- 支持与限制
- 联机备份
- 对联机备份的支持与限制:
- MPP 情况仅允许库和归档备份,且各节点都会执行,天生相应的备份集,支持 DDL CLONE;
- DSC 情况支持库备份、表空间备份和表备份,要求 DSC 情况的所有节点都处于 OPEN 状态;
- MOUNT 状态所有备份均不支持;
- SUSPEND 状态所有备份均不支持;
- OPEN 状态支持所有备份,支持 DDL CLONE;
- PRIMARY 模式支持所有备份,支持 DDL CLONE;
- STANDBY 模式仅支持库级、表空间级和归档备份,支持 DDL CLONE;
- DDL CLONE 必须备份归档,不允许指定 WITHOUT LOG。
- 联机还原
- 仅支持表级还原,对联机还原的支持与限制:
- MPP 和分布式数据库不支持;
- PRIMARY 支持;
- SUSPEND 状态所有还原均不支持;
- OPEN/NORMAL 支持。
- 脱机备份
- 脱机备份支持库级和归档备份。
- MPP 视同单机情况,仅当前节点执行备份操纵;
- 允许非常退出后备份,支持 DDL_CLONE;
- 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:把新天生的,还未归档的联机日志都进行归档。
- 手动设置归档
- 本地归档:
- 手动编辑dmarch.ini文件,生存在dm.ini所在目次
编写内容:
- [ARCHIVE_LOCAL1]
- ARCH_TYPE = LOCAL
- ARCH_DEST = d:\dm_arch\arch
- ARCH_FILE_SIZE = 1024
- ARCH_SPACE_LIMIT = 2048
复制代码 - 编辑 dm.ini 文件,设置参数 ARCH_INI=1,生存;
- 启动数据库实例,数据库已运行于归档模式。
- 远程归档:
- 与本地归档一样,远程归档也是设置在 dmarch.ini 文件中
- 使用联机执行SQL语句进行备份还原
使用DIsql工具进行备份
- 使用SQL语句设置本地文档(必须的步骤):
- 修改数据库为MOUNT状态
- 开启归档模式(这个不开启,后面操纵不了)
- ALTER DATABASE ARCHIVELOG;
复制代码 - 设置本地归档
- alter database add archivelog 'dest=/home/dmdba/dmdata/arch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=2048';
复制代码 - 修改数据库为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';
复制代码
- 增量备份:
- 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 默认值为1,ENCRYPT 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显示并行备份中天生的子备份集信息
- 数据还原
- 表还原
- 保证数据库为 OPEN 状态;
- 创建待备份的表;
- CREATE TABLE TAB_FOR_RES_01(C1 INT);
复制代码 - 备份表数据
- BACKUP TABLE TAB_FOR_RES_01 BACKUPSET '/home/dm_bak/tab_bak_for_res_01';
复制代码 - 校验备份(可选)
- SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/tab_bak_for_res_01');
复制代码 - 还原表数据
- 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
- 退出:直接输入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下令进行事先设置
- 步骤:
- 保证数据库处于关闭状态;
- 使用 CONFIGURE 下令设置天生跟踪日志文件:
- CONFIGURE DEFAULT TRACE FILE '/home/dm_trace/trace.log' TRACE LEVEL 2;
复制代码 - 备份数据库。启动 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 如何执行数据库还原操纵。
- 联机备份数据库,保证数据库运行在归档模式及 OPEN 状态:
- SQL>BACKUP DATABASE BACKUPSET '/home/dmdata/bak/db_full_bak_for_restore';
复制代码 - 准备目的库。还原目的库可以是已经存在的数据库,也可使用 dminit 工具初始化一个新库
- ./dminit path=/home/dmdbms/data db_name=DAMENG_FOR_RESTORE
复制代码 - 校验备份,校验待还原备份集的合法性。此处使用脱机校验
- RMAN>CHECK BACKUPSET '/home/dmdata/bak/db_full_bak_for_restore';
复制代码 - 还原数据库
- RMAN>RESTORE DATABASE '/home/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dmdata/bak/db_full_bak_for_restore';
复制代码
- 数据库恢复
- 使用 RECOVER 下令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。
- 从数据库恢复分为从备份集恢复和从归档恢复两类:
- 从备份集恢复
- 启动DIsql联机备份数据库
- BACKUP DATABASE BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_backupset';
复制代码 - 准备目的库,可以使用备份库,也可以重新天生库
- ./dminit path=/home/dmdbms/data db_name=DAMENG_FOR_RESTORE
- auto_overwrite=1
复制代码 - 启动 RMAN,校验备份
- RMAN>CHECK BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_backupset';
复制代码 - 还原数据库
- RMAN>RESTORE DATABASE '/home/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_backupset';
复制代码 - 恢复数据库
- RMAN>RECOVER DATABASE '/home/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_backupset';
复制代码
- 从归档恢复
- 启动 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';
复制代码 - 准备目的库,可以使用备份库,也可以重新天生库
- RMAN>REPAIR ARCHIVELOG DATABASE '/home/dmdbms/data/dm.ini';
复制代码 - 启动RMAN,校验备份
- RMAN>CHECK BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_arch';
复制代码 - 还原数据库
- RMAN>RESTORE DATABASE '/home/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_arch';
复制代码 - 查看备份集的数据库信息,获取源库的DB_MAGIC
- RMAN>SHOW BACKUPSET '/home/dmdata/bak/db_full_bak_for_recover_arch' INFO DB;
复制代码 - 利用归档恢复数据库
- RMAN>RECOVER DATABASE '/home/dmdbms/data/DAMENG/dm.ini' WITH ARCHIVEDIR'/home/dmdata/arch' USE DB_MAGIC 1447060265;
复制代码 - 若执行后归档恢复过程中,出现归档不足的错误,则利用归档校验工具 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。
- 备份范例:
- 完全备份:对数据库的完全备份,不依赖于其他备份,可以独立地进行数据库还原和恢复。
- 增量备份:在完全备份或增量备份的底子上进行的备份。进行增量备份时,允许用户自己指定基备份来进行备份,默认使用最近一次备份作为基备份。
- 基备份集搜刮目次:选填,仅适用于增量备份,指定基备份集的搜刮目次,可以同时指定多个,增量备份时必须保证依赖的所有基备份集都可以在指定的基备份集搜刮目次中找到。
- 基备份集目次:选填,仅适用于增量备份,指定基备份集路径,默认系统会在指定的基备份集搜刮目次下查找最近一次备份作为基备份。
- 备份描述:选填,根据实际情况对备份集进行描述。
- 高级选项:
- 备份管理
- 指定搜刮目次,点击获取备份,得到备份列表
- 选择备份,点击属性,打开属性对话框,查看备份属性
- 元信息重要显示备份集本身相干的信息如备份是否为联机备份、备份的范围、备份的加密信息以及备份的压缩信息等
- 节点信息显示系统中各节点开始/竣事 LSN 以及开始/竣事日志包序号。单库只有一个节点,集群系统中会有多个节点
- 文件信息显示备份集的所有数据文件和备份片信息
- 数据库信息显示备份库的固有信息
- 数据还原
- 在备份还原管理主界面中,点击还原按钮,打开备份还原对话框
- 参数阐明:
- 备份集目次:指定用于还原目的数据库的备份集路径。若指定为相对路径,会在默认备份目次下搜刮备份集。
- INI 路径:使用指定还原目的库的 dm.ini 文件路径的方式还原。
- 库目次:使用指定还原目的库的数据文件所在目次的方式还原。
- 三种还原选择:库还原,,归档还原、表空间还原(这里就简单说一下就好,实际碰到了再说)
- 高级选项:
- 天生映射文件:
- 恢复
- 数据库更新
- 查看操纵日志
- 变乱日志文件
- 一种全局日志文件,全局日志文件不可设置
- 变乱日志文件 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 接口跟踪文件中日志信息格式为:
- 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 接口跟踪文件中日志信息格式为:
- DMRMAN日志文件
- 用 DMRMAN 工具进行脱机备份还原时,产生的相干日志信息均纪录在 DMRMAN 日志文件中
- DMRMAN 日志文件格式和变乱日志信息格式一样
总结
- 本章是对DM数据库的备份还原进行学习,篇幅有点长(可以直接从实战开始看),总的来说是把DM数据库备份还原的概念、原理以及实战都给罗列出来了。
参考
- https://eco.dameng.com/document/dm/zh-cn/pm/backup-restore-introduction.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |