mysql中的rman备份与恢复_使用RMAN备份与恢复数据库
一、備份信息
1.1、列出備份信息
列出數據庫中所有文件的備份信息:
RMAN>LIST BACKUP OF DATABASE;
列出指定表空間的備份信息:
RMAN>LIST BACKUP OF TABLESPACE SYSTEM;
列出指定數據文件的備份信息:
RMAN>LIST BACKUP OF DATAFILE 4;
列出歸檔日志的備份信息:
RMAN>LIST BACKUP OF ARCHIVELOG ALL;
1.2、刪除備份信息
1.刪除陳舊備份
當使用RMAN 執行備份操作時,RMAN 會根據備份冗余策略確定陳舊備份。
RMAN> delete obsolete;
2.刪除EXPIRED 備份
執行crosscheck 命令核對備份集,如果備份集丟失或者損壞,那么會將該備份集標記為EXPIRED 狀態。為了刪除相應的備份記錄,可以執行delete expired backup 命令。
RMAN> delete expired backup;
3.刪除EXPIRED 副本
RMAN> delete expired copy;
4.刪除特定備份集
RMAN> delete backupset 19;
5.刪除特定備份片
RMAN> delete backuppiece '/home/backup/DEMO_19.bak';
6.刪除所有備份集
RMAN> delete backup;
7.刪除特定映像副本
RMAN> delete datafilecopy '/home/backup/DEMO_19.bak';
8.刪除所有映像副本
RMAN> delete copy;
9.在備份后刪除輸入對象
RMAN> delete archivelog all deleteinput;
RMAN> delete backupset 22 format = '/home/backup/%u.bak' delete input;
二、指令運行方式
2.1、批處理
RMAN>run{
......
......
}
2.2、運行腳本
[oracle@node1~]$ RMAN TARGET / @backup_db.rman
運行存儲在恢復目錄中的腳本(需要首先為rman 創建恢復目錄)
RMAN> RUN { EXECUTE SCRIPT backup_whole_db };
2.3、操作系統腳本
[oracle@node1 ~]$rman target / cmdfile=/home/backup_db.rman
三、增量備份的機制
所謂增量備份,顧名思義即是每次備份僅操作那些發生了"變化"的數據塊。RMAN 中增量備份有兩種:Differential 方式和Cumulative 方式。
3.1、差異備份Differential ( DEFUALT )
備份上級及同級以來所有變化的數據塊
3.2、累積增量備份Cumulative
備份上級以來所有變化的數據塊
所有增量備份要以0級備份為基礎,0級備份指對數據庫做全備。
0 級備份和全庫備份的區別:
1)全庫備份不能作為1 級備份的基礎
2)全庫備份會對unused 數據庫做備份
0 級備份
RMAN>backup incremental level 0 database;
1 級差異增量
RMAN>backup incremental level 1 database;
1 級累積增量
RMAN>backup incremental level 1 cumulative database;
四、備份數據庫命令
4.1、對數據庫全備
RMAN>backup database;
執行上述命令后將對目標數據庫中的所有數據文件進行備份,由于沒有顯式指定FORMAT 參數,rman 會自動為每個備份片段命名。
當然,也可以通過顯式指定format 參數來自定義備份片段的命令規則,比如:
RMAN> BACKUP DATABASE FORMAT '/home/backup/%U';
全備數據庫的同時可以包含控制文件,比如:
RMAN> BACKUP DATABASE FORMAT '/home/backup/%U' include current controlfile;
4.2、備份表空間
RMAN> backup tablespace users;
4.3、備份數據文件
首先可以先通過數據字典DBA_DATA_FILES 查詢出表空間對應的數據文件及其序號,例如:
select file_name,file_id,tablespace_name from dba_data_files;
然后再通過BACKUP DATAFILE 備份指定序號的數據文件,例如:
RMAN> BACKUP DATAFILE n;
注:n=指定的的數據文件序號,如果需要備份的數據文件有多個, n=多個序號,中間以逗號分隔即可。
4.4、備份控制文件
控制文件在ORACLE 中的重要性是毋庸置疑的,你看,連RMAN 都給予特殊的照顧,在RMAN 中備份控制文件的方式是最多的。
1.最簡單的方式,通過CONFIGURE 命令將CONTROLFILE AUTOBACKUP 置為ON。
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
然后你再通過rman 做任何備份操作的同時,都會自動對控制文件做備份。
2.對編號為1 的數據文件,即SYSTEM 表空間的數據文件做備份時,RMAN 也會自動對控制文件做備份。
3.手動執行備份命令。
RMAN> BACKUP CURRENT CONTROLFILE;
4.執行BACKUP 時指定INCLUDE CURRENT CONTROLFILE 參數,例如:
RMAN> BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;
4.5、備份歸檔日志
歸檔日志對于數據庫介質恢復相當關鍵,其雖然不像控制文件那樣一旦損壞則數據庫馬上崩潰,但重要性絲毫不減。歸檔日志文件能確保我們將數據庫恢復到備份之前的任意時刻。
在RMAN 中備份歸檔日志有兩種方式:
1、利用BACKUP ARCHIVELOG 命令備份
RMAN> BACKUP ARCHIVELOG ALL;
2、在BACKUP 過程中利用PLUS ARCHIVELOG 參數備份,例如:
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
則在備份數據庫的同時自動對所有歸檔文件進行備份。這種方式與上種有什么區別呢,區別太明顯了,BACKUP.....PLUS ARCHIVELOG 命令在備份過程中會依次執行下列步驟:
1>.運行ALTER SYSTEM ARCHIVE LOG CURRENT 語句對當前redolog 進行歸檔。
2>.執行BACKUP ARCHIVELOG ALL 命令備份所有已歸檔日志。
3>.執行BACKUP 命令對指定項進行備份。
4>.再次運行ALTER SYSTEM ARCHIVE LOG CURRENT 對當前redolog 歸檔。
5>.對新生成的尚未備份的歸檔文件進行備份。
在完成歸檔日志文件備份后,我們通過需要刪除已備份過的歸檔文件(歸檔文件記錄下了數據庫進行過的所有操作,如果您的數據庫操作頻繁而且量大,那歸檔文件大小也是相當恐怖,備份后刪除釋放存儲空間是相當有必要地)。RMAN 提供了DELETE ALL INPUT 參數,加在BACKUP 命令后,則會在完成備份后自動刪除歸檔目錄中已備份的歸檔日志。
RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
綜述:比如查看備份基本都是LIST BACKUP OF 備份項名稱,如果想自定義片段的話則在備份命令后加上FORMAT 參數。
五、恢復命令
5.1、數據庫恢復
RMAN> restore/revover database;
5.2、表空間恢復
RMAN> restore/revover tablespace xx ;
5.3、只讀表空間的恢復
默認情況下,即使丟失了只讀的數據文件,RMAN 也不會在執行完全數據庫還原操作時候還原只讀的數據文件。要在完全恢復期間還原只讀的數據文件,就必須在RESTORE命令中使用CHECK READONLY
RMAN> RESTORE DATABASE CHECK READONLY;
5.4、恢復SPFILE/控制文件
#使用自動備份恢復SPFILE/控制文件
RMAN>startup nomount;
RMAN> set dbid=153910023RMAN> restore controlfile fromautobackup
RMAN> restore spfile/controlfile to '/xx/xx' fromautobackup ;
或
RMAN> restore controlfile from '/arch/ct_c-2347671489-20060630-00';
5.5、恢復歸檔日志
RMAN> RESTORE ARCHIVELOG ALL;
RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1 UNTIL LOGSEQ=20;
RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1;
也可以用SET命令來指定歸檔日志的還原位置,例如:
RMAN>run{set archivelog destination to "/home/backup/";restore archivelog all;
}
5.6、數據文件副本還原
RMAN> sql "alter datafile 5offline";
RMAN> restore (datafile 5) fromdatafilecopy;
RMAN> recover datafile 5;
RMAN> sql "alter datafile 5 online";
請注意,上面的圓括號很重要
5.7、還原檢查與恢復測試
與備份檢查一樣,還原操作也可以檢查是否能正常restore 或者是否該備份集是否有效。如:
RMAN> RESTORE DATABASEVALIDATE;
RMAN> VALIDATE BACKUPSET 218;
RMAN> RESTORE DATABASE VALIDATE CHECK LOGICAL ;
5.8、從指定的tag 恢復
RMAN> RESTORE FROM tag=’xxxx’;
5.9、不完全恢復的還原:
RMAN> restore database until scn 1000;
RMAN>restore database "to_date('2005/08/01 13:00:00','yyyy/mm/dd hh24:mi:ss')";
RMAN> restore database until sequence 100 thread 1;
5.10、塊級別的恢復
恢復塊的時候,必須指定具體的塊號,如:
RMAN> blockrecover datafile 6 block 3;
總結
以上是生活随笔為你收集整理的mysql中的rman备份与恢复_使用RMAN备份与恢复数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言常用字符ASCII代码表,C语言常
- 下一篇: mysql中的rman备份与恢复_RMA