1. 程式人生 > >《SQL Server企業級平臺管理實踐》讀書筆記——幾個系統庫的備份與恢復

《SQL Server企業級平臺管理實踐》讀書筆記——幾個系統庫的備份與恢復

工具 損壞 不能 數據庫比較 註釋 gen express 其它 ros

master數據庫

master作為數據庫的主要數據庫,記錄著SQL Server系統的所有系統級信息,例如登錄用戶、系統配置設置、端點和憑證以及訪問其他數據服務器所需要的信息。master數據庫還記錄著啟動服務器實例所需要的初始化信息,每個其它數據庫的主文件位置。master數據庫是SQL Server啟動的時候打開的第一個數據庫。SQL Server是從這個數據庫裏找到其它數據的信息的。如果master數據庫有問題,整個SQL Server都將無法啟動。

master數據庫本身不大,做一次備份很快。建議要經常做master的完整數據庫備份,以充分保護您的數據。如果master數據庫已損壞,可以通過還原master數據庫的最近完整數據庫備份,輕松修復已損壞的數據庫。

如果由於master數據庫損壞嚴重大無法啟動服務器實例,有沒有備份,這時候只能重建了。重建master數據將使的所有的系統數據庫恢復到其原始狀態。例如,重建master數據庫會刪除並重新創建msdb數據庫。這將導致丟失所有的計劃信息以及備份和還原歷史記錄。所以重建master數據庫後,SQL Server就像被重裝過一樣。所有的用戶記錄都會丟失,用戶數據庫需要再次附加,SQL Server任務記錄都要重建。這是一個很折騰的過程。重建master數據庫是個萬不得已的選擇。

在執行任何語句或系統過程中來更改master數據庫中的信息以後(例如,更改服務器範圍的配置選項以後),應備份master數據庫。如果在更改master數據庫後沒有進行備份,則自上次備份以來的更改都將在還原備份時丟失。

一下行為會更改master中元數據:

1、創建或刪除用戶數據庫,這裏不包括用戶數據庫自動增長以容納新數據時,master數據時不受影響的。

2、添加或刪除文件和文件組

3、添加登錄或其它與登錄安全相關的操作,這裏不包括對數據庫層面的操作,比如添加用戶

4、更改服務器範圍的配置選項或數據庫配置選項

5、創建或刪除邏輯備份設備

6、配置用於分布式查詢和遠程過程調用(RPC)的服務器,如添加鏈接服務器或遠程登錄。

恢復master數據庫使用還是RESTORE指令。可是還原master數據庫後,SQL Server實例將自動停止。我們前面講過,master裏面記錄了其他所有數據庫主文件的地址。SQL Server通過這個地址來尋找這些數據庫。如果我們將master數據庫恢復到一臺新的服務器上,難免文件地址會有所變化。這時SQL Sever將找不到其它數據庫。需要使用單用戶模式啟動SQL Server,將master數據庫裏信息修改成新的地址。

開啟單用戶模式,需要停止所有SQL Server服務(服務器實例本身除外),並停止所有SQL Server實用工具(SQL Server代理,報表服務器等)。停止服務和實用工具可以防止他們嘗試訪問服務器實例。否則單用戶啟動後,他們會占用這個用戶連接,管理員反而連接不進去了。

技術分享圖片

model 數據庫

創建用戶數據庫時,model數據庫是SQL Server使用的模板。model數據庫的全部內容(包括數據庫選項)都會被復制到新的數據庫。所以這個數據庫是推薦做任何修改的。除非有目的的創建一些模板,否則不要去更改這個數據庫,也不要把任何用戶數據放在這個數據庫裏。

雖然這個數據庫的內容一般不發生變化,但是在SQL Server啟動的時候,要使用model數據庫的某些設置創建新的tempdb。如果沒有tempdb,SQL Server將無法啟動。因此model數據庫必須始終存在於SQL Server系統中。所以這個數據庫也要備份。

還原model數據庫與對用戶數據執行完整數據庫還原過程一樣。

msdb數據庫

msdb數據庫用來存儲計劃信息以及備份與還原歷史記錄的信息,所以SQL Server本身,ssms和Agentd都要用到它。

SQL Server將在msdb數據庫中自動維護一份完整在下備份與還原歷史記錄。這些信息包括執行備份一方的名稱、備份時間和用來存儲備份的設備或文件。SSMS利用這些信息提出計劃還原數據庫並應用事務日誌備份。將會記錄有關所有數據庫備份事件,即使他們由自定義程序或第三方創建的。例如,如果使用C#程序調用SQL Server執行備份操作時,所有的事件都將記錄在msdb系統表、windows應用程序日誌和SQL Server錯誤日誌中。而SQL Server代理使用的所有計劃信息。包括計劃的定義、排程、歷史日誌等信息。

默認情況下,msdb數據庫使用簡單恢復模式。如果要恢復用戶數據庫時使用msdb數據庫中的所有備份與還原歷史記錄信息,建議對msdb數據庫使用完整恢復模式,並建議考慮將msdb數據庫事務日誌放置在容錯存儲設備中。

技術分享圖片

tempdb臨時庫和資源數據庫(Resource Databse)

SQL Server還有兩個系統數據庫比較特別。他們是tempdb和資源數據庫。缺了這個兩個數據庫SQL Server頁將無法啟動。但是這兩個庫不能做數據庫備份。

temdp系統數據庫是一個全局資源。可供連接到SQL Server實例的所有用戶使用。

每次啟動SQL Server時都會重建tempdb數據庫,從而在系統啟動時總保持一個幹凈的數據庫副本。連接斷了以後,SQL Server會自動刪除臨時表和存儲過程。因此tempdb數據庫中不會有什麽內容需要在服務關閉的時候保存下來。只要有幹凈的model數據庫就可以。SQL Server都能夠創建出一個tempdb數據庫。Temdp數據本身倒不用備份。SQL Server同樣也沒有提供對tempdb數據庫的備份和還原操作。保護好model數據庫,就能保證在下次啟動時,得到一個好的tempdb數據庫。所以對tempdb數據庫保護,轉為了對model數據庫的保護。

Resource數據時一個只讀數據庫。它包含了SQL Server中所有的系統對象。系統對象(例如sys.objects)在物理上存在於Resource數據庫中。但是在邏輯上,他們出現在每個數據庫的sys結構中。Resource數據庫不包含任何用戶或用戶元數據。對於同一個版本的SQL Server。他們的Resource數據庫應該都是一樣的。

默認在實例下是看不到資源庫的,但是Resource數據庫的物理存在的,物理文件名為mssqlsystemresource.mdf和mssqlsystemresource.ldf。默認情況下,這些文件存儲於目錄:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL

技術分享圖片

在群集中,Resource數據庫位於共享磁盤中的Data文件夾中。其實Resource數據庫依賴於master數據庫位置。如果管理員移動了master數據庫,則必須也將Resource數據庫移動到相同的位置。

因為Resource數據庫從來不做修改,所以SQL Server理論上不用備份的。但是管理員不但要考慮SQL Server層面的問題。還要考慮整個系統層面的問題。難免物理磁盤損壞會發生,使得文件出現損壞。所以要通過將mssqlsystemresource.mdf文件作為二進制文件,做基於文件的備份或基於磁盤的備份。恢復時要將SQL 服務停止。手段還原mssqlsystemresource.mdf的文件備份副本。並且必須謹慎,不同版本的Resource數據庫會不一樣。是要使用過期版本或可能不安全的版本覆蓋當前Resource數據庫。

我們集中列舉下

系統數據庫 說明   是否支持備份 恢復模式 註釋
master 記錄SQL Server系統的所有系統級別信息的數據庫 支持 簡單

必須經常備份Master數據庫,以便根據業務需要充分

保護數據。建議使用定期備份計劃,這樣在大量更新

之後可以補充更多的備份

model 在SQL Server實例上為所有數據庫創建的模板 支持 用戶可配置

僅在業務需要時備份model數據庫,例如自定義其數據

庫選項後立即備份。最佳方法是:建議根據需要創建

model數據庫完整性數據庫備份。由於model數據庫較小

而且很少更改,因此無需備份日誌

msdb  

SQL Server代理用來安排報警和作業以及記錄操作員

信息的數據庫。msdb數據庫還包含歷史記錄表,例如

備份和還原歷史記錄表

支持 簡單(默認值) 更新時備份msdb數據庫
Resource(RDB)

包含SQL Server附帶的所有系統對象副本的只讀

數據庫

不支持

Resource數據庫位於mssqlsystemresource.mdf文件中,

該文件近包含代碼。因此,SQL Server不能備份Resource數據庫。

但是可以通過文件備份和磁盤備份,同樣還原的時候不通過SQL Server,

還原這些備份,只能手動還原mssqlsystemresource.mdf的備份副本,

並且必須謹慎,不要使用過期版本或可能不安全的版本覆蓋當前的Resource數據庫

tempdb

用於保存歷史或中間結果集的工作空間,

每次啟動SQL Server實例時都會重建該庫,服務

器實例關閉時,將永久刪除Tempdb數據庫中的所有數據

不支持 簡單

無法備份tempdb系統數據庫

distribution

只有將服務器配置為復制分發服務器時才存在

此數據庫。此數據庫存儲元數據庫、各種復制的歷史記錄數據以及用於事務復制的事務

支持 簡單

根據您具體的復制配置決定

分類: SQL SERVER

《SQL Server企業級平臺管理實踐》讀書筆記——幾個系統庫的備份與恢復