DM8物理备份与还原

概念与原理

备份原理

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

分类

DM8中对备份的划分标准有如下几种:

1.备份组织形式:物理备份和逻辑备份

2.备份时,数据库是否运行:联机备份和脱机备份

3.备份的粒度大小:库备份、表空间备份、归档备份和表备份

    归档备份支持联机和脱机;

    归档备份会把收集到的归档文件,备份到备份集中的每一个备份片。必要的时候可以使用归档备份集,还原归档。

4. 备份数据的一致性:一致性备份和非一致性备份

5. 备份数据的完整性:完全备份和增量备份

还原与恢复

还原原理

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

还原分类

与备份的分类类似,还原也可按照以下标准进行划分:

1.还原组织形式:物理还原和逻辑还原

2.还原时,数据库是否运行:联机还原和脱机还原

3.还原的粒度大小:库还原、表空间还原、归档还原和表还原

4.还原数据的完整性:完全备份还原和增量备份还原

恢复原理

数据恢复是指在还原执行结束后,重做REDO日志,将数据库恢复到一致性状态,并执行更新DB_MAGIC的过程。其中重做REDO日志可以多次执行,直到恢复到目标状态。还原结束后,必须经过恢复操作,数据库才允许启动。即使备份过程中没有修改任何数据,备份集不包含任何REDO日志,在数据库还原结束后,也必须使用DMRMAN工具执行数据恢复操作后,才允许启动数据库。

简单概括:

  1. 恢复是重做本地归档日志或者备份集中备份的归档日志的过程。
  2. 没有经过恢复的还原数据库是不允许启动的。
  3. 表备份还原是联机执行的,不需要再执行恢复操作。

分类

根据恢复过程中是否重做归档,及重做归档日志的来源,可将恢复分三类:

1.更新DB_MAGIC

DB_MAGIC记录数据库的变化,当数据库经过备份还原并恢复后,DB_MAGIC就会改变(SELECT DB_MAGIC FROM V$RLOG;)

在不需要重做归档日志恢复数据的情况下,可以直接更新DB_MAGIC 来完成最后的恢复工作。

2.从备份集恢复

利用备份集中备份日志的恢复过程。

3.从归档恢复

利用重做本地归档日志来恢复数据的过程。

从归档恢复可恢复到最新状态,或指定的时间点、指定的LSN值

SELECT PERMANENT_MAGIC

SELECT DB_MAGIC FROM V$RLOG;

联机SQL备份还原

备份

通常情况下,在数据库实例配置归档后输入以下语句即可备份数据库

SQL>BACKUP DATABASE BACKUPSET 'db_bak_01';

生成的备份在如下目录

具体路径由以下dm.ini中BAK_PATH设置默认路径

复杂例子如下

指定备份集路径、设置备份名、指定介质类型、添加备份描述、限制备份片大小、备份压缩、并行备份:

SQL> BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET ‘/home/dm_bak/db_bak_3_02’ DEVICE TYPE DIST  BACKUPINFO ‘完全备份’MAXPIECESIZE 300  COMPRESSED LEVEL 5 PARALLEL 8;

标准语法如下

BACKUP DATABASE [[[FULL] [DDL_CLONE]]| INCREMENT [CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'} |[BASE ON <BACKUPSET '<基备份目录>']][TO <备份名>][BACKUPSET '<备份集路径>'][DEVICE TYPE <介质类型> [PARMS '<介质参数>']] [BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>] [IDENTIFIED BY <密码>[WITH ENCRYPTION<TYPE>][ENCRYPT WITH <加密算法>]][COMPRESSED[LEVEL <压缩级别>]] [WITHOUT LOG][TRACE FILE '< TRACE文件名>'] [TRACE LEVEL < TRACE日志级别>] [TASK THREAD <线程数>][PARALLEL [<并行数>] [READ SIZE <拆分块大小>]]

增量备份(注意WITH BACKUPDIR的用法

SQL> BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';

整理备份表空间

SQL> BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/ts_increment_bak_02';

表备份

SQL>   BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';

归档备份

SQL>BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01';

备份加密

SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_encrypt_01' IDENTIFIED BY "cdb546" WITH ENCRYPTION 2 ENCRYPT WITH RC4;

其中, 参数WITH ENCRYPTION(默认值为 1 ,简单加密) 和 ENCRYPT WITH(默认加密算法AES256_CFB)可不指定。

以数据库完全备份为例,为备份设置跟踪日志文件

SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_trac_01'   TRACE FILE '/home/dm_log/db_bak_trace.log‘  TRACE LEVEL 2;

其中, 参数TRACE FILE 用于指定生成的跟踪日志文件路径;

TRACE LEVEL 表示是否启用TRACE,有效值1和2。1表示不启用TRACE功能,2表示启用,系统默认值为1。 如果指定的TRACE文件已存在,不会覆盖已存在的文件而是在已有文件基础上继续记录日志。

管理备份

备份目录管理

备份集管理

备份信息管理

    

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

SF_RMAN_ADD_BACKUP_DIR:添加备份目录。

SF_RMAN_REMOVE_BACKUP_DIR:指定删除内存中的备份目录。

SF_RMAN_REMOVE_BACKUP_DIR_ALL:删除内存中全部的备份目录。

SF_RMAN_BAKSET_CHECK:校验指定的备份文件。

SF_RMAN_BAKSET_REMOVE:删除指定的备份集。

SP_RMAN_BATCH_DEL_DB_BAKSET:批量删除数据库备份集。

SP_RMAN_BATCH_DEL_TS_BAKSET:批量删除表空间备份集。

SP_RMAN_BATCH_DEL_TAB_BAKSET:批量删除表备份集。

备份管理相关动态视图总结如下

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:显示并行备份中生成的子备份集信息

数据还原

DM仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具DMRMAN执行。

语法如下

RESTORE TABLE [<表名>][STRUCT] [KEEP TRXID]FROM BACKUPSET'<备份集路径>' [DEVICE TYPE <介质类型> [PARMS '<介质参数>']][IDENTIFIED BY <密码>] [ENCRYPT WITH <加密算法>] [TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>];

DMRMAN进行备份还原

DMRMAN备份数据库

RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';

备份归档

RMAN>BACKUPARCHIVE LOG DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';

加密备份

以下两种加密备份命令都是合法的

RMAN>BACKUP        DATABASE        '/opt/dmdbms/data/DAMENG/dm.ini'BACKUPSET '/home/dm_bak/db_bak_for_encrypt_01' IDENTIFIED BY "cdb546";RMAN>BACKUP      DATABASE      '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dm_bak/db_bak_for_encrypt_02' IDENTIFIED BY "cdb546" ENCRYPT WITH RC4

设置跟踪日志文件

RMAN>CONFIGURE DEFAULT TRACE FILE '/home/dm_trace/trace.log ' TRACE LEVEL 2;

SHOW命令管理备份集

查看备份集信息

RMAN>SHOW BACKUPSET '/home/dm_bak/db_bak_for_show_01';

校验特定备份集

RMAN>CHECK BACKUPSET 'db_bak_for_check_02' DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';

删除备份集

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';

备份集导出

RMAN>LOAD BACKUPSETS FROM DEVICE TYPE DISK TO BACKUPDIR '/mnt/dmsrc/bak_dir'

导出备份集映射文件

RMAN>DUMPBACKUPSET'/mnt/dmsrc/db_bak'DEVICE   TYPE   DISK   MAPPED   FILE '/mnt/dmsrc/db_bak_mapped.txt';

数据库还原和恢复

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

SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_restore'

  1. 准备目标库。还原目标库可以是已经存在的数据库,也可使用dminit工具初始化一个新库

./dminit path=/opt/dmdbms/data db_name=DAMENG_FOR_REST

  1. 校验备份,校验待还原备份集的合法性

RMAN>CHECK BACKUPSET '/home/dm_bak/db_full_bak_for_restore

  1. 还原数据库。启动DMRMAN,输入以下命令

RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_restore

  1. 恢复数据库

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_recover_backupset'

不论使用哪种数据恢复,最后都需要更新DB_MAGIC 完成数据库恢复。

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;

从归档恢复

前面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.ini' WITH ARCHIVEDIR'/home/dm_arch/arch' USE DB_MAGIC 1447060265;

数据库恢复到指定时间点/LSN

例:1)联机备份数据库。 2) 修改一些数据,产生归档(SELECT SYSDATE-时间点t1SELECT FILE_LSN FROM V$RLOG命令查询此时的LSN50857)。3)误删除表数据(时间点t2LSN50861)。 4) 还原数据库。

    5)要恢复数据库至步骤2的状态,可以指定UNTIL TIMEUNTIL LSN参数重做部分归档:

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH

ARCHIVEDIR'/home/dm_arch/arch' USE DB_MAGIC 1447060265 UNTIL TIME'2015-11-16 10:56:40.624931';

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH

ARCHIVEDIR'/home/dm_arch/arch' USE DB_MAGIC 1447060265 UNTIL LSN 50857;

更多资讯请上达梦技术社区了解: https://eco.dameng.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值