sql server 備份與恢復系列六 文件組備份與還原

来源:https://www.cnblogs.com/MrHSR/archive/2018/08/23/9477801.html
-Advertisement-
Play Games

一. 概述 文件備份是指備份一個或多個文件或文件組中的所有數據。使用文件備份能夠只還原損壞的文件,而不用還原資料庫的其餘部份,從而加快恢復速度。例如,如果資料庫由位於不同磁碟上的若幹文件組成,在其中一個磁碟發生故障時,只需還原這個故障磁碟上的文件,其它磁碟文件無須還原,這樣縮短還原時間。 在完整恢復 ...


一. 概述

  文件備份是指備份一個或多個文件或文件組中的所有數據。使用文件備份能夠只還原損壞的文件,而不用還原資料庫的其餘部份,從而加快恢復速度。例如,如果資料庫由位於不同磁碟上的若幹文件組成,在其中一個磁碟發生故障時,只需還原這個故障磁碟上的文件,其它磁碟文件無須還原,這樣縮短還原時間。

  在完整恢復模式下,一整套完整文件備份和涵蓋所有文件備份的日誌備份合起來,等同於一個完整資料庫備份。

  1.1 文件備份具有如下優點:
    (1)可以迅速還原損壞的文件。
    (2)當超大型資料庫在完整備份下變得難以管理時,文件備份增加了計劃和媒體處理的靈活性。

  1.2 文件備份具有不足:
    (1) 與完整資料庫備份相比,文件備份的主要缺點是管理較為複雜。如果某個損壞的文件未備份,那麼媒體故障可能會導致無法恢復整個資料庫。因此必須維護一組完整的文件備份,還必須維護一個或多個日誌備份。
    (2) 維護和跟蹤這些完整備份是一種耗時的任務,所需空間會超過完整資料庫備份所需的空間。

二. 文件備份策略  

   使用文件備份和日誌備份還原資料庫的操作可能比較複雜,因此最好先執行完整資料庫備份,併在第一個文件備份開始之前,進行日誌備份。下圖在t0創建資料庫後,立即執行完整資料庫備份t1,創建第一個完整資料庫備份後,便可以開始執行事務日誌備份。事務日誌備份按計劃的間隔時間執行,文件備份以最適合資料庫業務要求的間隔執行,下麵是先備份主文件組A,再是輔助文件組B。在完整恢復模式下,恢復一個文件組備份,不但需要恢覆文件組備份本身,還需要依次恢復從上一次完整資料庫備份後到恢復的目標時間點為止的所有日誌備份。如果日誌備份數量多,可以考慮再給合差異文件備份,但這樣備份計劃更加難於管理。

 

三.文件還原  

   當一個大資料庫有若幹個文件和文件組,如果損壞只是集中在其中一個文件或文件組上,sqlserver只要把壞掉的那個數據文件組重建,肯定可以節約時間。但是資料庫的事務修改是會分佈在各個數據文件上的,如果用備份只恢復其中一個文件,而其它文件不恢復,那麼它們的狀態一定會不一致,這樣資料庫是無法使用的,為了使新恢復的文件能夠自動恢復備份以後做的修改,就需要藉助事務日誌。使用文件備份還原一個或多個受損文件的步驟如下:

  (1) 創建活動事務日誌的尾日誌備份。 對於離線文件還原,在文件還原之前必須始終先進行一次尾日誌備份。對於線上文件還原,在文件還原之後必須始終先進行一次日誌備份。因為日誌文件一日損壞,文件還原則無法進行。

  (2) 從每個損壞的文件的最新文件備份還原相應文件。

  (3) 針對每個還原的文件,還原最近的差異文件備份(如果有,因為這樣還原快)

  (4) 按順序還原事務日誌備份,從時間上最早備份的日誌文件開始,到步驟1的尾日誌結束。

四 . 數據初始化  

--第一步: 創建資料庫
CREATE DATABASE [FileGroupTest]
go
USE [FileGroupTest]

--第二步:創建文件組
ALTER DATABASE [FileGroupTest] ADD FILEGROUP [FG_Test_Id_01]
ALTER DATABASE [FileGroupTest] ADD FILEGROUP [FG_Test_Id_02]

--第三步:創建文件添加到文件組
ALTER DATABASE [FileGroupTest] ADD FILE
(NAME = N'FG_TestUnique_Id_01_data',FILENAME = N'D:\Data\FG_TestUnique_Id_01_data.ndf',SIZE = 1MB, FILEGROWTH = 1MB )
TO FILEGROUP [FG_Test_Id_01]

ALTER DATABASE [FileGroupTest] ADD FILE
(NAME = N'FG_TestUnique_Id_02_data',FILENAME = N'D:\Data\FG_TestUnique_Id_02_data.ndf',SIZE = 1MB, FILEGROWTH = 1MB )
TO FILEGROUP [FG_Test_Id_02]

--第四步創建表存放在不同文件上
CREATE TABLE  Student(ID INT,Name varchar(50),[Address] varchar(100)) ON [FG_Test_Id_01]
CREATE TABLE  Teacher(ID INT,Name varchar(50),[Address] varchar(100)) ON [FG_Test_Id_02]
CREATE TABLE  School(ID INT,Name varchar(50),[Address] varchar(100)) ON [PRIMARY]

-- 養成好習慣先進行完整備份
backup database  [FileGroupTest] to BackupTestDevice

五. 備份演示

-- 給二個表插入數據
insert into Student values(1,'張三','廣東深圳')
insert into Teacher values(1,'李四','廣東佛山')

-- 日誌備份
backup log  [FileGroupTest] to BackupTestDevice

-- 給二個表插入數據
insert into Student values(2,'張三2','廣東深圳')
insert into Teacher values(2,'李四2','廣東佛山')

-- 日誌備份
backup log  [FileGroupTest] to BackupTestDevice

-- 文件組FG_Test_Id_01備份
backup database [FileGroupTest] file='FG_TestUnique_Id_01_data' to BackupTestDevice

-- 給二個表插入數據
insert into Student values(3,'張三3','廣東深圳')
insert into Teacher values(3,'李四3','廣東佛山')
-- 日誌備份
backup log  [FileGroupTest] to BackupTestDevice
-- 給二個表插入數據
insert into Student values(4,'張三4','廣東深圳')
insert into Teacher values(4,'李四4','廣東佛山')
-- 日誌備份
backup log  [FileGroupTest] to BackupTestDevice

-- 文件組FG_Test_Id_02備份
backup database [FileGroupTest] file='FG_TestUnique_Id_02_data' to BackupTestDevice
-- 給主文件組表插入數據
insert into School values(1,'深圳大學','廣東深圳南山')
-- 主文件組備份
backup database [FileGroupTest] file='FileGroupTest' to BackupTestDevice

  查看備份集如下圖所示:type=F 代表文件組備份類型

六. 還原演示

--步驟1:假設文件FG_TestUnique_Id_01_data已損壞,資料庫處於線上狀態來還原該文件
restore database [FileGroupTest] file='FG_TestUnique_Id_01_data' 
from BackupTestDevice with file=33, norecovery 

  

--此時FileGroupTest庫還能用,但FG_Test_Id_01文件組上的Student表現不能用,此時處於離線狀態
select * from FileGroupTest.dbo.Student

  

--這兩個表在不同文件組上,可以使用
select * from FileGroupTest.dbo.School
select * from FileGroupTest.dbo.Teacher

    
 BACKUP LOG 與 COPY_ONLY 選項將創建僅複製日誌備份,該備份不會截斷事務日誌。 僅複製日誌備份對日誌鏈沒有任何影響,因此其他日誌備份的表現就像僅複製備份不存在一樣。

--步驟2:進行新的日誌備份,以確保捕獲到該文件離線時的點
backup log  [FileGroupTest] to BackupTestDevice with copy_only

  

--步驟3: 線上還原日誌備份
restore log [FileGroupTest] from BackupTestDevice with file=34,norecovery
restore log [FileGroupTest] from BackupTestDevice with file=35,norecovery
restore log [FileGroupTest] from BackupTestDevice with file=38,recovery
--離線的文件組FG_Test_Id_01處於線上狀態,Student表可以使用,資料庫恢復完成
select * from FileGroupTest.dbo.Student

  


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

-Advertisement-
Play Games
更多相關文章
  • comp命令: // 描述: 逐位元組比較兩個文件或文件集的內容。 如果在沒有參數的情況下使用,comp會提示你輸入要比較的文件。 // 語法: comp [<Data1>] [<Data2>] [/d] [/a] [/l] [/c] [/n=<Number>] // 參數: <data1> : 指定 ...
  • 首先聲明哈,VPN是一種很規範的應用方式,在很多企業應用中都必不可少,我這裡可不是教你翻牆的意思。 某日到一個客戶公司去辦事,客戶的公司上網控制非常嚴格,上外網都需要撥號到給定的VPN才允許。但在我的蘋果本上設置正常、撥號正常、各項網路測試也正常,仍然上不了外網。 打開終端,命令行使用netstat ...
  • 命令: help echo @ rem help 命令 語法: 命令 /? #可顯示此命令的幫助信息 help 命令 #可顯示此命令的幫助信息 C:\Users\admin>help dir 顯示目錄中的文件和子目錄列表。 C:\Users\admin>ping /?: 用法: ping [-t] ...
  • 引言 很多人都聽說過 IoT (物聯網)這個詞,越來越多的人在裝修時開始選擇智能家居,很多人也購買智能音箱做智能家居控制,想必未來一定是 AI + 物聯網的時代。 一種技術要發展並走向成熟必須要降低門檻,提高迭代速度。傳統的嵌入式開發太碎片化,很多時候還在使用代碼複製、粘貼、修改的開發方法。如果不提 ...
  • 這期繼續更新有關Linux系統的安裝步驟以及使用,感興趣的可以來看下!!! 安裝PCBSD系統 系統映像文件下載 PCBSD 9.2官方正式版:http://www.veryhuo.com/down/html/21237.html PE裝系統(簡單文字敘述) 1.首先分區時記得預留大概至少20G的空 ...
  • 一、linux CPU大小 cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physical id" 說明:Linux下可以在/proc/cpuinfo中看到每個cpu的詳細信息。但是對於雙核的cpu,在cpuinfo ...
  • 為了信息安全,我們需要給一些東西加上密碼。手機加密碼防偷窺,WiFi加密碼防蹭網,文件加密碼防篡改。雖然這樣做比較安全,但是我們也不得不忍受一遍遍輸入密碼的繁瑣。特別是一些經常需要審閱的PDF文件,每次打開都要輸入一遍密碼,簡單的密碼還好,如果是那種很長很繁瑣的密碼,豈不是要把人煩死!所以今天小編就 ...
  • 之前總玩v8虛擬機,最近看到騰訊雲學生套餐很實惠就租了個linux伺服器搭一個項目,做下這個項目部署全記錄,即為了方便以後查看,同時也分享下自己的經驗,不足之處還請多多指教,廢話不多說,直接開始!!! 註:因為我租的騰訊雲ContOS6.5伺服器,沒有圖形化界面,只有命令視窗,所以全程使用linux ...
一周排行
    -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# ...