sql server 備份與恢復系列八 系統資料庫備份與恢復分析

来源:https://www.cnblogs.com/MrHSR/archive/2018/09/01/9544614.html
-Advertisement-
Play Games

一.概述 在前面講過"sql server 備份與恢復系列"都是集中在用戶資料庫上。sql server還維護著一組系統資料庫,這些系統資料庫對於伺服器實例的運行至關重要。在每次進行系統更新後必須備份多個系統資料庫。必須備份的系統資料庫包括:msdb,master,model。如果使用了複製,還要備 ...


一.概述

  在前面講過"sql server 備份與恢復系列"都是集中在用戶資料庫上。sql server還維護著一組系統資料庫,這些系統資料庫對於伺服器實例的運行至關重要。在每次進行系統更新後必須備份多個系統資料庫。必須備份的系統資料庫包括:msdb,master,model。如果使用了複製,還要備份distribution庫。備份以防止系統故障時,用於還原恢復。

  1.master資料庫介紹

    master資料庫記錄著所有系統級信息,如登錄賬戶,系統配置,端點和憑據,以及訪問其他資料庫伺服器需要的信息。還有記錄實例啟動時需要的初始化信息,其它資料庫主文件位置,master是sql server啟動時第一個打開的資料庫,如果master庫有問題,整個sql server無法正常啟動。
    master資料庫不大,建議經常做完整資料庫備份。如果因為master庫損壞無法啟動伺服器實例,又沒有備份,則必須重建。 重建後會刪除並重新創建msdb庫,導致丟失所有計劃信息以及備份和還原歷史記錄。sql server也被重裝過一樣。用戶記錄丟失,資料庫要再次附加,任務計劃要重建。是一件很折騰的過程。
    恢復master資料庫使用的還是restore指令。還原master資料庫後,sql server實例將自動停止。因為master記錄了所有資料庫主文件地址,通過這些地址尋找這些資料庫。如果將master資料庫恢復到一臺新的伺服器上,難免文件地址會發生變化,這時找不到地址,就需要使用單用戶模式啟動sql server,將master資料庫里的信息修改成新的地址。
    如果要啟動單用戶模式,首先停止所有sql server服務(伺服器實例本身除外),並停止所有sql server實用工具。否則單用戶啟動後它們占用了這個用戶連接,管理員反而連接不進去了。

  2.model資料庫

    當創建用戶資料庫時,model資料庫是sql server使用的模板。不推薦對該庫對任務修改。雖然該庫內容一般不發生變化,但sql server在啟動時候,需要使用model庫的某些設置創建新的tempdb。如果沒有tempdb ,實例無法啟動。
  3. msdb資料庫
    msdb存儲了計劃信息,備份和還原歷史記錄信息等。預設情況下,msdb資料庫使用簡單恢復模式。如果在恢復用戶資料庫時使用msdb資料庫中的備份與還原歷史記錄信息,建議對msdb資料庫使用完整恢復模式,並建議將msdb資料庫事務日誌放置在容錯存儲設備中。
  4. tempdb資料庫和資源資料庫
    sql server還有二個系統資料庫比較特別,是tempdb和資源資料庫Resource Database。缺了這兩個資料庫, sqlserver無法啟動,但它們又不能做資料庫備份。tempdb系統資料庫是一個全局資源,可供連接到sqlserver實例的所有用戶使用。每次啟動sqlserver,會重建tempdb庫,保持一個乾凈的副本。會話連接斷開後,會自動刪除該會話的臨時表。因此tempdb不會有什麼內容需要在伺服器關閉的時候保存下來。tempdb不用備份和還原操作,保護好model資料庫就能保證在下次啟動時,得到一個好的tempdb資料庫。
    Resource 資料庫是一個只讀資料庫,它包含了sql server中的所有系統對象。例如sys.objects。Resource 資料庫從來不做修改,所以sql server理論上不用備份Resource 資料庫。考慮到物理磁損壞,可以做基於文件的備份或基於磁碟的備份。

 二. 系統資料庫備份策略

-- 查看系統資料庫預設的恢復模式
SELECT name, recovery_model_desc FROM sys.databases

    

系統資料庫 說明 是否支持備份 恢復模式 註釋
 master  記錄sqlserver系統的所有系統級
信息的資料庫
 支持  簡單  必須經常備份,定期備份計劃,大量更新後補充備份。
 model 為所有資料庫創建的模板  支持  用戶可配置  根據需要創建完整資料庫備份,由於資料庫較小且
很少改動,因此不必備份日誌。
 msdb  sqlserver代理用來安排警報和作業
以及記錄操作員信息的資料庫。msdb
資料庫還包含歷史記錄表,例如備份和
還原歷史記錄表
 支持  簡單
(預設值)
 更新時備份msdb資料庫。
 Resource 所有系統對象副本的只讀資料庫   不支持    不能備份Resource資料庫。
 tempdb 用於保存臨時或中間集的工作空間,
啟動實例時會重新創建此庫,關閉服務
時永久刪除tempdb資料庫中所有數據
 不支持  簡單  無法備份tempdb資料庫。
 distribution

 複製分發伺服器時才存在此資料庫。
存儲元數據,各種複製的歷史記錄數據
以及用於事務複製的事務

 支持  簡單  根據具體的複製配置決定。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 變數名 含義 ARGC 命令行變元個數 ARGV 命令行變元數組 FILENAME 當前輸入文件名 FNR 當前文件中的記錄號 FS 輸入域分隔符,預設為一個空格 RS 輸入記錄分隔符 NF 當前記錄里域個數 NR 到目前為止記錄數 OFS 輸出域分隔符 ORS 輸出記錄分隔符 1、awk '/10 ...
  • Linux Namespaces機制提供一種資源隔離方案。 PID,IPC,Network等系統資源不再是全局性的,而是屬於特定的Namespace。每個Namespace裡面的資源對其他Namespace都是透明的。 要創建新的Namespace,只需要在調用clone時指定相應的flag。 Li ...
  • 常見的linux指令 1、ls ll 查看文件信息 2、cd 切換工作目錄 cd 或 cd ~ 切換到/home/用戶目錄 cd. 切換到當前目錄 cd.. 切換到上級目錄 cd- 切換入上次所在的目錄 3、clear 或 ctrl + l 清屏 4、pwd 顯示當前路徑 5、mkdir 創建目錄 ...
  • 初學mysql時,可能不太明白delimiter的真正用途,delimiter在mysql很多地方出現,比如存儲過程、觸發器、函數等。 學過oracle的人,再來學mysql就會感到很奇怪,百思不得其解。 其實就是告訴mysql解釋器,該段命令是否已經結束了,mysql是否可以執行了。預設情況下,d ...
  • 當MySQL單表記錄數過大時,增刪改查性能都會急劇下降,可以參考以下步驟來優化:除非單表數據未來會一直不斷上漲,否則不要一開始就考慮拆分,拆分會帶來邏輯、部署、運維的各種複雜度,一般以整型值為主的表在千萬級以下,字元串為主的表在五百萬以下是沒有太大問題的。而事實上很多時候MySQL單表的性能依然有不... ...
  • FOREIGN KEY約束添加規則 1、外鍵約束並不僅僅可以與另一表的主鍵約束相鏈接,它還可以定義為引用另一個表中 UNIQUE 約束的列。 2、如果在 FOREIGN KEY 約束的列中輸入非 NULL 值,則此值必須在被引用列中存在;否則,將返回違反外鍵約束的錯誤信息。 若要確保驗證了組合外鍵約 ...
  • 問題: 解決方案: 在PHP 代碼中 輸入 ; 完美解決: ...
  • 問題:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...