在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查找所需信息),建議有條件的話,歸檔日誌保存到可以接受的時間點,能夠保存在磁帶等廉價存取設備上。