曾維浩 劉雪花
【摘 要】網絡系統最重要的是確保數據安全,然而,日常的誤操作、病毒、網絡攻擊都在時刻威脅著我們的數據安全。本文以SQL2008為例講述當數據遭到破壞時如何利用日志文件恢復數據,從而減少損失、消除破壞帶來的不利影響
【關鍵詞】SQL;LOG;數據恢復
Data recovery technology based on Log
ZENG We-hao1 LIU Xue-hua2
(1.Gansu Provincial Gansu Mining Social Insurance Management Center, Jiayuguan 735100, Gansu, China;
2.No.440 Limited Company, Lanzhou 732850, China)
【Abstract】In this paper, SQL 2008 was as an example to analysis how to recovery data when data had been destroy or deleted.Thus,we can cut down the adverse effect in this way.
【Key words】SQL;LOG;Data Recovery
0 引言
系統管理員及操作人員面對復雜的操作環境,往往會在不經意間誤刪除數據;同時,病毒、網絡攻擊等都時刻威脅著我們的數據安全。面對各種潛在的破壞因素,當我們的數據被破壞時,如何對其進行恢復以減少損失是每個系統管理員都需要面對的問題。在下面的論述中,將以SQL2008為例講解在數據及數據表遭到破壞的情況下如何利用日志文件進行恢復。
1 日志文件要求
為了成功實現數據恢復,數據庫日志文件必須滿足完整性要求。由于基于數據庫日志文件進行數據恢復是以時間為序重現歷史操作,以達到數據恢復的目的,所以,任何經過修改、截斷的數據庫日志都是不滿足完整性要求的,都會導致數據的恢復失敗。因此,在進行以下操作前,請務必確保數據庫日志文件的完整性,并對二次備份的日志文件進行相關操作,避免破壞原始日志文件。
2 確認數據恢復時間點
由于數據庫日志記錄了所有的數據操作,因此在進行數據恢復之前,我們必須進行數據還原起始時間點的確認,以避免在數據恢復工作過程中包含數據被破壞的時間段的記錄,從而導致再次破壞數據,導致恢復失敗。
我們采用Log Explorer工具,并結合自身數據庫被破壞的情況分析日志,從而確定還原操作的起始時間點(圖1)。
3 數據恢復
在進行數據恢復操作前,必須保證客戶端無任何進程與服務器進行交互,在條件允許的情況下,建議斷開該服務器的網絡連接,然后進行以下操作。
3.1 備份數據庫和日志
由于本文中的所有操作均是在原始數據庫和原始日志文件上進行,因此,在進行數據恢復操作之前,需對數據庫及日志文件進行完整備份,以確保恢復失敗時可恢復到當前狀態。
圖1 Log Explorer分析
3.2 破壞性事務的確定
啟動Log Explorer,進入圖1所示界面,確定要進行恢復的事務并記錄起始時間點;不在該時間范圍內的事務均會破壞恢復操作,應予以舍棄。本例中假設起始時間點記錄為A,終止時間點記錄為B。
3.3 數據誤刪除的恢復
在圖1所示界面中進入“View Log”界面,在A、B兩點之間選擇所有需要執行恢復的數據項,然后在所選數據上點擊右鍵,選擇“Undo Transaction”;此時會彈出“文件保存對話框”,選擇保存路徑并輸入后綴為.SQL的文件名(本例假設保存到D:\UNDO.SQL文件中),然后“保存”,“Log Explorer”會自動生成執行“Undo Transaction”操作的所有命令并保存到對應的文件中。當“Undo Transaction”命令執行完畢,打開查詢分析器執行生成的UNDO.SQL文件即可開始數據恢復過程。
3.4 數據表誤刪除的恢復
在數據表被刪除時,在圖1所示界面打開“查看DDL命令”并“刷新”,此時系統自動列出所有被刪除的表單及相關命令(圖2)。
選中我們需要逆向進行的操作,然后執行“挽救”命令,系統將對刪除的表及表中的數據進行恢復操作。當操作執行完畢,系統會彈出對話框提示數據恢復情況,保存該過程產生的SQL命令以備查詢驗證。
3.5 數據恢復情況驗證
在圖1所示界面中進入“運行SQL命令”界面,執行生成的腳本可驗證數據恢復情況。若顯示“失敗為0”,則本次的數據恢復成功,此時可進入SQL數據庫或相關系統進行查詢驗證;若恢復失敗,請還原數據庫和日志重復上述恢復操作。
4 結論
本文以“SQL 2008”為例,詳細闡述了數據或數據庫表被刪除的情況下,如何利用數據庫日志文件進行數據恢復的方法,為廣大的數據維護人員提供了切實可行的數據恢復方案,在實際應用中具有一定的指導和參考價值。endprint