標籤:
SQL Server 備份
復原模式
SQL Server 資料復原模式分為三種:完整復原模式、大量記錄復原模式、簡單復原模式。
完整復原模式
預設的復原模式,它會完整記錄下操作資料庫的每一個步驟,使用完整復原模式可以將一個資料庫恢複到一個特定的時間點,這個時間點可以是最近一次可用的備份、一個特定的日期和時間的事務。
大量記錄復原模式
它是對完整復原模式的補充,就是要對大容量操作進行最小日誌記錄,節省記錄檔的空間。
比如說一次在資料庫中插入幾十萬條記錄時,如果是完整復原模式會記錄每一個插入動作,使記錄檔變的非常大。在大量記錄復原模式下,只記錄必要操作,不記錄所有日誌,這樣可以提高資料庫效能。但是由於日誌記錄不完整,一旦出現問題,資料將可能無法恢複。
因此,一般只有在操作大量資料的時候才將復原模式改為大量記錄復原模式,在資料處理完畢後,馬上將復原模式改回完整資料庫模式。
簡單復原模式
簡單復原模式下,資料庫會自動把不活動的日誌刪除,因此簡化了備份的還原,但因為沒有記錄備份,所以不能恢複到失敗的時間點。通常,這個模式只用於對資料庫安全要求不太高的資料庫。並且資料庫只能做完整和差異備份,無法使用交易記錄備份。
Database Backup
SQL Server 提供了四種備份模式:完整備份,差異備份,交易記錄備份,檔案和檔案組備份。
完整備份
備份整個資料庫的所有內容,包括交易記錄。該備份類型需要比較大的儲存空間來儲存備份檔案,備份時間也比較長,在還原資料庫時,也只要還原一個備份檔案即可。
如:2015年1月1日 8點進行了完整備份,那麼恢複資料的時候就是恢複到2015年1月1日 8點的資料。
差異備份
差異備份是完整備份的補充,只備份上次完整備份後更改的資料。相對於完整備份來說,差異備份的資料量比完整資料備份小,備份的速度也比完整備份要快。因此,差異備份通常座位常用的備份方式。在還原資料時,要先還原前一次的完整備份,然後還原最後一次所做的差異備份。
如:2015年1月1日 8點進行了完整備份,在1月2日 和1月3日又分別進行了差異備份,那麼1月2日記錄的是1-2的資料,1月3日則是1-3的資料。因此在還原時,如果想回到3日的狀態,需要先恢複完整備份,然後還原1月3日的差異備份即可。
交易記錄備份
交易記錄備份只備份交易記錄裡的內容,交易記錄記錄了上一次完整備份或交易記錄備份後資料庫的所有變動過程。交易記錄記錄的是某一段時間內的資料庫變動情況,因此在進行交易記錄備份之前,必須要進行完整備份。與差異備份類似,交易記錄備份產生的檔案嬌小、佔用時間較短,但是在還原資料庫時,除了要線還原完整備份外,還要依次還原每個交易記錄備份,而不是還原最後一個。
如:2015年1月1日 8點進行了完整備份,此時對資料庫做的所有改動都會按照時間分批儲存在交易記錄備份中,這樣可以還原到某個時間點,使用SSMS可以自動完整相關時間鏈。
檔案和檔案組備份
如果在建立資料庫時,為資料庫建立了多個資料庫檔案或檔案組,可以使用該方式。使用檔案和檔案組備份方式可以只備份資料庫中的某些檔案,該備份方式在資料庫檔案非常龐大時非常有效,由於每次備份一個或幾個檔案,可以分多次來備份資料庫,避免大型Database Backup的時間過長。另外,當某個檔案損壞時,可以只還原損壞的檔案或檔案組部分。
進行完整備份
備份完成後,去選擇的目錄中查看檔案。
--完整備份select count(*) from news--79647
此時插入測試資料,並執行差異備份
--插入測試資料declare @index int = 1while (@index <100)begin insert into news (title,content,datetime) values (‘title‘ + cast(@index as varchar),‘content‘,getdate()) set @index = @index +1endselect count(*) from news--79746
查看目錄,檔案已經變大了。
繼續插入測試資料,並執行交易記錄備份
--插入測試資料declare @index int = 1while (@index <100)begin insert into news (title,content,datetime) values (‘title‘ + cast(@index as varchar),‘content‘,getdate()) set @index = @index +1endselect count(*) from news--79845
目錄下的檔案又變大了,我就不了。
此時刪除所有資料
--刪除資料delete news --0
SQL Server 還原
還原資料庫時,如果必須還原一個完整備份、一個差異備份以及一個交易記錄備份,則必須按照這個順序來還原。
在還原資料庫時,資料庫處於一個停用狀態,如此就可以添加後續的差異和交易記錄備份了。
使用SSMS工具恢複,可以自動識別一個完整的備份鏈,從而根據指定的內容還原全部備份,還原後資料庫就可用了。
select count(*) from news--79845
執行sql語句,資料還原到最後一次有效交易記錄備份了。
關於備份還有一個小東西,備份設定,可以設定好實體路徑,存個邏輯名,備份的時候選擇這個名字,不用去找路徑。
唯一一點作用就是可以看裡面詳細的備份資訊
分類: SQL Server
SQL Server 備份與還原