sqlserver 備份恢複 學習筆記

來源:互聯網
上載者:User
sqlserver備份恢複__學習筆記1
 
 
 前記: 今年4月份的時候,做過一個sqlserver2000到sqlserver2005的資料移轉,而且sqlserver2005還是建立在windows2003 mscs叢集上的雙active容錯移轉叢集,弄了好幾天才搭建好環境,自以為對sqlserver很熟悉了,但實際當時對sqlserver的原理研究的很少,後來有一個維護項目,是sqlserver2000,客戶說他們的交易記錄撐爆了硬碟,問我該怎麼處理,我於是認真研究了一下sqlserver的日誌機制,備份恢複原理,發現它和Oracle有相通之處,也有不同的地方,以下是一些知識的收集和總結,以備不時之需吧,畢竟工作中搞sqlserver的機會比較少了... 1.交易日誌(transaction logs)    交易日誌是針對資料庫改變所做的記錄,它可以記錄針對資料庫的任何操作,並將記錄結果儲存在獨立的檔案中。對於任何每一個交易過程,交易日誌都有非常全面的記錄,根據這些記錄可以將資料檔案恢複成交易前的狀態。從交易動作開始,交易日誌就處於選項組,交易過程中對資料庫的任何操作都在記錄範圍,直到使用者點擊提交或後退後才結束記錄。每個資料庫都擁有至少一個交易日誌以及一個資料檔案。  出於效能上的考慮,SQL Server將使用者的改動存入緩衝中,這些改變會立即寫入交易日誌,但不會立即寫入資料檔案。交易日誌會通過一個標記點來確定某個交易是否已將緩衝中的資料寫入資料檔案。當SQL Server重啟後,它會查看日誌中最新的標記點,並將這個標記點後面的交易記錄抹去,因為這些交易記錄並沒有真正的將緩衝中的資料寫入資料檔案。這可以防止那些中斷的交易修改資料檔案。    (註解,類似於oracle的redo log file、redo log buffer、instance recover 機制) 2.日誌的截除和壓縮   日誌的截除,就是把日誌中的舊記錄標記為非使用中,然後資料庫會將新日誌覆蓋到舊日誌的位置上,這樣就可以防止交易日誌的體積不斷膨脹。   截除可以發生在備份記錄檔時,比如:backup log databasename with no_log      截除雖然可以使舊的日誌空間可以被覆蓋,但並不會減少日誌實際已經佔用的磁碟空間,因此有時為了釋放空間還要對日誌進行壓縮,壓縮的過程其實就是徹底刪除舊日誌,釋放出空間。 

3.恢複模型 3.1)簡單恢複模型SIMPLE   使用該模型可以將資料庫恢複到上次備份的即時點,但無法還原到故障點。   (註解,這個類似oracle的非歸檔模式)3.2)完全恢複模型FULL   完全恢複模型提供了最大的恢複靈活性。新資料庫預設使用的就是這種恢複模型。利用這種模型,可以恢複資料庫的一部分或者完全恢複。假設交易記錄(transactions log)還沒有被破壞,還可以在失敗之前恢複出最後一次的已提交(committed)交易。在所有的恢複模型中,這種模型使用了最多的交易記錄空間,並輕微影響了SQL Server的效能。
3.3)大容量日誌記錄恢複模型BULK_LOGGED

  

BULK_LOGGED恢複模型比FULL模型少了一些復原選項,但是進行批操作(bulk operation)時它不會嚴重影響效能。在進行某些批操作時,由於它只需記錄操作的結果,因此它使用了較少的記錄空間。然而,用這種模型,你不能恢複資料庫中的特定標記,也不能僅僅恢複資料庫的一部分。 4.備份資料庫4.1)備份命令的例子    backup database pubs to disk="c:\pubs.bak"    BACKUP LOG pubs WITH NO_LOG;
    BACKUP LOG Northwind TO LogBackupDevice WITH NO_TRUNCATE4.2)備份技巧    每周一次備份主要資料庫。    每天備份一次msdb資料庫。    用SQL Server Agent來安排你的備份工作的時間表。    5.當交易記錄撐爆硬碟時的處理方法5.1)方法一(在業務不繁忙時做) a)利用企業管理器完全備份資料庫
 b)利用查詢分析器,執行命令
   dump transaction 資料庫名 with no_log
 c)再開啟企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮檔案--選擇記錄檔--在收 縮方式裡選擇收縮至XXM,這裡會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了。 
 d)再次完全備份資料庫。5.2)方法二(在業務不繁忙時做) 使用工具:ProSqlLogClear.exe清除日誌、使用前後都需要備份資料庫 5.3)在清除完日誌後,對於資料量不大且資料可以容忍一天的丟失的資料庫,可以將恢複模型該為簡單,然後每天做全備。步驟如下:  a)右建資料庫屬性視窗--選項--故障還原模型--設為簡單  b)右鍵資料庫屬性視窗--選項--設定--選擇"自動收縮"   c)做一個維護計劃,定期做每天的備份,並定製保留幾天的備份 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.