巨靈鳥

    電話   4000156919
    當(dāng)前位置:首頁 > 數(shù)據(jù)庫管理_ERP百科

    沉著應(yīng)對突發(fā)的數(shù)據(jù)庫災(zāi)難

    來源:巨靈鳥軟件  作者:進銷存軟件  發(fā)布:2017/4/5  瀏覽次數(shù):3905

    數(shù)據(jù)庫網(wǎng)絡(luò)管理員都有可能遇到數(shù)據(jù)庫崩潰的時候。若故障發(fā)生時,計算機未必有時間把未完成的事務(wù)和內(nèi)存中的數(shù)據(jù)頁寫入磁盤,將可能出現(xiàn)數(shù)據(jù)丟失或者數(shù)據(jù)庫不能正常訪問的故障,輕則使企業(yè)的業(yè)務(wù)系統(tǒng)不能運行,重則可能會給企業(yè)帶來災(zāi)難性的損失。數(shù)據(jù)庫管理員最重要的職責(zé)是保證數(shù)據(jù)庫系統(tǒng)正常運行,為決策層領(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ā)事件。本文由巨靈鳥資深DBA鄧遠劍整理。

      文件組成原理

      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ù)庫的起點,指向數(shù)據(jù)庫中的其他文件。每個數(shù)據(jù)庫都有一個主數(shù)據(jù)文件。主數(shù)據(jù)文件默認(rèn)文件擴展名是.mdf。除主數(shù)據(jù)文件以外的所有其他數(shù)據(jù)文件都是次要數(shù)據(jù)文件。某些數(shù)據(jù)庫可能不含有任何次要數(shù)據(jù)文件,而有些數(shù)據(jù)庫則含有多個次要數(shù)據(jù)文件。次要數(shù)據(jù)文件的推薦文件擴展名是.ndf。

      日志文件

      日志文件在數(shù)據(jù)庫中作用十分重要。在執(zhí)行數(shù)據(jù)操作的過程中,首先將數(shù)據(jù)操作命令寫入到緩存中,并立即寫入日志文件,但不會立即寫入數(shù)據(jù)文件。日志文件通過一個標(biāo)記點來確定某個操作是否已將緩存中的數(shù)據(jù)寫入數(shù)據(jù)文件。當(dāng)SQLServer重啟后,會自動查看日志中最新的標(biāo)記點,并將這個標(biāo)記點后面的交易記錄抹去,因為這些交易記錄并沒有真正地將緩存中的數(shù)據(jù)寫入數(shù)據(jù)文件。這可以防止那些中斷的操作修改數(shù)據(jù)文件。

      事務(wù)日志記錄數(shù)據(jù)庫操作命令,僅記錄執(zhí)行數(shù)據(jù)發(fā)生的動作,而不是記錄數(shù)據(jù)的執(zhí)行結(jié)果。因此備份事務(wù)日志后,將備份點之前已經(jīng)完成的事務(wù)標(biāo)記為“不活動”,而且在執(zhí)行完整備份數(shù)據(jù)庫后,將自動截斷標(biāo)記為“不活動”的日志記錄。合理的安排事務(wù)日志備份將提高數(shù)據(jù)恢復(fù)的能力,可以將數(shù)據(jù)恢復(fù)到發(fā)生故障前的1秒鐘。

      各種文件丟失恢復(fù)方法

      數(shù)據(jù)文件丟失

      數(shù)據(jù)庫系統(tǒng)處于運行狀態(tài)時,數(shù)據(jù)庫文件處于“活動”狀態(tài),數(shù)據(jù)庫文件不能被刪除。如果確實出現(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ù)據(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)故障時,主要體現(xiàn)在數(shù)據(jù)文件和日志分別存儲在不同的物理介質(zhì)中,當(dāng)介質(zhì)損壞時,日志文件隨之丟失。丟失SQL Server日志文件分為兩類:無活動事務(wù)的日志和包含活動事務(wù)的日志。

      SQL Server在工作狀態(tài)下無法刪除日志文件,事務(wù)日志文件在SQL Server服務(wù)未啟動的情況下可以被刪除。啟動SQL服務(wù)后,數(shù)據(jù)庫即被標(biāo)志為“置疑”狀態(tài),這種狀態(tài)下丟失的日志文件為無活動事務(wù)日志文件。無活動事務(wù)的日志丟失時,首先在企業(yè)管理器中,使用分離數(shù)據(jù)庫功能,分離“置疑”的數(shù)據(jù)庫。然后,使用附加數(shù)據(jù)庫功能附加數(shù)據(jù)庫,在附加的過程中創(chuàng)建新的日志文件即可。

      當(dāng)包含活動事務(wù)日志的文件丟失時,使用無活動事務(wù)的日志丟失處理方法,將顯示“數(shù)據(jù)庫和日志文件不符合,不能附加數(shù)據(jù)庫”錯誤信息。數(shù)據(jù)庫管理員首先要停止SQL Server服務(wù),將數(shù)據(jù)文件備份到安全區(qū)域。然后啟動SQL Server服務(wù),創(chuàng)建新的同名數(shù)據(jù)庫,再停止SQL Server服務(wù),用備份的數(shù)據(jù)文件覆蓋新創(chuàng)建的數(shù)據(jù)文件。以單用戶模式啟動SQL Server服務(wù)后,將數(shù)據(jù)庫模式設(shè)置為緊急模式,使用“DBCC CHECKDB”命令檢驗數(shù)據(jù)庫的狀態(tài),完成后將數(shù)據(jù)庫設(shè)置為正常模式,即可完成數(shù)據(jù)庫的修復(fù)。

      數(shù)據(jù)表文件丟失

      在業(yè)務(wù)系統(tǒng)中提供的數(shù)據(jù)刪除功能和數(shù)據(jù)庫管理員在維護數(shù)據(jù)庫過程中,使用Delete命令刪除數(shù)據(jù)表中的數(shù)據(jù),產(chǎn)生的結(jié)果完全相同。在工作中經(jīng)常會遇到誤刪數(shù)據(jù)的情況。管理員發(fā)出刪除數(shù)據(jù)命令后,首先將刪除命令記錄在日志文件中,然后在數(shù)據(jù)庫中執(zhí)行刪除操作。由于數(shù)據(jù)行記錄在數(shù)據(jù)頁中,已經(jīng)刪除的數(shù)據(jù)頁并沒有真正刪除“Slot”中的數(shù)據(jù),只是將數(shù)據(jù)頁標(biāo)記為已經(jīng)使用,如果有新的數(shù)據(jù)寫入,不會對此類數(shù)據(jù)頁寫入數(shù)據(jù)。

      在SQL Server 數(shù)據(jù)庫中,沒有提供恢復(fù)數(shù)據(jù)行命令,標(biāo)準(zhǔn)的恢復(fù)刪除數(shù)據(jù)的方法是使用基于備份的事務(wù)日志時間點功能。管理員在使用日志恢復(fù)時,經(jīng)過多次定位時間點,可以還原刪除的數(shù)據(jù)。

      Log Explorer for SQL Server能夠幫助管理員管理、監(jiān)控數(shù)據(jù)庫日志,如圖1所示。Log Explorer支持聯(lián)機事務(wù)日志文件和離線事務(wù)日志文件。當(dāng)管理員發(fā)現(xiàn)數(shù)據(jù)誤刪后,建議立即備份數(shù)據(jù)庫,停止SQL Sever服務(wù)。啟動該工具,使用離線事務(wù)日志文件功能,加載誤刪的日志文件。選擇目標(biāo)數(shù)據(jù)表以及執(zhí)行刪除操作的數(shù)據(jù)庫用戶,設(shè)置過濾條件,在瀏覽日志窗口中顯示相關(guān)的日志,使用“Undo Transactions”功能生成InsertSQL代碼并保存到文本文件中,確認(rèn)腳本正確后,使用“Run SQL Script” 功能即可完成數(shù)據(jù)恢復(fù)。用戶錯誤執(zhí)行“Update”腳本后,使用同樣的方法可以生成“Update”腳本,將數(shù)據(jù)恢復(fù)到修改前的狀態(tài)。

      數(shù)據(jù)庫恢復(fù)

      數(shù)據(jù)庫恢復(fù)是數(shù)據(jù)庫管理員必須掌握的基本技能。SQL Server數(shù)據(jù)庫提供了3種數(shù)據(jù)恢復(fù)模型,分別為:簡單模型、完全模型、大容量日志記錄模型。

      如果數(shù)據(jù)庫可用,可按照如下流程恢復(fù)數(shù)據(jù)庫:

      1. 備份尾日志。尾日志記錄是自上一次數(shù)據(jù)庫完整備份、差異備份或者日志備份后生成的日志。

      2. 還原數(shù)據(jù)庫備份。該恢復(fù)過程可以在圖形模式和查詢分析器中完成,如圖2所示。當(dāng)數(shù)據(jù)庫不能訪問時,也可恢復(fù)數(shù)據(jù)庫或者日志,數(shù)據(jù)庫處于恢復(fù)過程中顯示的狀態(tài)為“正在裝載”。

      3.還原備份的事務(wù)日志備份,恢復(fù)參數(shù)為“No Recovery”。

      4.用同樣的方法還原尾日志。在還原尾日志的過程中恢復(fù)參數(shù)設(shè)置為“With Recovery”,恢復(fù)過程中自動回滾未提交的事務(wù)日志,根據(jù)需要選擇時間點,數(shù)據(jù)庫恢復(fù)即可完成。

      企業(yè)備份數(shù)據(jù)的方法各不相同,數(shù)據(jù)庫管理員應(yīng)該了解數(shù)據(jù)庫備份策略,要經(jīng)常對數(shù)據(jù)庫恢復(fù)和恢復(fù)過程進行測試,以便應(yīng)對突發(fā)的數(shù)據(jù)庫災(zāi)難。


    圖1 Log Explorer可幫助管理員管理、監(jiān)控數(shù)據(jù)庫日志


    圖2 還原數(shù)據(jù)庫備份可在圖形模式和查詢分析器中完成

    來源:巨靈鳥 歡迎分享本文

    • 點擊這里給我發(fā)消息
    • 點擊這里給我發(fā)消息
    主站蜘蛛池模板: 四虎精品亚洲一区二区三区| 中文字幕在线无码一区| 国产裸体歌舞一区二区| 亚洲人成网站18禁止一区| 麻豆AV一区二区三区| 国产乱人伦精品一区二区在线观看| 午夜福利无码一区二区| 久久国产午夜精品一区二区三区| 精品人妻无码一区二区色欲产成人| 麻豆视频一区二区三区| aⅴ一区二区三区无卡无码| 国产成人精品无码一区二区三区| 伊人激情AV一区二区三区| 国产精品一区二区资源| 亚洲熟女乱色一区二区三区 | 夜精品a一区二区三区| 久久综合九九亚洲一区| 美女视频黄a视频全免费网站一区 美女免费视频一区二区 | 中文字幕日韩人妻不卡一区| 亚洲国产系列一区二区三区 | 欧亚精品一区三区免费| 国产精品免费视频一区| 国产伦一区二区三区免费| 午夜在线视频一区二区三区| 亚洲国产成人久久一区二区三区 | 免费日本一区二区| 日韩毛片基地一区二区三区| 亚洲AV无码一区二三区| 亚洲AV成人一区二区三区观看| 国产香蕉一区二区三区在线视频| 久久婷婷色一区二区三区| 玩弄放荡人妻一区二区三区| 一区二区三区四区精品视频| 国产一区二区三区不卡在线看| 欧洲精品码一区二区三区免费看| 亚洲国产精品综合一区在线| 亚洲国产精品一区二区第一页免 | 国产免费私拍一区二区三区| 成人免费一区二区三区| 麻豆一区二区99久久久久| 国产精品免费一区二区三区四区|