SQLSERVER備份和對日誌的處理

來源:互聯網
上載者:User
SQLSERVER備份和對日誌的處理

 

SQLSERVER備份和對日誌的處理
在網上看到許多關於資料記錄檔太大如何處理的問題,也看到了許多不合實際的做法,也有人因為錯誤的操作但是沒有日誌而急得焦頭爛額,
其實資料庫的記錄檔是記錄資料庫 UPDATE,DELETE 操作的蹤跡,也是當資料庫發生意外(如駭客攻擊,系統資料庫發生破壞破壞等)時我們能夠讓資料庫恢複至特定時刻的保證,
所以它很重要!!我們應該對資料庫進行記錄備份!
我們現在來分析一下資料庫故障的種類:
 一:事務內部的故障
也就是我們不能夠保證事務的一致性狀態,舉個例子來說,您有兩個銀行帳戶,由於某種原因,您現在需要從一個銀行帳戶上取出100萬存到另一個銀行帳戶上,
但是由於銀行資料庫的故障,您的一個銀行帳戶確實少了100萬,但是另一個帳戶沒有相應的增加100萬,您現在會怎麼做:( 當然我們可以在相應事務中加入ROLLBACK來強抽復原
 二:系統故障(軟體故障-SOFT CRASH)
系統故障是指造成系統停止運轉的任何事件,捨不得系統要重新啟動.如特定類型的硬體故障(CPU故障),作業系統故障,DBMS代碼故障,突然停電等,這類故障影響正在啟動並執行事務,
但是不破壞資料庫.這時所有記憶體的資料全部丟失,所有事務非正常終止,一些沒有完成的事務的結果可能已經送給了物理資料庫,從而資料庫中的資料處於不正確狀態,為保證資料的一致
性,需要清除這些事務對資料庫的篡改!
 這時系統重新啟動後,對所有已經提交的事務REDO,對所有非正常終於的事務UNDO來強行撤消所有未完成的事務!
 三:介質故障(硬體故障--HARD CRASH)
這是一種外存故障,如磁碟損壞,磁頭碰撞,瞬時強磁場幹擾等.這類故障可能性最小,但是破壞性最大.
 四:電腦病毒
上述故障資料庫進行恢複的原理十分簡單,就是兩個字"冗餘"現在我們就說一下如何建立"冗餘"技術!

備份
 我們現在來看一下SQL SERVER 的備份技術,所有資料庫的備份目的都是一樣的,SQL SERVER也一樣,防止資料丟失!
本章主要包括下面幾個方面的內容:
1.在SQL SERVER 中我們可以設定資料庫的恢複模型為完全恢複模型,大容量插入模型和簡單模型,
2.什麼時候需要我們進行資料庫的備份
3,有幾種Database Backup方法
4.0,示範幾種備份方法(用備份前的準備工作)
5.幾種備份策略
上面的的內容可以在BOOK ON LINE 裡找到非常好的回覆,如果需要,我再寫:)
練習:example:

0.首先要有一個完全備份(不然的話您是不能夠成功的備份記錄檔的:) )呵呵
 backup database Northwind
   to nwbakup1,nwbakup2
    with init
--查看備份資訊
RESTORE FILELISTONLY FROM nwbakup1,nwbakup2
也可以在企業管理器中SQL伺服器-Northwind-右鍵-所有任務-備份資料庫, 然後在圖形介面下進行相應的操作,這是非常簡單的

1.use northwind
insert employees(lastname,firstname) values('aaa','aaa')
delete from employees where lastname='aaa'
記下這時的時間
23:33
2.過3分鐘輸入
use northwind
insert employees(lastname,firstname) values('bbb','bbb')

3.此時select * from employees 將能看到這兩條記錄

4.進行記錄備份,選中northwind資料庫,所有任務,backup database
在對話方塊中,選擇交易記錄備份為備份類型,選擇已有的備份裝置,和追加到媒體
單擊ok進行備份.這樣產生了兩個新紀錄的記錄備份
backup log Northwind to nwlogbakup

5.以下示範恢複
所有任務 restore database
對話方塊中選擇時點還原,輸入剛才記錄的時間,單擊ok恢複
restore database Northwind
from nwbakup1,nwbakup2
with norecovery

use Northwind
伺服器: 訊息 927,層級 14,狀態 2,行 1
無法開啟資料庫 'Northwind'。該資料庫正處於還原作業中途。
這是因為我們指定了選項" with norecovery"

6.現在恢複交易記錄至23:35
restore log Northwind
from nwlogbakup
with recovery,
 stopat=񟭃-08-02 23:35'

6.執行select * from employees ,此時只能看到第一個新插入的記錄

 
--查看備份資訊
RESTORE FILELISTONLY FROM DISK ='C:/Program Files/Microsoft SQL Server/MSSQL/BACKUP/db1_backup'
DBCC SQLPERF (LOGSPACE) --查看日誌空間

1*你應該備份日誌
BACKUP LOG 資料庫名 TO DISK='c:/aalogbak' WITH INIT,NO_TRUNCATE

這樣你的日誌清空也備份了,日誌也清空了,你可以壓縮了
在維護記錄備份序列時,調度 BACKUP LOG 語句按間隔發生,以使交易記錄不致增長到超過預期的大小。

如果不想要日誌或者是日誌已沒有什麼作用時,可以考慮以下的實現方案:

1. backup log DBNAME with [no_log|truncate_only][no_truncate]
/*
NO_LOG | TRUNCATE_ONLY

無須備份複製日誌即刪除不活動的日誌部分,並且截斷日誌。該選項會釋放空間。因為並不儲存記錄備份,所以沒有必要指定備份裝置。NO_LOG 和 TRUNCATE_ONLY 是同義的。

使用 NO_LOG 或 TRUNCATE_ONLY 備份日誌後,記錄在日誌中的更改不可恢複。為了恢複,請立即執行 BACKUP DATABASE。

NO_TRUNCATE

允許在資料庫損壞時備份日誌。
*/

2. 收縮資料庫檔案
select fileid,filename from sysfiles

USE DBNAME 
DBCC SHRINKFILE (2,10) -- 把fileid=2 的檔案收縮到 10 MB
OR
企業管理器-右鍵你要壓縮的資料庫-所有任務-收縮資料庫-收縮檔案-選擇記錄檔-在收縮方式裡選擇收縮至XXM,這裡會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了

3:  刪除LOG
1:分離資料庫
2:刪除LOG檔案
3:附加資料庫
此法產生新的LOG,大小隻有500多K

4.你可以先配置你的RECOVERY MODEL 為SIMPLE
ALTER DATABASE DB_NAME SET RECOVERY SIMPLE

5.exec sp_dboption 'test2','autoshrink','on'

5
展開伺服器組,然後展開伺服器。

展開"資料庫"檔案夾,右擊要從中刪除資料或記錄檔的資料庫,然後單擊"屬性"命令。

若要刪除資料檔案,單擊"常規"選項卡。若要刪除記錄檔,單擊"交易記錄"選項卡。

在"檔案名稱"列中,單擊要刪除的檔案名稱旁邊的箭頭,再按 DELETE 鍵。檔案名稱旁出現十字游標,表明將刪除此檔案。

說明 只能刪除空檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.