備份恢復學的這麼差,試用期你都過不了

2022-01-08 14:00:01
作者:IT邦德
中國DBA聯盟(ACDU)成員,目前從事DBA及程式程式設計
(Web\java\Python)工作,主要服務於生產製造
現擁有 Oracle 11g  OCP/OCM、
Mysql、Oceanbase(OBCA)認證
分散式TBase\TDSQL資料庫、國產達夢資料庫以及紅帽子認證
從業8年DBA工作,在資料庫領域有豐富的經驗

擅長主流資料Oracle、MySQL、PG 運維開發,備份恢復,安裝遷移,效能優化、故障應急處理等。

前言

本文結合自己工作10年的積累,將Oracle的備份恢復做了詳細闡述

一、 資料庫故障型別

1)user process failure 使用者程序故障:pmon 自動處理
2)instance failure 範例故障: smon 自動處理
3)user errors 使用者 錯誤: 需要 dba 通過備份恢復解決
4)media failure 媒介故障: 必須通過備份和紀錄檔恢復

總結:備份恢復主要是用於保護資料(媒介、使用者、應用程式導致)、保留資料、傳輸資料

二、 備份恢復分類

在這裡插入圖片描述在這裡插入圖片描述
還原即Restore(重儲),恢復即是Recover(恢復)

2.1 邏輯備份與恢復

①傳統的匯入匯出:exp/imp:
②資料泵匯入匯出:expdp/impdp
面向 object,邏輯備份就是熱備資料庫物件某一時刻狀態,
不能運用在 media failure 上,邏輯備份的恢復就是還原備份,沒有 recover 的概念。

2.2 物理備份與恢復

面向 media failure
①手工備份與恢復,也叫使用者管理的備份與恢復(UMAN),
通過 OS 的命令,完成備份與還原,然後再運用紀錄檔進行恢復。
②自動備份與恢復,利用 oracle 的備份恢復工具 RMAN,使還原與恢復過程自動完成。
物理備份從方式上可以有 一致性備份(冷備) 和 非一致性備份(熱備)
完整的備份策略應該以物理備份為主,邏輯備份為輔(用於備份一些重要的表)

2.3 閃回技術

一種利用 undo 資料或閃回紀錄檔的快速恢復技術。
可以針對不同層面問題進行邏輯恢復,
11g 支援七種 flashback 方式,
其中快速恢復區只和閃回資料庫有關。

三、完全恢復與不完全恢復

1)完全恢復:
利用完整備份或部分備份,可以將 datafile 
恢復到 failure 前得最後一次 commit,不會出
現資料丟失。
2)不完全恢復
需要運用完整備份和紀錄檔將 database 
恢復到過去的某個時間點(或 SCN),有資料丟失。

四、備份策略

在這裡插入圖片描述

備份策略:每週日執行0級全備份,週一至週六每天執行1級增量備份
設定保留策略 reduncancy 2,
開啟控制檔案自動備份

RMAN> show all;
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE CONTROLFILE AUTOBACKUP ON;

在這裡插入圖片描述

4.1 備份指令碼

--建立存放指令碼的目錄
mkdir /home/oracle/scripts
--建立全備份指令碼
vi /home/oracle/scripts/rman_level0.sh
#!/bin/bash
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=PROD
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
rman target / << EOF
run{
crosscheck backup;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup incremental level 0 database format '/u01/backup/rman/db_%U.bak'
plus archivelog format '/u01/backup/rman/ar_%U.bak';
backup current controlfile format '/u01/backup/rman/ctl_%U.bak';
report obsolete device type disk;
delete noprompt obsolete device type disk;
delete noprompt expired backup device type disk;
release channel c1;
release channel c2;
}
EOF
exit

CROSSCHECK命令:用於核對磁碟和磁帶上的備份檔案
狀態為:AVALIABLE、UNAVALIABLE、EXPIRED

賦予許可權
chmod a+x /home/oracle/scripts/rman_level0.sh
chmod a+x /home/oracle/scripts/rman_level1.sh

4.2 編寫 crontab 計劃任務

測試環境 整點進行全備份,每 15 分鐘增量備份一次
0 * * * * /home/oracle/scripts/rman_level0.sh >> /u01/backup/rman/PROD_rman_L0_`date
+\%Y\%m\%d_\%H\%M\%S`.log 2>&1
15,30,45 * * * * /home/oracle/scripts/rman_level1.sh >>
/u01/backup/rman/PROD_rman_L1_`date +\%Y\%m\%d_\%H\%M\%S`.log 2>&1

檢視備份情況是否正常,檢視相關備份紀錄檔。
檢視 obsolete 備份、歸檔是否刪除正常。

 select a.TIME_TAKEN_DISPLAY as "用時",
       a.INPUT_BYTES_DISPLAY "大小",
       a.INPUT_BYTES_PER_SEC_DISPLAY as "速度",
       a.INPUT_TYPE "備份型別",
       to_char(start_time, 'day') day1,
       to_char(start_time, 'yyyy-mm-dd hh24:mi:ss') as "開始時間",
       to_char(end_time, 'yyyy-mm-dd hh24:mi:ss') "結束時間",
       output_device_type,
       status,
       input_type
  from V$RMAN_BACKUP_JOB_DETAILS a

大家點贊、收藏、關注、評論啦 、檢視👇🏻👇🏻👇🏻微信公眾號獲取聯絡方式👇🏻👇🏻👇🏻