沉著應(yīng)對突發(fā)的數(shù)據(jù)庫災(zāi)難
導(dǎo)讀:數(shù)據(jù)庫中的數(shù)據(jù)信息具有很高的價(jià)值,不容被破壞,當(dāng)然,數(shù)據(jù)庫網(wǎng)絡(luò)管理員都有可能遇到數(shù)據(jù)庫崩潰的時(shí)候。若故障發(fā)生時(shí),計(jì)算機(jī)未必有時(shí)間把未完成的事務(wù)和內(nèi)存中的數(shù)據(jù)頁寫入磁盤,將可能出現(xiàn)數(shù)據(jù)丟失或者數(shù)據(jù)庫不能正常訪問的故障,輕則使企業(yè)的業(yè)務(wù)系統(tǒng)不能運(yùn)行,重則可能會給企業(yè)帶來災(zāi)難性的損失。數(shù)據(jù)庫管理員最重要的職責(zé)是保證數(shù)據(jù)庫系統(tǒng)正常運(yùn)行,為決策層領(lǐng)導(dǎo)提供數(shù)據(jù)支持,這是數(shù)據(jù)庫管理員的基本目標(biāo)。數(shù)據(jù)庫管理員需要了解數(shù)據(jù)庫文件結(jié)構(gòu)原理,不同情況下數(shù)據(jù)丟失的恢復(fù)方法,以沉著應(yīng)對各種數(shù)據(jù)丟失的突發(fā)事件。
文件組成原理
SQL Server數(shù)據(jù)庫系統(tǒng)主要由兩大部分組成,分別是數(shù)據(jù)文件以及日志文件。數(shù)據(jù)文件存儲數(shù)據(jù),日志文件存儲操作數(shù)據(jù)的行為。
數(shù)據(jù)文件
SQL Server數(shù)據(jù)庫包含兩種類型的數(shù)據(jù)文件:主數(shù)據(jù)文件和次要數(shù)據(jù)文件。主數(shù)據(jù)文件是數(shù)據(jù)庫的起點(diǎn),指向數(shù)據(jù)庫中的其他文件。每個(gè)數(shù)據(jù)庫都有一個(gè)主數(shù)據(jù)文件。主數(shù)據(jù)文件默認(rèn)文件擴(kuò)展名是.mdf。除主數(shù)據(jù)文件以外的所有其他數(shù)據(jù)文件都是次要數(shù)據(jù)文件。某些數(shù)據(jù)庫可能不含有任何次要數(shù)據(jù)文件,而有些數(shù)據(jù)庫則含有多個(gè)次要數(shù)據(jù)文件。次要數(shù)據(jù)文件的推薦文件擴(kuò)展名是.ndf。
日志文件
日志文件在數(shù)據(jù)庫中作用十分重要。在執(zhí)行數(shù)據(jù)操作的過程中,首先將數(shù)據(jù)操作命令寫入到緩存中,并立即寫入日志文件,但不會立即寫入數(shù)據(jù)文件。日志文件通過一個(gè)標(biāo)記點(diǎn)來確定某個(gè)操作是否已將緩存中的數(shù)據(jù)寫入數(shù)據(jù)文件。當(dāng)SQLServer重啟后,會自動查看日志中最新的標(biāo)記點(diǎn),并將這個(gè)標(biāo)記點(diǎn)后面的交易記錄抹去,因?yàn)檫@些交易記錄并沒有真正地將緩存中的數(shù)據(jù)寫入數(shù)據(jù)文件。這可以防止那些中斷的操作修改數(shù)據(jù)文件。
事務(wù)日志記錄數(shù)據(jù)庫操作命令,僅記錄執(zhí)行數(shù)據(jù)發(fā)生的動作,而不是記錄數(shù)據(jù)的執(zhí)行結(jié)果。因此備份事務(wù)日志后,將備份點(diǎn)之前已經(jīng)完成的事務(wù)標(biāo)記為“不活動”,而且在執(zhí)行完整備份數(shù)據(jù)庫后,將自動截?cái)鄻?biāo)記為“不活動”的日志記錄。合理的安排事務(wù)日志備份將提高數(shù)據(jù)恢復(fù)的能力,可以將數(shù)據(jù)恢復(fù)到發(fā)生故障前的1秒鐘。
各種文件丟失恢復(fù)方法
數(shù)據(jù)文件丟失
數(shù)據(jù)庫系統(tǒng)處于運(yùn)行狀態(tài)時(shí),數(shù)據(jù)庫文件處于“活動”狀態(tài),數(shù)據(jù)庫文件不能被刪除。如果確實(shí)出現(xiàn)數(shù)據(jù)文件被刪除的情況,可能由于以下原因:MS SQL Server數(shù)據(jù)庫服務(wù)停止;或者在企業(yè)管理器中,數(shù)據(jù)庫管理員使用“分離數(shù)據(jù)庫”功能,分離數(shù)據(jù)庫后將數(shù)據(jù)庫文件刪除。
當(dāng)出現(xiàn)數(shù)據(jù)庫文件被刪除時(shí),首先需要了解數(shù)據(jù)庫文件如何被刪除,再利用恢復(fù)軟件恢復(fù)被刪除的文件。如果是在服務(wù)被停止的狀態(tài)下刪除,數(shù)據(jù)庫文件恢復(fù)后,數(shù)據(jù)庫文件即可正常加載。如果是數(shù)據(jù)庫分離后的刪除,數(shù)據(jù)庫文件恢復(fù)后,在企業(yè)管理器中,使用附加數(shù)據(jù)庫功能即可。
日志文件丟失
日志文件丟失,經(jīng)常出現(xiàn)在硬件出現(xiàn)故障時(shí),主要體現(xiàn)在數(shù)據(jù)文件和日志分別存儲在不同的物理介質(zhì)中,當(dāng)介質(zhì)損壞時(shí),日志文件隨之丟失。丟失SQL Server日志文件分為兩類:無活動事務(wù)的日志和包含活動事務(wù)的日志。
SQL Server在工作狀態(tài)下無法刪除日志文件,事務(wù)日志文件在SQL Server服務(wù)未啟動的情況下可以被刪除。啟動SQL服務(wù)后,數(shù)據(jù)庫即被標(biāo)志為“置疑”狀態(tài),這種狀態(tài)下丟失的日志文件為無活動事務(wù)日志文件。無活動事務(wù)的日志丟失時(shí),首先在企業(yè)管理器中,使用分離數(shù)據(jù)庫功能,分離“置疑”的數(shù)據(jù)庫。然后,使用附加數(shù)據(jù)庫功能附加數(shù)據(jù)庫,在附加的過程中創(chuàng)建新的日志文件即可。
掌握好這些方法,在數(shù)據(jù)庫出現(xiàn)故障時(shí)或許能幫您解決難題,使數(shù)據(jù)庫輕松度過難關(guān),沉著應(yīng)對突發(fā)的數(shù)據(jù)庫災(zāi)難,不要慌張,要首先確保數(shù)據(jù)庫中數(shù)據(jù)信息的安全。
【編輯推薦】