概念与原理
备份原理
备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页。而在备份的过程中,如果数据库系统还在继续运行,这期间的数据库操作并不是都会立即体现到数据文件中,而是首先以日志的形式写到归档日志中,因此,为了保证用户可以通过备份集将数据恢复到备份结束时间点的状态,就需要将备份过程中产生的归档日志也保存到备份集中。
分类
DM8中对备份的划分标准有如下几种:
1.备份组织形式:物理备份和逻辑备份
2.备份时,数据库是否运行:联机备份和脱机备份
3.备份的粒度大小:库备份、表空间备份、归档备份和表备份
归档备份支持联机和脱机;
归档备份会把收集到的归档文件,备份到备份集中的每一个备份片。必要的时候可以使用归档备份集,还原归档。
4. 备份数据的一致性:一致性备份和非一致性备份
5. 备份数据的完整性:完全备份和增量备份
还原与恢复
还原原理
还原与恢复是备份的逆过程。还原是将备份集中的有效数据页重新写入目标数据文件的过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定时间点和指定LSN。恢复结束以后,数据库中可能存在处于未提交状态的活动事务,这些活动事务在恢复结束后的第一次数据库系统启动时,会由DM数据库自动进行回滚
还原分类
与备份的分类类似,还原也可按照以下标准进行划分:
1.还原组织形式:物理还原和逻辑还原
2.还原时,数据库是否运行:联机还原和脱机还原
3.还原的粒度大小:库还原、表空间还原、归档还原和表还原
4.还原数据的完整性:完全备份还原和增量备份还原
恢复原理
数据恢复是指在还原执行结束后,重做REDO日志,将数据库恢复到一致性状态,并执行更新DB_MAGIC的过程。其中重做REDO日志可以多次执行,直到恢复到目标状态。还原结束后,必须经过恢复操作,数据库才允许启动。即使备份过程中没有修改任何数据,备份集不包含任何REDO日志,在数据库还原结束后,也必须使用DMRMAN工具执行数据恢复操作后,才允许启动数据库。
简单概括:
- 恢复是重做本地归档日志或者备份集中备份的归档日志的过程。
- 没有经过恢复的还原数据库是不允许启动的。
- 表备份还原是联机执行的,不需要再执行恢复操作。
分类
根据恢复过程中是否重做归档,及重做归档日志的来源,可将恢复分三类:
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'; |
数据库还原和恢复
SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_restore'
./dminit path=/opt/dmdbms/data db_name=DAMENG_FOR_REST
RMAN>CHECK BACKUPSET '/home/dm_bak/db_full_bak_for_restore
RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_restore
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-时间点t1;SELECT FILE_LSN FROM V$RLOG命令查询此时的LSN:50857)。3)误删除表数据(时间点t2;LSN50861)。 4) 还原数据库。 5)要恢复数据库至步骤2的状态,可以指定UNTIL TIME或UNTIL 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