
- 類型:數(shù)據(jù)庫(kù)類大。363.9M語(yǔ)言:中文 評(píng)分:4.5
- 標(biāo)簽:
在完整恢復(fù)模式或大容量日志恢復(fù)模式下,必須先備份活動(dòng)事務(wù)日志(稱為日志尾部),然后才能在SQLServerManagementStudio中還原數(shù)據(jù)庫(kù)。有關(guān)詳細(xì)信息,請(qǐng)參閱如何備份事務(wù)日志(SQLServerManagementStudio)。若要還原已加密的數(shù)據(jù)庫(kù),您必須有權(quán)訪問(wèn)用于加密數(shù)據(jù)庫(kù)的證書(shū)或非對(duì)稱密鑰。如果沒(méi)有證書(shū)或非對(duì)稱密鑰,數(shù)據(jù)庫(kù)將無(wú)法還原。
認(rèn)識(shí)數(shù)據(jù)庫(kù)備份和事務(wù)日志備份
數(shù)據(jù)庫(kù)備份與日志備份是數(shù)據(jù)庫(kù)維護(hù)的日常工作,備份的目的是在于當(dāng)數(shù)據(jù)庫(kù)出現(xiàn)故障或者遭到破壞時(shí)可以根據(jù)備份的數(shù)據(jù)庫(kù)及事務(wù)日志文件還原到最近的時(shí)間點(diǎn)將損失降到最低點(diǎn)。
數(shù)據(jù)庫(kù)備份
數(shù)據(jù)庫(kù)備份可以手動(dòng)備份和語(yǔ)句備份
一.手動(dòng)備份數(shù)據(jù)庫(kù)
1.鼠標(biāo)右鍵選擇你要進(jìn)行備份的數(shù)據(jù)庫(kù)-任務(wù)-備份
可以在常規(guī)選項(xiàng)頁(yè)面你可以選擇備份類型是進(jìn)行完整數(shù)據(jù)庫(kù)備份還是差異數(shù)據(jù)庫(kù)備份
2.點(diǎn)擊添加選項(xiàng),選擇數(shù)據(jù)庫(kù)文件的存放路徑
注意文件名記得加后綴.bak,便于恢復(fù)時(shí)的查找
3.你還可以在選項(xiàng)頁(yè)面是追加到現(xiàn)有的備份集,還是覆蓋所有的現(xiàn)有備份集,還可以選擇備份驗(yàn)證完整性(建議選擇),還可以選擇是否壓縮備份等。
二.語(yǔ)句備份數(shù)據(jù)庫(kù)
use master goBACKUP DATABASE [test] TO DISK = N'D:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\test.bak' WITH NOFORMAT, NOINIT, NAME = N'test-完整 數(shù)據(jù)庫(kù) 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO
數(shù)據(jù)庫(kù)日志備份
首先需要注意,數(shù)據(jù)庫(kù)日志的備份是基于數(shù)據(jù)庫(kù)完整備份,也就是說(shuō)你備份數(shù)據(jù)庫(kù)日志之前你首先要先對(duì)數(shù)據(jù)庫(kù)進(jìn)行一次完整的備份,因?yàn)橹g會(huì)涉及到堅(jiān)持到檢查點(diǎn)lsn,這也是本文接下來(lái)要講的重點(diǎn)。
一.手動(dòng)備份數(shù)據(jù)庫(kù)日志
1.右鍵數(shù)據(jù)庫(kù)-任務(wù)-備份-選擇備份類型(事務(wù)日志)
2.點(diǎn)添加,添加日志文件備份存儲(chǔ)路徑
3.同數(shù)據(jù)庫(kù)完整備份一樣,你也可以選擇覆蓋現(xiàn)有備份集或者追加到現(xiàn)有備份集,這里現(xiàn)在覆蓋現(xiàn)有備份集、驗(yàn)證完整性,然后確認(rèn)備份
二.語(yǔ)句備份數(shù)據(jù)庫(kù)事務(wù)日志
BACKUP LOG [test] TO DISK = N'D:\test.trn' WITH NOFORMAT, INIT, NAME = N'test-事務(wù)日志 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO
數(shù)據(jù)庫(kù)還原
右鍵數(shù)據(jù)庫(kù)-還原數(shù)據(jù)庫(kù)-添加需要進(jìn)行還原的數(shù)據(jù)庫(kù)文件路徑
在還原源選項(xiàng)中你可以選擇‘源數(shù)據(jù)庫(kù)’,‘源設(shè)備’。1.選擇源數(shù)據(jù)庫(kù)工具會(huì)自動(dòng)顯示該數(shù)據(jù)庫(kù)之前的一些備份,然后直接選擇需要還原的數(shù)據(jù)庫(kù)備份集。
2.選擇源設(shè)備點(diǎn)擊后面的...,添加需要還原的數(shù)據(jù)庫(kù)文件
2.點(diǎn)擊確認(rèn)還原數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)恢復(fù)
數(shù)據(jù)庫(kù)恢復(fù)的前提是1.一個(gè)完整的數(shù)據(jù)庫(kù)備份2.包含這個(gè)完整數(shù)據(jù)庫(kù)備份的事務(wù)日志備份3.完整備份之間也可以存在數(shù)個(gè)差異備份
對(duì)于數(shù)據(jù)庫(kù)維護(hù)空間始終是一個(gè)比較頭疼的問(wèn)題,特別是對(duì)于大型數(shù)據(jù)庫(kù)而言,每天的日志文件增長(zhǎng)是龐大的,很多數(shù)據(jù)庫(kù)管理員會(huì)定時(shí)對(duì)數(shù)據(jù)庫(kù)日志文件進(jìn)行收縮,但是經(jīng)常收縮會(huì)存在收縮完日志文件還是不能減少,這是因?yàn)榇嬖诤芏嗷顒?dòng)的日志無(wú)法收縮可以用
DBCC LOGINFO('數(shù)據(jù)庫(kù)名稱')
我們看到
status=0的日志,代表已經(jīng)備份到磁盤(pán)的日志文件;而
status=2的日志還沒(méi)有備份。當(dāng)我們收縮日志文件時(shí),收縮掉的空
間其實(shí)就是
status=0的空間,如果日志物理文件無(wú)法減小,這里一
定能看到非常多
status=2的記錄
解決辦法:1.可以分離要收縮的數(shù)據(jù)庫(kù),然后手動(dòng)刪除日志文件,然后附加數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)就會(huì)產(chǎn)生一個(gè)很小的日志文件(不推薦使用這種方法)
2.右鍵要出來(lái)的數(shù)據(jù)庫(kù)選擇“屬性”-"選項(xiàng)",將恢復(fù)模式改成"簡(jiǎn)單",然后利用收縮工具可以講日志文件收縮到很小,收縮完記得講恢復(fù)模式改成"完整"
也可以用語(yǔ)句進(jìn)行處理(dbname是你要進(jìn)行收縮的數(shù)據(jù)庫(kù)名,dbname_log是你要進(jìn)行收縮的數(shù)據(jù)庫(kù)的邏輯日志名稱)
USE [master]
GO
ALTER DATABASE [dbname] SET RECOVERY SIMPLE WITH NO_WAIT GO
ALTER DATABASE [dbname] SET RECOVERY SIMPLE --簡(jiǎn)單模式
GO
USE [dbname]
GO
DBCC SHRINKFILE (N'dbname_log' , 11, TRUNCATEONLY) GO
USE [master]
GO
ALTER DATABASE [dbname] SET RECOVERY FULL WITH NO_WAIT ALTER DATABASE [dbname] SET RECOVERY FULL
對(duì)于第一種方法不贊同使用,首先對(duì)于數(shù)據(jù)庫(kù)的分離與附加有時(shí)候會(huì)破壞數(shù)據(jù)庫(kù),造成數(shù)據(jù)庫(kù)無(wú)法還原,還有就是對(duì)于在線數(shù)據(jù)庫(kù)也不允許進(jìn)行分離操作。
對(duì)于第二種方法是slq2008收縮日志文件的一種方法,但是此方法也不能使用過(guò)于頻繁,因?yàn)檫M(jìn)行數(shù)據(jù)庫(kù)恢復(fù)模式的更改會(huì)截?cái)嗍聞?wù)日志文件,這樣的話當(dāng)時(shí)利用事務(wù)日志文件進(jìn)行恢復(fù)的時(shí)候檢查點(diǎn)不能包含數(shù)據(jù)庫(kù)文件,而且當(dāng)你要對(duì)事務(wù)日志進(jìn)行備份的時(shí)候會(huì)重新提示你需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行完整備份。
舉個(gè)例子:比如你昨天晚上進(jìn)行了一次完整備份,然后同時(shí)你也進(jìn)行了一次日志備份(提前日志未被截?cái)啵,然后你每個(gè)小時(shí)進(jìn)行過(guò)一次差異備份,最近的差異備份時(shí)間點(diǎn)是14點(diǎn),如果此時(shí)數(shù)據(jù)庫(kù)錯(cuò)誤修改了數(shù)據(jù),你可以立馬備份一個(gè)日志文件將數(shù)據(jù)庫(kù)恢復(fù)到日志備份開(kāi)始到日志備份終點(diǎn)前的任意時(shí)間點(diǎn) 。
如果此時(shí)你進(jìn)行了修改數(shù)據(jù)庫(kù)模式,截?cái)嗳罩具M(jìn)行了收縮,那么你的數(shù)據(jù)只能恢復(fù)到昨天晚上備份的那個(gè)日志備份時(shí)間前的任意時(shí)間點(diǎn),也就是今天所做的數(shù)據(jù)庫(kù)更改無(wú)法再恢復(fù)了,因?yàn)槿罩疚募呀?jīng)被截?cái)嗔,不知道這樣解釋是否明白
因?yàn)槿罩疚募臋z查點(diǎn)(lsn)是連續(xù)的,每一次日志備份都是在上一次備份的基礎(chǔ)上lsn往后增加的,lsn的范圍也包括了數(shù)據(jù)庫(kù)文件的lsn,也只有日志文件的lsn包括了數(shù)據(jù)庫(kù)文件的lsn,才能將數(shù)據(jù)庫(kù)文件進(jìn)行回滾。
上圖中總共有三個(gè)備份文件,一個(gè)完整備份、一個(gè)差異備份、一個(gè)日志備份,大家可以注意觀察完整備份的第一個(gè)lsn與最后一個(gè)lsn,和檢查點(diǎn)
第二個(gè)差異備份文件的的第一個(gè)lsn與最后一個(gè)lsn,和檢查點(diǎn),最后的日志備份的第一個(gè)lsn和最后一個(gè)lsn包含了前面兩個(gè)備份文件的lsn,這種情況數(shù)據(jù)庫(kù)就可以恢復(fù)到日志文件備份前的任意時(shí)間點(diǎn),如果日志文件沒(méi)有包含數(shù)據(jù)庫(kù)文件的最后一個(gè)lsn也就無(wú)法恢復(fù)了。
結(jié)語(yǔ)
在數(shù)據(jù)庫(kù)維護(hù)過(guò)程中對(duì)數(shù)據(jù)庫(kù)的日常備份是必須的,畢竟這是降低損失的最有效的辦法,希望大家積極評(píng)論,出于能力的有限還望大家海涵,整片文章寫(xiě)下來(lái)挺累的,呵呵,希望我的一點(diǎn)見(jiàn)解能給大家?guī)?lái)幫助。