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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...