資料庫一直扮演著很重要的角色。
這也就是為什麼我們要很在意資料庫的備份,當然越重要的資料,可能就要朝A/A 模式,A/P模式去建置。
但並非我們做了A/A或是A/P就不需要去做備份,備份可是非常重要的,例如當資料誤刪、資料被不明因素清空、或是資料異動的查詢......等。
簡單來說,我覺得一個MS SQL資料庫,至少要做到下列的備份方式。
1.完整備份。
2.差異備份。
3.交易紀錄備份。
1.完整備份:
完整備份是整個資料庫的完整備份。
2.差異備份:
差異備份會根據前一次的完整備份,一直到執行差異備份這段時間的備份。
也就是說,如果星期日做了一次完整備份,當星期一做了差異備份,這個差異備份就包含了星期日完整備份之後一直到星期一的資料,當星期二做了差異備份, 這個差異備份就包含了星期日完整備份之後一直到星期二的資料。
3.交易紀錄備份:
交易紀錄備份是一個連續性的資料備份,每一次第一次的交易紀錄備份,都會根據前一次的完整或是差異備份之後開始,而之後的交易紀錄備份都匯根據每一個交易紀錄備份連續下來,這點跟差異備份不同。
簡單來說我在星期日做了完整備份,接著每5分鐘做一次差異,那麼這個差異紀錄就是每5分鐘紀錄然後產出備份檔案。
那麼簡單來舉例一下我採用的備份,但沒有一定的備份方式,依據自己的環境跟需求做最適當的調整。
每週五晚上 做一次完整備份,每周六到四晚上做一次差異備份, 每15分鐘做一次交易紀錄備份。
看完備份之後,那麼還原呢?
我們可以看一下微軟MSDN 提供的
完整的資料庫還原圖片
簡單來說,再還原的時候步驟是,先還原完整,再還原差異,最後再針對交易紀錄還原。
如果只是在本機操作,因為
msdb 的 backupset 系統資料表存有所有 備份組 ,所以可以輕易透過工具還原。
但是如果是異機還原呢?
這時你可以先把還原的指令碼(T-SQL)先存好 。
到時只要快速地取代日期,然後用指令碼還原即可,不然一筆筆點選還原,會點選到死吧(偷笑)
對了,如果資料發生意外時,先別急著還原,記得先備份 結尾記錄備份。
參考來源:
觀念釐清:SQL Server 完整備份、差異備份、交易記錄備份
[SQL] 還原資料庫 - 小眉角