DM8备份与还原知识点
DM8备份与还原的说明
- 发生故障时,可用来恢复
- 支持第三方工具、支持磁带设备
- 性能提升
- 备份的本质即对有效数据的拷贝
- 还原的本质即将备份集数据页写入目标文件过程
新旧备份还原的比较
序号 | 比较项 | 新备份还原 | 旧备份还原 |
---|---|---|---|
1 | 备份集概念 | 有 | 无 |
2 | 支持的介质 | 磁盘、磁带 | 磁盘 |
3 | 备份粒度 | 库备份、表空间备份、表备份、归档备份 | 库备份、表空间备份、表备份 |
4 | 还原过程与恢复过程 | 分开处理 | 合并处理 |
5 | 脱机备份还原工具 | DMRMAN | DMRESTORE |
6 | 克隆数据库 | 支持,即备份库时只备份DDL不备份数据 | 不支持 |
7 | 智能抽取机制 | 支持 | 不支持 |
8 | 并行备份 | 支持库级、表空间和归档备份的并行,以数据文件为单位,配置并行参数即可 | 库备份拆分为多个表空间的备份。需配置并行映射文件 |
备份过程
-
库级和表空间级备份
√ 属于物理备份
√ 联机库级和表空间备份要求配置归档
√ 都可进行完全备份和增量备份
√ 备份对象:数据文件和归档日志 -
归档备份
√ 是把归档目录下,符合条件的归档文件都备份下来
√ 归档备份对象:包含了元数据信息和REDO日志的归档文件 -
表级备份
√ 过程包含数据备份和元信息备份
√ 表数据通过表上的聚集索引排序,表级数据备份针对表的聚集索引进行
√ 表级备份元信息包括建表语句、重建约束语句、重建索引语句等表级备份均为完全备份和一致性备份,不需要配置归档
√ 实现过程采用表的内存逻辑存储结构,所访问的页均为有效页,故无需进行智能抽取 -
智能抽取
√ 仅限备份数据文件过程中使用
√ 在遍历各文件中数据页时,根据描述页的标记判断数据页是否被分配、使用,将未使用的数据页剔除,仅保留有效数据页进行备份。
√ 相对于直接拷贝数据文件方式,物理备份产生的备份集更小,有效减少IO数量,提升备份还原的效率
还原过程
-
库还原和表空间还原
√ 库还原需要用户准备目标库,目标库建库参数需与备份库匹配(可通过DMRMAN的show功能查看备份信息)
√ 表空间还原则不允许跨库还原,只能在源库上执行还原 -
归档还原
过程概述:
1)读取元数据文件,获取备份信息,校验备份集是否有效;
2)从用户指定的备份集中,收集归档文件,根据用户指定的过滤条件,过滤需要还原哪些归档;
3)根据用户指定的OVERWRITE参数,确定如果目标归档文件已经存在的处理策略:
>添加一条日志继续还原其他归档文件;
>直接终止还原,报错范围;
>强制覆盖处理。
4)执行归档还原,从备份片中把数据去除,必要时经过解压缩&解密处理后回写到新的归档文件中,还原结束。
恢复过程
备份集恢复有以下几种情况:
>如果备份集中备份了归档日志,则只要将备份集中备份的归档日志读出并生成到一个临时归档文件中,然后重做该临时归档文件即可;
>如果备份集中没有备份归档日志,则只需要重做本地归档中备份集START_LSN到END_LSN之间的一段归档即可;
>如果START LSN和END_LSN之间无日志,即START LSN=END LSN+1,那么只要更新DB MAGIC即可。
选择备份、还原方式
库级
>理论上无论出现哪种损坏都可以采用库级备份还原修复,建议物理损坏情况下使用;
>逻辑损坏导致库数据丢失比较严重或者表空间已经被删除,也可采用库级备份还原;
>要求还原的目标库脱机且正常退出。需借助DMRMAN工具完成。
表空间级
>若逻辑损坏导致某个表空间中多个表数据丢失时,可以考虑采用表空间级备份还原。
>DM8支持从库级备份中还原表空间。
归档
>归档还原仅能恢复归档文件。
>很多时候可以利用归档文件修复数据,若条件允许,最好保留尽量多的归档文件。
表级
>因逻辑损坏导致个别表数据丢失,可以采用表级备份还原。建议对数据库中频繁操作的重要表进行表级备份。
>将指定表数据从一个表迁移到另外一个表中,也可使用表级备份还原。表级备份还原过程中,其他表可以正常工作。
完全,还是增量
>当库或表空间的基础数据量很大而数据修改操作不太频繁时,强烈建议使用增量备份(前提是至少有一个完全备份)
>建议当进行一定次数的增量备份后,应重新做一个完全备份。
选择恢复方式
>表空间还原后的恢复操作由DM8自动执行;表还原后已经是一致性状态,不需要进行恢复操作。
>提供三种库级恢复方式:
√ 若还原时指定备份集为脱机库备份集(LEVEL=1)或者联机库备份集(LEVEL=0),但过程中无日志(START_LSN=END_LSN+1),且仅需将库恢复到备份时状态,建议选择更新DB_MAGIC恢复方式;
√ 若还原时指定的备份集为联机备份集(LEVEL=0)且备份了日志(备份时不指定WITHOUTLOG参数),且仅需要库恢复到备份时状态,可以选择从备份集恢复;
√ 除以上情况外,均可以采用从本地归档恢复。可指定想要恢复到的LSN(大于备份结束END_LSN)和时间点(大于备份时间BACKUP_TIME)。不指定则恢复到最新状态。
备份还原工具
- Disql工具:联机数据备份与还原,包括库备份、表空间备份与还原、表备份与还原;
- DMRMAN工具:脱机数据库备份还原与恢复;
- 客户端工具MANAGER和CONSOLE:对应命令行工具DIsql和DMRMAN的功能,分别用于联机和脱机备份还原数据。
归档配置
1、使用SQL语句联机配置归档:
1)修改数据库为MOUNT状态。
SQL>ALTER DATABASE MOUNT;
2)配置本地归档。
SQL>ALTER DATABASE ADD ARCHIVELOG 'DEST=/hone/dm_arch/arch, TYPE = local,
FILE_SIZE= 1024, SPACE_LIMIT= 2048';
3)开启归档模式。
SQL> ALTER DATABASE ARCHIVELOG;
4)修改数据库为 OPEN 状态。
SQL>ALTER DATABASE OPEN;
2、手动配置归档:
- 手动编辑dmarch.ini文件,之后保存在dm.ini所在的目录。dmarch.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)启动服务器,服务器已运行于归档模式。
在进行联机库级备份、表空间备份和表空间还原时,必须保证系统处于归档模式。
联机执行sql语句进行备份还原
1、数据库备份
最简单的数据库备份语句:
SQL> BACKUP DATABASE BACKUPSET 'db_bak_01';
指定备份集路径、设置备份名、指定介质类型、添加备份描述、限制备份片大小、备份压缩、并行备份:
SQL> BACKUP DATABASE TO WEEKLY FULL BAK BACKUPSET
‘/home/dm_bak/db_bak_3_02' DEVICE TYPE TAPE BACKUPINFO‘完全备份’MAXPIECESIZE 300 COMPRESSED LEVEL 5 PARALLEL 8;
注:指定的备份名、加密密码、加密算法名长度限制为128字节;
MOUNT模式下不允许数据库备份。
完全备份
FULL参数可省略,默认为完全备份:
SQL> BACKUP DATABASE FULL BACKUPSET
/home/dm_bak/db_full_bak_01';
完全备份中,可指定DDL_CLONE(数据库克隆)参数,只备份定义不备份数据。该参数只用于数据库级完全备份中。
增量备份
SQL> BACKUP DATABASE INCREMENT WITH BACKUPDIR
'/home/dm_bak'BACKUPSET
'/home/dm_bak/db_increment_bak_02';
2、表空间备份
最简单的表空间备份语句:
SQL> BACKUP TABLESPACE MAIN BACKUPSET 'ts bak_01';
指定基备份目录(不指定则搜索最近一次完全/增量备份作基备份)
SQL>BACKUP TABLESPACE MAIN INCREMENT BASE ON
BACKUPSET'ts_full_bak_01' BACKUPSET 'ts_increment_bak_02';
(其他备份选项设置参考前述库备份)
完全备份(FULL参数可省略,默认为完全备份)
SQL> BACKUP TABLESPACE MAIN FULL BACKUPSET
'/home/dm_bak/ts_full_bak_01';
增量备份
SQL> BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR'/home/dm_bak' BACKUPSET '/home/dm bak/ts increment bak 02';
注:备机状态/MOUNT状态/MPP和RAC环境均不允许表空间备份。
3、表备份 ####
表备份均为联机完全备份,不需要备份归档日志,不存在增量备份之说。
最简单的表备份语句:
SQL> BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';
(其他备份选项设置参考前述库备份)
注:备机状态/MOUNT状态/MPP和RAC环境均不允许表备份还原。
4、归档备份
归档备份拷贝指定归档目录下的所有的归档文件到备份集中。备份归档需要服务器配置归档。
SQL>BACKUP ARCHIVE LOG ALL BACKUPSET
‘arch_bak_01';
5.使用Disql执行还原
注:DIsql只能进行表空间和表的还原,库还原使用脱机工具DMRMAN。
表空间还原:
√ 系统处于OPEN状态下
√ 表空间还原、恢复操作一次性完成,还原后不需单独执行恢复
√ 可使用表空间完全备份、表空间增量备份、数据库备份文件还原表空间
SQL> ALTER TABLESPACE MAIN OFFLINE;
SQL> RESTORE TABLESPACE MAIN FROM BACKUPSET'ts_bak_01';
SQL> ALTER TABLESPACE MAIN ONLINE;
表还原:
√ 不需配置归档
√ 系统处于OPEN状态下
√ 表还原是联机完全备份还原,因此还原后不需要恢复
6.还原高级主题
**表空间还原: **
√ 指定归档目录还原
√ 还原表空间中指定的数据文件
√ 指定映射文件还原
表还原:
√ 指定还原时不重建索引
√ 指定还原时不重建约束
√ 指定还原时还原二级索引数据
详细用法参考《DM8_New_backup_And_Recovery.pdf》.
使用DMRMAN工具进行备份还原
DMRMAN(DM RECOVERY MANEGER)是DM8的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、数据库恢复等相关操作。
DMRMAN备份数据库
数据库处于脱机状态。
创建完全备份:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'FULL BACKUPSET '/home/dm_ak/db_full_bak_01';
创建增量备份:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'INCREMENT WITH BACKUPDIR /home/dm_bak' BACKUPSET
'/home/dm_bak/db_increment_bak_02';
创建归档备份:
RMAN>BACKUP ARCHIVE LOG ALL DATABASE
'/opt/dmdbms/data/DAMENG/dm.ini'
BACKUPSET '/home/dm_bak/arch_all_bak_01';
创建设置条件的归档备份:
通过设置LSN或者时间点,控制需要备份归档的范围。
RMAN>BACKUP ARCHIVE LOG LSN BETWEEN 50000 AND20000 DATABASE 'opt/dmdbms/data/DAMENG/dm.ini'BACKUPSET/hame/dm_bak/db_increment _bak02':
管理备份
>备份集查看
>备份集校验
>备份集删除
1、查看备份集信息:
RMAN>SHOW BACKUPSET
'/home/dm_bak/db_bak_for_show_01';
2、校验特定备份集:
RMAN>CHECK BACKUPSET 'db_bak_for_check_02'DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';
3、删除备份集:
RMAN>REMOVE BACKUPSET
'/home/dm_bak/db_bak_for_remove_01';
批量删除所有备份集:
RMAN>REMOVE BACKUPSETS WITH BACKUPDIR'/home/dm_bak';
批量删除指定时间之前的备份集:
RMAN>REMOVE BACKUPSETS WITH BACKUPDIR'/home/dm_bak'UNTIL TIME'2015-11-1 00:00:00';
数据库还原和恢复
数据库还原
例:1)联机备份数据库:
SQL>BACKUP DATABASE BACKUPSET
'/home/dm_bak/db_full_bak_for_restore';
2)准备目标库。还原目标库可以是已经存在的数据库,也可使用dminit工具初始化一个新库。
3)校验待还原备份集的合法性(如果确定合法该步可省略)
RMAN>CHECK BACKUPSET
'/home/dm_bak/db_full_bak_for_restore';
4)还原数据库
RMAN>RESTORE DATABASE
'/opt/dmdbms/data/DAMENGFOR_RESTORE/dm.ini'FROMBACKUPSET'/home/dm_bak/db_full_bak_for_restore';
数据库恢复
>更新DB_MAGIC恢复
>从备份集恢复
>从归档恢复
1、更新DB_MAGIC恢复:
当备份集为脱机备份即备份过程中无日志生成,可以直接更新DB_MAGIC完成数据库恢复。
RMAN>RECOVER DATABASE
'/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini'UPDATE DB_MAGIC;
2、从备份集恢复:
如果备份集在备份过程中生成了日志,且这些日志在备份集中有完整备份(如联机数据库备份),在执行库还原后,可重做备份集中备份的日志,将数据库恢复到备份时的状态,即从备份集恢复。
例:1)联机备份数据库。
2)准备目标库。
3)校验待还原备份集的合法性。
4)还原数据库。
5)从备份集恢复数据库:
RMAN>RECOVER DATABASE
'/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini'FROM BACKUPSET
'/home/dm_bak/db_full_bak_for_recover_backupset';
3、从归档恢复:
从归档恢复是利用重做本地归档日志来恢复数据的过程。
允许恢复到指定的时间点及指定的LSN值。
例:1)联机备份数据库。
2)准备目标库。
3) 校验备份集。
4) 还原数据库。
5) 查看备份集的数据库信息,获取源库的DB_MAGIC。
RMAN>SHOW BACKUPSET
'/home/dm_bak/db_full_bak_for_recover_arch'INFO DB;
6) 利用归档恢复数据库。
RMAN>RECOVER DATABASE
'/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.iniWITH ARCHIVEDIR'/home/dm_arch/arch' USE DB_MAGIC1442060265
数据库恢复高级场景
数据库恢复到指定时间点/LSN
例:1)联机备份数据库。
2)修改一些数据,产生归档(SELECTSYSDATE-时间点t1;SELECT FILE_LSN FROM V$RLOG命令查询此时的LSN:50857)。
3)误删除表数据(时间点t2;LSN50861)。
4)还原数据库。
5)要恢复数据库至步骤2的状态,可以指定UNTIL TIME或UNTILLSN参数重做部分归档:
RMAN>RECOVER DATABASE
'/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITHARCHIVEDIR'/home/dm arch/arch' USE DB MAGIC 1447060265UNTIL TIME'2015-11-16 10:56:40.624931';
RMAN>RECOVER DATABASE
'/opt/dmdbms/data/DAMENGFORRESTORE/dm.ini' WITHARCHIVEDIR'/home/dm_arch/arch' USE DB_MAGIC 1447060265UNTIL LSN 50857;
查看操作日志
整个操作过程中可能涉及的日志或跟踪文件位于DM数据库的log目录中。操作日志类型包括:
>全局日志文件dm_DMSERVER_xxx.log
>备份还原日志文件dm_bakres_xxx.log
>SBT接口跟踪文件dm_SBTTRACE_xxx.log