1七、SQL Server 備份和還原

SQL Server 備份sql

恢復模式數據庫

SQL Server 數據恢復模式分爲三種:完整恢復模式、大容量日誌恢復模式、簡單恢復模式。安全

完整恢復模式工具

默認的恢復模式,它會完整記錄下操做數據庫的每個步驟,使用完整恢復模式能夠將一個數據庫恢復到一個特定的時間點,這個時間點能夠是最近一次可用的備份、一個特定的日期和時間的事務。性能

大容量日誌恢復模式測試

它是對完整恢復模式的補充,就是要對大容量操做進行最小日誌記錄,節省日誌文件的空間。spa

好比說一次在數據庫中插入幾十萬條記錄時,若是是完整恢復模式會記錄每個插入動做,使日誌文件變的很是大。在大容量日誌恢復模式下,只記錄必要操做,不記錄全部日誌,這樣能夠提升數據庫性能。可是因爲日誌記錄不完整,一旦出現問題,數據將可能沒法恢復。3d

所以,通常只有在操做大量數據的時候纔將恢復模式改成大容量日誌恢復模式,在數據處理完畢後,立刻將恢復模式改回完整數據庫模式。日誌

簡單恢復模式code

簡單恢復模式下,數據庫會自動把不活動的日誌刪除,所以簡化了備份的還原,但由於沒有日誌備份,因此不能恢復到失敗的時間點。一般,這個模式只用於對數據庫安全要求不過高的數據庫。而且數據庫只能作完整和差別備份,沒法使用事務日誌備份。

數據庫備份

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能夠自動完整相關時間鏈。

文件和文件組備份

若是在建立數據庫時,爲數據庫建立了多個數據庫文件或文件組,可使用該方式。使用文件和文件組備份方式能夠只備份數據庫中的某些文件,該備份方式在數據庫文件很是龐大時很是有效,因爲每次備份一個或幾個文件,能夠分屢次來備份數據庫,避免大型數據庫備份的時間過長。另外,當某個文件損壞時,能夠只還原損壞的文件或文件組部分。

進行完整備份

備份完成後,去選擇的目錄中查看文件。

--完整備份
select count(*) from news
--79647

此時插入測試數據,並執行差別備份

--插入測試數據
declare @index int = 1
while (@index <100)
begin
    insert into news (title,content,datetime) values ('title' + cast(@index as varchar),'content',getdate())
    set @index = @index +1
end

select count(*) from news
--79746

查看目錄,文件已經變大了。

繼續插入測試數據,並執行事務日誌備份

--插入測試數據
declare @index int = 1
while (@index <100)
begin
    insert into news (title,content,datetime) values ('title' + cast(@index as varchar),'content',getdate())
    set @index = @index +1
end

select count(*) from news
--79845

目錄下的文件又變大了,我就不截圖了。

此時刪除全部數據

--刪除數據
delete news 
--0

SQL Server  還原

還原數據庫時,若是必須還原一個完整備份、一個差別備份以及一個事務日誌備份,則必須按照這個順序來還原。

在還原數據庫時,數據庫處於一個不可用的狀態,如此就能夠添加後續的差別和事務日誌備份了。

使用SSMS工具恢復,能夠自動識別一個完整的備份鏈,從而根據指定的內容還原所有備份,還原後數據庫就可用了。

select count(*) from news
--79845

執行sql語句,數據還原到最後一次有效的事務日誌備份了。

關於備份還有一個小東西,備份設置,能夠設置好物理路徑,存個邏輯名,備份的時候選擇這個名字,不用去找路徑。




惟一一點做用就是能夠看裏面詳細的備份信息

相關文章
相關標籤/搜索