「效率源實戰」如何通過日誌備份恢復SQL Server資料庫刪除數據?

2021-01-08 效率源科技

了解SQL ServerSQL Server 是Microsoft 公司推出的關係型資料庫管理系統,具有使用方便可伸縮性好與相關軟體集成程度高等優點,是一個可擴展的、高性能的、為分布式客戶機/伺服器計算所設計的資料庫管理系統,提供了基於事務的企業級信息管理系統方案。

在許多案件取證分析中,取證人員常會遇到SQL Server資料庫數據刪除的情況,本文將和大家分享一種通過日誌備份恢復SQL Server資料庫刪除數據的恢復方法,希望為您提供一定參考價值!

針對SQL Server資料庫數據恢復我們需要了解資料庫相關的操作模式,如:資料庫的備份方式、資料庫文件的作用等,下面將具體介紹資料庫的備份及相關知識。

SQL Server資料庫的文件介紹

SQL Server的每個資料庫一般是以兩個文件存放的,一個擴展名為mdf,是數據文件;另一個擴展名為ldf,為日誌文件。因此只要定期複製這兩個文件,就可以達到備份的效果。

主要數據文件(擴展名.mdf是 primary data file 的縮寫)主要數據文件包含資料庫的啟動信息,並指向資料庫中的其他文件。用戶數據和對象可存儲在此文件中,也可以存儲在次要數據文件中。每個資料庫有一個主要數據文件。主要數據文件的建議文件擴展名是 .mdf。次要數據文件 (擴展名.ndf是Secondary data files的縮寫)次要數據文件是可選的,由用戶定義並存儲用戶數據。通過將每個文件放在不同的磁碟驅動器上,次要文件可用於將數據分散到多個磁碟上。另外,如果資料庫超過了單個 Windows 文件的最大大小,可以使用次要數據文件,這樣資料庫就能繼續增長。

事務日誌 (擴展名.ldf是Log data files的縮寫)日誌文件保存用於恢復資料庫的日誌信息。每個資料庫必須至少有一個日誌文件,存放對該資料庫的更新操作(增、刪、改)。事務日誌的建議文件擴展名是 .ldf。

Ps:本文主要介紹通過「事務日誌」還原SQL Server資料庫刪除數據的相關內容。

SQL Server資料庫的備份介紹

SQL Server資料庫備份有兩種方式,一種是使用資料庫管理軟體備份功能對資料庫備份,另外一種就是直接拷貝資料庫文件mdf和日誌文件ldf的方式。

使用資料庫管理軟體備份功能備份完整備份差異備份事務日誌備份文件和文件組備份

備份文件介紹:SQL Server 資料庫備份文件擴展名通常是.bak,也可自定義擴展名。

直接拷貝資料庫文件和日誌文件此方式只需要將資料庫從運行的伺服器種斷開或者把伺服器停掉,然後將資料庫脫機,就可以拷貝資料庫和日誌文件進行備份了。

備份文件介紹:此方式為直接拷貝文件備份,所以備份文件一般分兩種,一種是擴展名為.mdf的資料庫文件,另一個是擴展名為.ldf的日誌文件。

SQL Server恢復模式介紹

Microsoft SQL Server提供了三種恢復模式,是資料庫的屬性。它們決定了哪些數據能被備份下來,是備份和還原策略的必要部分。

簡單恢復模式主要使用於對資料庫數據安全要求不太高的資料庫,不備份日誌,只能還原到故障前最新的備份。所以使用此模式儘量將備份的時間間隔縮短,以避免故障丟失過多的數據。完整恢復模式 可在最大程度避免出現故障時丟失數據,它包括資料庫備份和日誌備份,可完整的記錄所有日誌直到日誌被備份時才會截斷日誌。如果不單獨備份日誌的情況下,日誌的體積將不斷增加,所以此模式需要資料庫維護人員手動維護或者在維護模式設置自動備份,此模式可恢復到任意時間點。

大容量日誌恢復模式需要備份日誌,是完整模式的附加模式。大容量日誌恢復模式下,大多數的大容量操作(如如導入數據、批量更新、查詢插入數據等操作時)會以最小方式記錄下來,故部分事務不會被記錄下來,此模式可恢復到任何備份的結尾,但不支持時間點恢復。

恢復模式和備份模式關係

關於資料庫的日誌備份取證

事務日誌取證介紹

由於日誌文件能夠存放對該資料庫的操作(增、刪、改等),所以我們可以在有較早資料庫完整備份的情況下(刪除、破壞等操作之前),根據日誌文件記錄此期間的所有操作來回滾操作來達到恢復數據的目的。

事務日誌還原的前提

事務日誌取證的前提,是恢復模式設置為完整恢復模式。完整恢復模式可最大程度避免出現故障時丟失數據,它包括資料庫備份和日誌備份,可完整的記錄所有日誌直到日誌被備份時才會截斷日誌。

資料庫刪除數據恢復思路

思考:數據刪除的情況下,拿到主機鏡像,怎樣找回數據?

分析:1、考慮從資料庫源文件及日誌文件中查找刪除記錄;2、資料庫文件損壞考慮第三方軟體去修復掃描並還原數據;3、資料庫正常工作情況下查詢日誌操作記錄並使用日誌恢復取證。

資料庫刪除數據具體取證案例及操作步驟

案例介紹在SQL Server資料庫中有名為test的資料庫,其中有兩張數據表,一張表中沒有數據,一張表中數據不完整,疑似有被刪除的情況。數據表內容如下↓↓↓

目的查詢是否有做過刪除數據操作,如果有,嘗試恢復出刪除的數據內容。

前提1、資料庫設置了完整恢復模式2、有一個刪除或者數據被破壞的完整備份Ps:前提1、2滿足或者前提1滿足的情況下都能嘗試恢復數據,前提1不滿足則無法恢復。思路分析1、查詢原有日誌文件是否有刪除數據記錄;2、查詢是否完整恢復模式,是否有自動備份文件;3、能否通過日誌文件或者備份文件找到刪除數據內容。取證步驟1、開啟屏幕錄像,將源數據盤進行完整鏡像完成數據固定; 2、加載鏡像掃描提取源資料庫及日誌文件;3、使用工具掃描日誌文件中的操作記錄恢復取證;4、步驟3無數據情況下,仿真運行鏡像查找備份歷史記錄找到備份文件;5、通過備份還原進行具體時間點的恢復取證。具體案例操作步驟接下來,我們將介紹兩種日誌恢復取證的方法。

方法一通過SysTools SQL Log Analyzer查找進行恢復數據

準備:SysTools SQL Log Analyzer,test.mdf,test_log.ldf(用於讀取和分析SQL Server日誌文件(.ldf)事務的SQL LDF查看器工具。將資料庫的mdf和ldf文件拷貝出來,用此工具加載查看刪除數據。)

步驟如下↓↓↓

01.加載ldf文件

02.掃描日誌文件完成

03.發現刪除的數據

方法1簡單實用,但是,在遇到ldf文件被刪除或者ldf被破壞等情況時,方法1就顯得不太可行了。

掃描結果如下,共找到0條操作日誌。

至此,我們需要第二種方式進行日誌恢復取證。

方法二通過恢復日誌(指定時間點恢復)來恢復數據

準備SQL Server Management Studio,完整備份文件,事務日誌備份文件,大致數據刪除或者數據破壞時間點。

01.查詢是否有自動備份文件(已仿真情況下)1)打開SQL Server Management Studio(資料庫管理工具),找到並點擊左上方的【新建查詢】,在彈出的窗口中輸入「查詢歷史備份記錄」命令,查看是否有備份記錄。查詢結果顯示,存在完整備份和事務日誌備份,如下圖。

查詢歷史備份記錄命令SELECTbs.database_name, bs.name AS backupset_name, bs.backup_size, bmf.physical_device_name, CASE bs.type WHEN 'D' THEN '完整備份' WHEN 'I' THEN '差異備份' WHEN 'L' THEN '日誌備份' END AS backup_type, bs.backup_finish_dateFROM msdb.dbo.backupmediafamily bmfINNER JOIN msdb.dbo.backupset bsON bmf.media_set_id=bs.media_set_idWHERE bs.backup_start_date>DATEADD(DAY,-1,GETDATE())ORDER BY bs.backup_finish_date

2)根據結果中路徑指向,找到備份文件:backup.bak

02.日誌備份恢復取證1)分離原有資料庫,拷貝備份,然後進行數據恢復取證。

2)新建test,選擇資料庫右鍵還原,選擇具體的時間點,點擊還原。至此,刪除數據被恢復,恢復結束。

還原完成後的數據如下。至此,日誌還原取證完成。

注意事項1、文中所有代碼都通過SQL Server Management Studio中「新建查詢」後「執行」完成操作;2、恢復數據的前提一定恢復模式設置為完整模式;3、日誌恢復取證的前提是有一個刪除數據前的完整備份文件和日誌備份文件;4、SQL Server客戶端備份恢復向下兼容,儘量用同版本程序還原。

「本文主要介紹通過日誌備份還原SQL Server資料庫刪除數據的相關案例實操,如對文中的操作、描述有任何疑問,或者有相關資料庫案件協助支持也可以直接在微信公眾號後臺給我們留言。

相關焦點

  • 電子數據取證之MySQL資料庫刪除數據的恢復指南
    正是由於binlog日誌以上的特性,在實際的案件取證中也可以通過binlog日誌來恢復刪除數據。要通過binlog日誌恢復mysql資料庫刪除數據的前提:binlog日誌確定是開啟的。:下面我們通過一個實例操作來完整查看「如何通過binlog日誌恢復MySQL資料庫刪除數據。
  • 使用binlog日誌恢復MySQL資料庫刪除數據的方法
    正是由於binlog日誌以上的特性,在實際的案件取證中也可以通過binlog日誌來恢復刪除數據。要通過binlog日誌恢復mysql資料庫刪除數據的前提:binlog日誌確定是開啟的。:下面我們通過一個實例操作來完整查看「如何通過binlog日誌恢復MySQL資料庫刪除數據。
  • 實戰 | MySQL數據備份、恢復
    數據恢復方式1.3.1. 資料庫或者數據表誤刪除情況這種情況幾乎不可見,生產環境中一般用戶是沒有drop權限的,不會對數據表和資料庫產生破壞。如果真實發生了,可以參考以下方式恢復:將 binlog 和上一次的備份結果拷貝到測試機器,將資料庫恢復到drop語句之前的一次事務狀態,並通過mysqldump將誤刪除的資料庫或者數據表導出,並導入生產環境的主庫。1.3.2.
  • MySQL數據的備份和恢復
    數據備份的重要性2. 資料庫備份的分類3. 常見的備份方法4.恢復資料庫(1) 使用source恢復資料庫的步驟(2) 使用mysql命令恢復數據(3) 恢復表的操作1.資料庫備份的分類物理備份:對資料庫作業系統的物理文件(如數據文件、日誌文件等)的備份物理備份方法冷備份(脫機備份):是在關閉資料庫的時候進行的熱備份(聯機備份):資料庫處於運行狀態,依賴於資料庫的日誌文件溫備份:資料庫鎖定表格(不可寫入但可讀)的狀態下進行備份操作邏輯備份:對資料庫邏輯組件
  • SQL Server資料庫備份與恢復方法—最佳實踐
    Microsoft SQL Server 主要提供了如下備份類型:完整備份、差異備份和事務日誌備份,也提供了三種恢復模型:簡單恢復模型、大容量日誌的恢復模型和完整恢復模型。需求描述:目前用戶就單臺伺服器,安裝的是SQL Server資料庫,備份的場景是SQL Server資料庫需要備份,目前僅通過資料庫本身的策略設置了原機定時備份,知道會有一定的數據丟失的風險,所以想找一個能夠實現自動化實時備份的工具,做一個實時備份,增加企業數據的安全保護!
  • 「SQL」基礎實驗——數據的管理
    一、實驗目的1、掌握使用SQL Server Management Studio對資料庫的創建、修改、刪除、備份和恢復2、掌握使用T-SQL語句實現對資料庫的對資料庫的創建、修改、刪除、備份和恢復:A、使用圖形用戶界面時:通過:展開「伺服器對象」->右擊「備份設備」->「新建備份設備」實現對;B、使用SQL語句時:通過EXEC sp_addumpdevice語句實現,其中須指明設備類型、設備邏輯以及物理名稱。
  • 資料庫沒有備份,沒有使用Binlog的情況下,如何恢復數據?
    Binlog 來完成的,Binlog 記錄了資料庫更新的事件,從庫 I/O 線程會向主庫發送 Binlog 更新的請求,同時主庫二進位轉儲線程會發送 Binlog 給從庫作為中繼日誌進行保存,然後從庫會通過中繼日誌重放,完成資料庫的同步更新,看來是一套完美的的災備方案!
  • mysql備份與恢復:完全,增量備份,基於位置點,時間點恢復
    理論介紹數據備份的重要性資料庫備份的分類常見的備份方法MySQL完全備份資料庫完全備份分類資料庫備份與恢復MySQL資料庫完全備份與恢復mysqldump備份與恢復MySQL資料庫增量備份恢復基於位置的恢復基於時間恢復
  • 技術實戰 Oracle 資料庫恢復取證全過程!
    Orcale資料庫取證實操案件詳情:案件:網絡詐騙案資料庫類型:Oracle資料庫案件需求:對涉案Oracle資料庫數據進行數據恢復和取證取證工具:DBF6100資料庫取證系統1、在DBF6100資料庫軟體首頁選擇「文件模式」;
  • MySQL資料庫的mysqldump完全備份、binlog的增量備份與還原
    MySQL資料庫的mysqldump完全備份、binlog的增量備份與還原一、 備份的目的:做災難性恢復:對損壞的書籍進行恢復和還原需求改變:因需求改變而需要把數據還原到改變以前山東掌趣網絡科技物理文件備份:對資料庫物理文件(如數據文件、日誌文件等)的備份;恢復時間較短支持熱備份與冷備份五、 按照備份資料庫的內容分類:
  • 「MySQL」記一次線上重大事故:二狗子竟然把線上資料庫刪了
    事件背景MySQL資料庫每日零點自動全備某天上午9點,二狗子不小心drop了一個資料庫我們需要通過全備的數據文件,以及增量的binlog文件進行數據恢復主要思想與原理利用全備的sql文件中記錄的CHANGE MASTER語句,binlog文件及其位置點信息,找出binlog文件增量的部分用mysqlbinlog命令將上述的binlog文件導出為sql文件,並剔除其中的drop語句通過全備文件和增量binlog文件的導出sql文件,就可以恢復到完整的數據
  • 備份恢復SQLserver資料庫BAT腳本
    應用:可將BAT腳本添加至Windows的定時計劃中,定時備份資料庫數據聲明:腳本參考自CSDN社區,這裡是交流學習分享操作資料庫BAT腳本(備份、恢復資料庫的BAT腳本相同)BAT批處理代碼語法如下:
  • 分布式資料庫的數據備份/恢復,這些你一定要了解
    一、概述在數據作為生產資料的今天,數據早已成為各行各業的生命源泉,數據安全的重要性不言而喻。數據備份是數據安全的基礎,完整的備份和有效的恢復手段是應對一切突發狀況的重要保障。同時數據備份也對數據的重新利用,發揮數據更大價值,有著重大的作用。而數據備份的重點是對資料庫的備份。
  • 「刪庫跑路」使用Binlog日誌恢復誤刪的MySQL數據
    模擬一次誤刪數據的操作,並且使用binlog日誌恢復誤刪的數據。寫這篇文章的初衷,是有一次我真的險些把測試資料庫的一張表給刪除了,當時嚇出一身冷汗。看了上面binlog的定義,大家也應該能大致推理出binlog的三大用途:恢復數據:今天要說的重點資料庫複製:主從資料庫是通過將binlog傳給從庫,從庫有兩個線程,一個I/O線程,一個SQL線程,I/O線程讀取主庫傳過來的binlog內容並寫入到relay log,SQL線程從relay log裡面讀取內容
  • 如何使用 SQL Server FILESTREAM 存儲非結構化數據?
    在SQL Server的早期版本中,非結構化數據的存儲在維持結構化和非結構化數據間一致性、管理備份/還原過程、性能問題、可擴展性等方面提出了許多挑戰。在SQL Server 2008之前的MSSQL早期版本中,存在各種用於存儲非結構化數據的機制。這些信息通常被以文件的形式存儲在共享文件夾中,其訪問權限被授予了某些用戶。
  • mssql自動備份及自動清除日誌文件設伺服器置
    ,如果長時間不清理,文件會變得特別大,因此需要定期清空,但是日誌文件是恢復資料庫的重要依據,不用日誌文件也是不明智的。  1、打開企業管理器,在控制臺根目錄中依次點開Microsoft SQL Server--SQL Server組--雙擊打開你的伺服器  2、然後點上面菜單中的工具--選擇資料庫維護計劃器  3、下一步選擇要進行自動備份的數據--下一步更新數據優化信息,這裡一般不用做選擇--下一步檢查數據完整性,也一般不選擇  4、下一步指定資料庫維護計劃,
  • 【產品升級】效率源DBF6300新增日誌解析功能,資料庫取證分析更便捷
    DBF6300資料庫取證分析系統  DBF6300資料庫取證分析系統(簡稱DBF6300)是業內首款資料庫取證分析產品,可以對大部分類型的資料庫進行恢復取證分析工作。對資料庫被刪除、資料庫損壞、文件系統損壞、無資料庫密碼等情況,用戶均可在DBF6300中對恢復的數據進行排序、篩選、統計、關鍵字查詢、可視化查詢、SQL語句查詢等操作,快速進行資料庫的恢復提取、查詢、統計和分析,無需使用多個軟體即可完成案件中的資料庫取證分析工作,使用更便捷。
  • 從關係資料庫SQL SERVER 中讀取數據寫入到PI Server中
    因為老總喜歡,他想把我們自行開發的系統中的數據都放在pi server中,方便他統一查看,於是乎,我就硬著頭皮來了解學習PI-Interface-RDBMS,因為公司內部的接口機都是供應商安裝的,我並沒有實際操作過,所以第一次從創建實例到讀取到數據,也是花費了好久的時間才搞定。
  • MySQL 數據恢復
    增量備份可以將資料庫的變動全部保存下來, 但也不可能一直保存, 否則備份文件的體積超級大.而對資料庫數據的恢復操作, 思路也很簡單, 使用全量備份和增量備份相配合, 以某個時間點的全量備份為基礎, 通過增量備份使資料庫數據恢復到具體的某個時間節點.
  • 教你一招MySQL 數據恢復
    如果沒有備份文件,那麼刪掉庫表後就真的刪掉了,lsof 中還有記錄的話,有可能恢復一部分文件。但若剛好資料庫沒有打開這個表文件,那就只能跑路了。如果沒有開啟 binlog,那麼恢復數據後,從備份時間點開始的數據都沒了。如果 binlog 格式不為 row,那麼在誤操作數據後就沒有辦法做閃回操作,只能老老實實地走備份恢復流程。