標籤:style blog http io color os 使用 sp strong
原文:《SQL Server企業級平台管理實踐》讀書筆記——幾個系統庫的備份與恢複
master資料庫
master作為資料庫的主要資料庫,記錄著SQL Server系統的所有系統級資訊,例如登入使用者、系統配置設定、端點和憑證以及訪問其他資料服務器所需要的資訊。master資料庫還記錄著啟動伺服器執行個體所需要的初始化資訊,每個其它資料庫的主檔案位置。master資料庫是SQL Server啟動的時候開啟的第一個資料庫。SQL Server是從這個資料庫裡找到其它資料的資訊的。如果master資料庫有問題,整個SQL Server都將無法啟動。
master資料庫本身不大,做一次備份很快。建議要經常做master的完整Database Backup,以充分保護您的資料。如果master資料庫已損壞,可以通過還原master資料庫的最近完整Database Backup,輕鬆修複已損壞的資料庫。
如果由於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利用這些資訊提出計劃還原資料庫並應用交易記錄備份。將會記錄有關所有Database Backup事件,即使他們由自訂程式或第三方建立的。例如,如果使用C#程式調用SQL Server執行備份操作時,所有的事件都將記錄在msdb系統資料表、windows應用程式記錄檔和SQL Server錯誤記錄檔中。而SQL Server代理使用的所有計劃資訊。包括計劃的定義、排程、曆史日誌等資訊。
預設情況下,msdb資料庫使用簡單復原模式。如果要恢複使用者資料庫時使用msdb資料庫中的所有備份與還原記錄資訊,建議對msdb資料庫使用完整復原模式,並建議考慮將msdb資料庫交易記錄放置在容錯存放裝置中。
tempdb臨時庫和資源資料庫(Resource Databse)
SQL Server還有兩個系統資料庫比較特別。他們是tempdb和資源資料庫。缺了這個兩個資料庫SQL Server頁將無法啟動。但是這兩個庫不能做Database Backup。
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資料庫完整性Database Backup。由於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企業級平台管理實踐》讀書筆記——幾個系統庫的備份與恢複