qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          教你維護SQL Server數據庫日志。

          導讀】教你維護SQL Server數據庫日志

            交易日志(即oracle中的事務)(Transaction logs)是數據庫結構中非常重要但又經常被忽略的部分。由于它并不像數據庫中的schema那樣活躍,因此很少有人關注交易日志。

            交易日志是針對數據庫改變所做的記錄,它可以記錄針對數據庫的任何操作,并將記錄結果保存在獨立的文件中。對于任何每一個交易過程,交易日志都有非常全面的記錄,根據這些記錄可以將數據文件恢復成交易前的狀態(tài)。從交易動作開始,交易日志就處于記錄狀態(tài),交易過程中對數據庫的任何操作都在記錄范圍,直到用戶點擊提交或后退后才結束記錄。每個數據庫都擁有至少一個交易日志以及一個數據文件。

            出于性能上的考慮,SQL Server將用戶的改動存入緩存中,這些改變會立即寫入交易日志,但不會立即寫入數據文件。交易日志會通過一個標記點來確定某個交易是否已將緩存中的數據寫入數據文件。當SQL Server重啟后,它會查看日志中最新的標記點,并將這個標記點后面的交易記錄抹去,因為這些交易記錄并沒有真正的將緩存中的數據寫入數據文件。這可以防止那些中斷的交易修改數據文件。

            維護交易日志

            因為很多人經常遺忘交易日志,因此它也會給系統(tǒng)帶來一些問題。隨著系統(tǒng)的不斷運行,日志記錄的內容會越來越多,日志文件的體積也會越來越大,最終導致可用磁盤空間不足。除非日常工作中經常對日志進行清理,否則日志文件最終會侵占分區(qū)內的全部可用空間。日志的默認配置為不限容量,如果以這種配置工作,它就會不斷膨脹,最終也會占據全部可用空間。這兩種情況都會導致數據庫停止工作。

            對交易日志的日常備份工作可以有效的防止日志文件過分消耗磁盤空間。備份過程會將日志中不再需要的部分截除。截除的方法是首先把舊記錄標記為非活動狀態(tài),然后將新日志覆蓋到舊日志的位置上,這樣就可以防止交易日志的體積不斷膨脹。如果無法對日志進行經常性的備份工作,最好將數據庫設置為“簡單恢復模式”。在這種模式下,系統(tǒng)會強制交易日志在每次記錄標記點時,自動進行截除操作,以新日志覆蓋舊日志。

            截除過程發(fā)生在備份或將舊標記點標為非活動狀態(tài)時,它使得舊的交易記錄可以被覆蓋,但這并不會減少交易日志實際占用的磁盤空間。就算不再使用日志,它依然會占據一定的空間。因此在維護時,還需要對交易日志進行壓縮。壓縮交易日志的方法是刪除非活動記錄,從而減少日志文件所占用的物理硬盤空間。

            通過使用DBCC SHRINKDATABASE語句可以壓縮當前數據庫的交易日志文件,DBCC SHRINKFILE語句用來壓縮指定的交易日志文件,另外也可以在數據庫中激活自動壓縮操作。當壓縮日志時,首先會將舊記錄標記為非活動狀態(tài),然后將帶有非活動標記的記錄徹底刪除。根據所使用的壓縮方式的不同,你可能不會立即看到結果。在理想情況下,壓縮工作應該選在系統(tǒng)不是非常繁忙的時段進行,否則有可能影響數據庫性能。

            恢復數據庫

            交易記錄備份可以用來將數據庫恢復到某一指定狀態(tài),但交易記錄備份本身不足以完成恢復數據庫的任務,還需要備份的數據文件參與恢復工作。恢復數據庫時,首先進行的是數據文件的恢復工作。在整個數據文件恢復完成前,不要將其設為完成狀態(tài),否則交易日志就不會被恢復。當數據文件恢復完成,系統(tǒng)會通過交易日志的備份將數據庫恢復成用戶希望的狀態(tài)。如果在數據庫最后一次備份后,存在多個日志文件的備份,備份程序會按照它們建立的時間依次將其恢復。

            另一種被稱為log shipping的過程可以提供更強的數據庫備份能力。當log shipping配置好后,它可以將數據庫整個復制到另一臺服務器上。在這種情況下,交易日志也會定期發(fā)送到備份服務器上供恢復數據使用。這使得服務器一直處于熱備份狀態(tài),當數據發(fā)生改變時它也隨之更新。另一個服務器被稱作監(jiān)視(monitor)服務器,可以用來監(jiān)視按規(guī)定時間間隔發(fā)送的shipping信號。如果在規(guī)定時間內沒有收到信號,監(jiān)視服務器會將這一事件記錄到事件日志。這種機制使得log shipping經常成為災難恢復計劃中使用的方案。

          posted on 2011-11-10 11:17 順其自然EVO 閱讀(205) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 望奎县| 理塘县| 子长县| 江口县| 嘉峪关市| 施秉县| 神池县| 河北省| 西平县| 香港| 肥城市| 黄骅市| 大邑县| 彝良县| 盐津县| 西吉县| 陈巴尔虎旗| 阜新| 剑河县| 昭平县| 镇康县| 宣恩县| 平顶山市| 永安市| 化德县| 新平| 盐津县| 梅河口市| 布尔津县| 九寨沟县| 正阳县| 莫力| 莱西市| 达州市| 拜城县| 高平市| 珲春市| 昌宁县| 宁陕县| 锡林郭勒盟| 云霄县|