在rman增量备份中,有差别增量和累积增量的概念php
一、概念sql 差别增量(Differential):是备份低级别或者相同级别备份以来变化的全部数据块,顾名思议,也就是要备前期备份以来的差别数据块数据库
若前面的备份同时存在低级别和相同级别,则优先选择备份从最近的低级别(n-1)以来变化的数据块,spa 若没有n-1级别备份,则选择备份同级别备份以来变化的数据块,.net 若没有同级别的备份,则备份更低级别以来(n-x)变化的数据日志 若前面同时有n-1级别和相同级别,则备份相同级别以来变化的数据orm
若前面的备份同时存在低级别和n-1级别,则优先选择备份从n-1级别以来变化的数据块ip 若没有n-1级别,则备更低级别的(n-x)rem
二、备份策略及恢复 以rman多级增量备份来做为备份策略例子: 增量备份都须要一个0级备份来做为基础,0级备份与全备份的区别在于0级能够用来增量恢复,而全备份则不能够。 备份策略: eg:咱们对一星期作以下备份策略 案例。 星期天 0级 0级 星期一 2级 2级 星期二 2级 2级 星期三 1级 1级 星期四 2级 2级 星期五 2级 2级 星期六 2级 2级 星期天 0级 0级
对于差别增量,周一的二级备从周日到周一变化的数据 (没有n-1级,也没有同级别) 周二的二级备从周一到周二变化的数据 (没有n-1级,有同级别) 周三的一级备从周日到周三变化的数据 (没有n-1级,有同级别) 周四的二级备从周三到周四变化的数据 (有n-1级) 周五的二级备从周四到周五变化的数据 (有n-1级,有同级别) 周六的二级备从周五到周六变化的数据 (有n-1级,有同级别)
如图:
假如周六数据库须要恢复(周五的二级备份完毕,未备份周六的),那么差别增量只须要使用星期天的0级,星期三的一级,星期4、五的二级加归档日志就能够彻底恢复
对于累积增量,周一的二级备从周日到周一变化的数据 (没有n-1级,有更低级别) 周二的二级备从周日到周二变化的数据 (没有n-1级,有更低级别) 周三的一级备从周日到周三变化的数据 (有n-1级) 周四的二级备从周三到周四变化的数据 (有n-1级) 周五的二级备从周三到周五变化的数据 (有n-1级) 周六的二级备从周三到周六变化的数据 (有n-1级) 如图示:
假如周六数据库须要恢复(周五的二级备份完毕,未备份周六的),累积增量则须要星期天的0级,周三的一级,星期五的二级加归档日志便可进行彻底恢复
|
以上是一个星期的备份策略,若是作长期的备份策略则只须要把备份的时间延长便可获得新的备份策略,具体须要看本身备份及恢复可以接受的程度而顶,见最后的备份策略典型备份命令以下:
零级备份
backup incremental level 0 database;
一级差别增量
backup incremental level 1 database;
一级累计增量
backup incremental level 1 cumulative database;
备份策略典型案例:
每半年作一个数据库的全备份(包括全部的数据和只读表空间)
每个月作一次零级备份(不包含只读表空间)
每一个星期作一次一级备份
天天作一次二级备份
任何数据库的更改须要从新同步CATALOG目录并从新备份(如添加数据文件)或从新备份(如修改表空间为只读)
建议备份一段时间归档日志和按期备份归档到到磁带上
全库备份脚本
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup full tag ‘dbfull’ format ‘/u01/oradata/backup/full%u_%s_%p’ database
include current controlfile;
sql ‘alter system archive log current’;
backup filesperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’
archivelog all delete input; #备份归档可选,能够单独按期备份
release channel c1;
release channel c2;
release channel c3;
}
零级备份脚本
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 0 tag ‘db0’ format ‘/u01/oradata/backup/db0%u_%s_%p’
database skip readonly;
sql ‘alter system archive log current’;
backup filesperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’
archivelog all delete input; #备份归档可选,能够单独按期备份
release channel c1;
release channel c2;
release channel c3;
}
一级备份脚本
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 1 tag ‘db1’ format ‘/u01/oradata/backup/db1%u_%s_%p’
database skip readonly;
sql ‘alter system archive log current’;
backup filesperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’
archivelog all delete input; #备份归档可选,能够单独按期备份
release channel c1;
release channel c2;
release channel c3;
}
若是按照以上备份策略,则天天的所须要备份的数据量只有一天的改变量。而作恢复时最多要恢复当月的一个零级备份+三个一级备份+6个二级备份+当天的归档 文件。若是不能接受这样的恢复时间,能够减小零级备份之间的时间间隔。在每次备份后,原则上在该备份点以前的归档日志就能够删除掉了,可是为了进一步的安 全以及往后须要(如使用LOGMNR查找所需信息),建议有条件的话,归档日志保存到可以接受的时间点,能够保存在磁带等廉价存取设备上。