DM8备份与还原简介
做DM8备份还原的说明:
1.在发生故障时,可用来进行数据恢复
2.支持第三方工具、支持磁带设备
3.性能提升
4.备份的本质即对有效数据的拷贝
5.还原的本质即对备份集数据页写入目标文件过程
新、旧备份还原的对比
DM8备份与还原简介-基本概念
1.表空间与数据文件
DM8表空间类型:
SYSTEM
ROLL
TEMP
MAIN
HMAIN(不支持对HMAIN表空间备份还原)
用户自定义表空间
2.重做日志
REDO 日志,记录了所有物理页的修改,基本信息包括操作类型、表空间号、文件号、页号、页内偏移、实际数据等。
数据库中INSERT、DELETE、UPDATE等DML操作以及CREATE TABLE 等DDL 操作最终都会转化为对某些数据文件、某些数据页的修改。
DM8默认的两个联机重做日志:DAMENG01.log,DAMENG02。
3.归档日志
在归档模式下,联机REDO日志被连续拷贝到归档日志后就生成了归档日志文件。
归档日志文件以归档时间命名。例如:
ARCHIVE_LOCAL1_20160217171507968.log
开启归档模式会对系统性能产生一定影响,但更安全。
4.PWR记录
REDO 日志中包含有一种特殊的记录,成为PWR(Page Written Record)日志。
PWR 日志包含表空间ID、文件ID、数据在文件中的页号和页的当前LSN和信息。
每次数据页刷盘时,系统都会生成一条对应的PR日志。
可用来提升系统故障恢复速度。在引入PWR记录之前,数据库故障重启时需要重做所有有效的REDO 日志记录。根据PWR记录可以快速判断数据页是否已刷盘,有效避免无用IO。
5.检查点与日志序列号
检查点的功能是按照数据页第一次被修改的顺序,依次将BUFFER缓冲区中的脏页写入磁盘,并在这个过程中动态调整CKPT_LSN值,释放日志空间。
LSN(LOG SEQUENCE NUMBER),即日志序列号,表示REDO 日志产生的顺序,系统为每个REDO日志分配一个LSN值。
6.备份集
一个备份集对应一次完整备份,为一个目录,由一个或多个备份片和一个元数据文件组成。
备份片
备份片(后缀为.bak)是用来存储备份数据的文件。备份时,目标数据文件内容或归档日志内容经过处理后,都会存放到这些备份片文件中。
元数据
元数据文件(后缀为.meta)用来存储备份信息。包括:
备份集本身相关的信息
备份源库的建库参数信息
备份集中备份数据文件信息
备份集中备份片的信息
7.备份
概念
将待备份的数据经过处理如加密、压缩等后,写到备份片文件中,并将相关备份信息写到元数据文件中的过程。
分类
DM8中对备份的划分标准有如下几种:
1)备份组织形式:物理备份和逻辑备份
2)备份时,数据库是否运行:联机备份和脱机备份
3)备份的粒度大小:库备份、表空间备份、归档备份和表备份
归档备份支持联机和脱机
归档备份会把收集到的归档文件,备份到备份集中的每一个备份片。
必要的时候可以使用归档备份集,还原归档。
4)备份数据的一致性:一致性备份和非一致性备份
5)备份数据的完整性:完全备份和增量备份
8.还原
概念
把备份集中的备份数据经过处理后,写回到还原目标库中相应的数据文件中的过程。
还原回来的数据通常是处于非一致性状态,需要执行恢复操作,使得目标数据库数据一致,才能对外提供服务。
分类
与备份的分类类似,还原也可按照以下标准进行划分:
1)还原组织形式:物理还原和逻辑还原
2)还原时,数据库是否运行:联机还原和脱机还原
3)还原的粒度大小:库还原、表空间还原、归档还原和表还原
4)还原数据的完整性:完全备份还原和增量备份还原
9.恢复
概念
恢复是重做本地归档日志或者备份集中备份的归档日志的过程。
没有经过恢复的还原数据库是不允许启动的。
表空间和表还原均为联机执行,都不需要再执行恢复操作。此处恢复是指数据库恢复操作。
分类
根据恢复过程中是否重做归档,及重做归档日志的来源,可将恢复分三类:
1)更新DB_MAGIC
DB_MAGIC记录数据库的变化,当数据库经过备份还原并恢复后,DB_MAGIC就会改变(SELECT DB_MAGIC FROM V$RLOG;)
再不需要重做归档日志恢复数据的情况下,可以直接更新DB_MAGIC来完成最后的恢复工作。
2)从备份集恢复
利用备份集中备份日志的恢复过程。
3)从归档恢复
利用重做本地归档日志来恢复数据的过程。
从归档恢复可恢复到最新状态,或指定的时间点、指定的LSN值
DM8备份还原技术原理
DM8备份还原技术原理-备份
1.备份过程
库级和表空间级备份
属于物理备份
联机库级和表空间备份要求配置归档
都可进行完全备份和增量备份
备份对象:数据文件和归档日志
归档备份
是把归档目录下,符合条件的归档文件都备份下来
归档备份对象:包含了元数据信息和REDO日志的归档文件
表级备份
过程包含数据备份和元信息备份
表数据通过表上的聚集索引排序,表级数据备份针对表的聚集索引进行
表级备份元信息包括建表语句、重建约束语句、重建索引语句等
表级备份均为完全备份和一致性备份,不需要配置归档
实现过程采用表的内存逻辑存储结构,所访问的页均为有效页,故无需进行智能抽取
2.智能抽取
仅限备份数据文件过程中使用
在遍历各文件中数据页时,根据描述页的标记判断数据页是否被分配、使用,将未使用的数据页剔除,仅保留有效数据页进行备份。
相对于直接拷贝数据文件方式,物理备份产生的备份集更小,有效减少IO数量,提升备份还原的效率
3.加密与压缩
压缩和加密均由用户显式指定;
压缩级别支持1-9级,级别越高压缩比越高,但同时压缩速度越慢。默认采用压缩级别1;
加密:加密密码、加密类型(简单加密or完全加密)和加密算法;
若同时指定加密和压缩,则先压缩后加密;
增量备份,若指定加密,且基备份也存在加密,则使用的加密算法和加密密码必须与其基备份中一致
4.PWR优化
PWR (Page Written Record)日志会记录每次刷盘时数据在数据页中的编号及所属数据页的LSN信息等。
增量备份的常规实现:需要扫描所有的数据文件页,再依次取出LSN>=基备份START_LSN的数据页。
采用PWR优化:通过扫描归档日志中PWR日志,直接比较日志LSN值与基备份的START_LSN,就可确定需备份的数据页。
在备份语句中指定USE PWR来启动增量备份的PWR优化,默认不使用。
5·并行备份
DM8支持对库级、归档备份和表空间级的并行备份
可通过关键字PARALLEL指定是否执行并行备份,以及并行数。默认并行数为4,指定值为0或1则按非并行处理。
并行备份以数据文件为单位,实际可使用的最大并行数就是目标备份数据文件的个数。
增量备份是否并行及并行数取决于其基备份。
并行备份的结果包括一个主备份集目录和几个子备份集目录。
DM8备份还原技术原理-还原与恢复
1.还原过程
库还原和表空间还原
库还原需要用户准备目标库,目标库建库参数需与备份库匹配(可通过DMRMAN的show功能查看备份信息)
表空间还原则不允许跨库还原,只能在源库上执行还原
归档还原
过程概述:
1)读取元数据文件,获取备份信息,校验备份集是否有效;
2)从用户指定的备份集中,收集归档文件,根据用户指定的过滤条件,过滤需要还原哪些归档;
3)根据用户指定的OVERWRITE参数,确定如果目标归档文件已经存在的处理策略:
添加一条日志继续还原其他归档文件;
直接终止还原,报错范围;
强制覆盖处理。
4)执行归档还原,从备份片中把数据去除,必要时经过解压缩&解密处理后回写到新的归档文件中,还原结束。
表还原
1)表结构还原
目标表存在,清除数据、二级索引和约束;
目标表不存在,利用备份集中记录的建表语句重建
2)表数据还原
3)索引和约束的重建
2.恢复过程
备份集恢复有以下几种情况:
如果备份集中备份了归档日志,则只要将备份集中备份的归档日志读出并生成到一个临时归档文件中,然后重做该临时归档文件即可;
如果备份集中没有备份归档日志,则只需要重做本地归档中备份集START_LSN到END_LSN之间的一段归档即可;
如果START_LSN和END_LSN之间无日志,即START_LSN=END_LSN+1,那么只要更新DB_MAGIC即可。
3.解密和解压缩
DM8还原恢复时的解密过程如下:
首先,通过比对用户输入与从元数据文件得到备份集加密信息来检验加密密码和算法是否正确;
然后,从备份片文件中读取备份数据之后,写到目标文件(包括目标数据文件和临时归档文件)之前执行解密操作。
解压缩是自动进行的,不需要用户手动指定什么
若备份集同时存在加密和压缩,那么与备份过程处理相反,会先解密再解压缩,然后将处理的最终数据写入到目标文件中。
4.并行还原
对应并行备份集的还原,非并行备份集不能执行并行还原
并行数使用目标并行备份集并行数;
并行备份集还支持非并行还原(指定关键字NOTPARALLEL)
DM8备份还原技术原理-介质管理层
介质管理层(MML)
DM8根据自身实现自定义了一套API接口SBT来负责备份数据在存储介质上的实际读写操作。
整个存储介质上的读写操作,由MML调用SBT完成。
目前DM8备份还原支持磁盘(DISK)和磁带(TAPE)两种存储介质。
磁盘介质SBT接口实现为dmsbt (WINDOWS上为dmsbt.dll,非WINDOWS上为dmsbt.so)
磁带介质实现为dmsbtex (WINDOWS上命名为dmsbtex.dll,Linux上命名为dmsbtex.so)
其他第三方磁带存储实现,仅需将库文件名命名为dmsbtex.dll (WINDOWS)或dmsbtex.so (非WINDOWS) ,并替换掉DM8相应dmsbtex库文件即可。
DM8备份还原技术原理-应用场景分析
选择备份、还原方式
库级
理论上无论出现哪种损坏都可以采用库级备份还原修复,建议物理损坏情况下使用;
逻辑损坏导致库数据丢失比较严重或者表空间已经被删除,也可采用库级备份还原;
要求还原的目标库脱机且正常退出。需借助DMRMANI具完成。
表空间级
若逻辑损坏导致某个表空间中多个表数据丢失时,可以考虑采用表空间级备份还原。
DM8支持从库级备份中还原表空间。
选择备份、还原方式
归档
归档还原仅能恢复归档文件。
很多时候可以利用归档文件修复数据,若条件允许,最好保留尽量多的日档文件。
表级
因逻辑损坏导致个别表数据丢失, 可以采用表级备份还原。建议对数据库中频繁操作的重要表进行表级备份。
将指定表数据从一个表迁移到另外一个表中,也可使用表级备份还原。
表级备份还原过程中,其他表可以正常工作。
完全,还是增量
当库或表空间的基础数据量很大而数据修改操作不太频繁时,强烈建议使用增量备份(前提是至少有一个完全备份)
建议当进行一定次数的增量备份后,应重新做一个完全备份。
选择恢复方式
表空间还原后的恢复操作由DM8自动执行;表还原后已经是一致性状态,不需要进行恢复操作。
提供三种库级恢复方式:
若还原时指定备份集为脱机库备份集(LEVEL=1)或者联机库备份集(LEVEL=0) ,但过程中无日志(START_LSN=END-LSN+1) ,且仅需将库恢复到备份时状态,建议选择更新DB_MAGIC恢复方式;
若还原时指定的备份集为联机备份集(LEVEL=0)且备份了日志(备份时不指定WITHOUT LOG参数) ,且仅需要库恢复到备份时状态,可以选择从备份集恢复;
除以上情况外,均可以采用从本地归档恢复。可指定想要恢复到的LSN (大于备份结束END_LSN)和时间点(大于备份时间BACKUP_TIME) 。不指定则恢复到最新状态。
—物理备份—
–归档配置
通过 dm.ini 和 dmarch.ini 可以配置本地归档。
dmarch.ini 生效的前提是 dm.ini 中的参数 ARCH_INI 置为 1。
dmarch.ini 可以进行本地归档和远程归档的设置,
DM 备份与还原过程中使用的日志均为本地归档日志。
dmarch.ini 中与备份还原相关的配置参数及其介绍见
ARCH_NAME #REDO 日志归档名
ARCH_TYPE #REDO 日志归档类型,LOCAL 表示本地归档,REMOTE 表示远程
ARCH_DEST #REDO 日志归档目标,LOCAL 对应归档文件存放路径;REMOTE 对应远程目标节点实例名
ARCH_FILE_SIZE #单个 REDO 日志归档文件大小,取值范围(64 MB~2048 MB),缺省 1024 MB,即 1 GB
ARCH_SPACE_LIMIT #REDO 日志归档空间限制,当所有本地归档文件达到限制值时,系统自动删除最老的归档文件。0 表示无空间限制,取值范围(1024 MB~4294967294 MB),缺省为 0
ARCH_INCOMING_PATH #仅 REMOTE 归档有效,对应远程归档存放在本节点的实际路径
–配置本