《SQL Server企業級平臺管理實踐》讀書筆記——幾個系統庫的備份與恢復
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企業級平臺管理實踐》讀書筆記——幾個系統庫的備份與恢復