日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Sql server數(shù)據(jù)庫備份的三個(gè)恢復(fù)模型

 nbxming 2010-12-29
  • Sql server數(shù)據(jù)庫備份的三個(gè)恢復(fù)模型
  •  

    在SQL Server 2000中,有無數(shù)種備份數(shù)據(jù)庫的方法。無論你的數(shù)據(jù)庫有多大、改動(dòng)是否頻繁,都有滿足你的需求的備份策略。讓我們看看幾種能在不同環(huán)境下工作的基本備份策略。

    本文假定你有備份數(shù)據(jù)庫的權(quán)限。也就是說,你要么是系統(tǒng)管理員,要么是db_owner或backupadministrator。更有,我們還假定你的操作系統(tǒng)提供了訪問備份所需要的資源的權(quán)利,例如,訪問磁盤或磁帶驅(qū)動(dòng)器。

    從哪兒開始

    在你開始備份一個(gè)SQL Server數(shù)據(jù)庫之前,你需要知道該數(shù)據(jù)庫使用了哪個(gè)恢復(fù)模型。這里有三種不同的恢復(fù)模型:FULL、BULK_LOGGED和SIMPLE。

    FULL恢復(fù)模型向你提供了最大的恢復(fù)靈活性。新數(shù)據(jù)庫默認(rèn)使用的就是這種恢復(fù)模型。利用這種模型,你能恢復(fù)數(shù)據(jù)庫的一部分或完全恢復(fù)。假設(shè)交易記錄(transactions log)還沒有被破壞,你還能在失敗之前恢復(fù)出最后一次的已提交(committed)交易。在所有的恢復(fù)模型中,這種模型使用了最多的交易記錄空間,并輕微影響了SQL Server的性能。

    BULK_LOGGED恢復(fù)模型比FULL模型少了一些恢復(fù)選項(xiàng),不過進(jìn)行批操作(bulk operation)時(shí)他不會(huì)嚴(yán)重影響性能。在進(jìn)行某些批操作時(shí),由于他只需記錄操作的結(jié)果,因此他使用了較少的記錄空間。然而,用這種模型,你不能恢復(fù)數(shù)據(jù)庫中的特定標(biāo)記,也不能僅僅恢復(fù)數(shù)據(jù)庫的一部分。

    SIMPLE恢復(fù)模型是這三種模型中最容易實(shí)施的,他所占用的存儲(chǔ)空間也最小。然而,你只能恢復(fù)出備份結(jié)束時(shí)刻的數(shù)據(jù)庫。

    為了找出你所用數(shù)據(jù)庫的恢復(fù)模型,能運(yùn)行下面的命令,該命令應(yīng)該返回FULL、BULK_LOGGED和SIMPLE這三個(gè)值中的某一個(gè):

    SELECT dbpropertyex("database", "recovery")

    為了改動(dòng)數(shù)據(jù)庫的恢復(fù)選項(xiàng),運(yùn)行下面的命令:

    ALTER DATABASE database name SET RECOVERY {FULL | SIMPLE | BULK_LOGGED}

    除數(shù)據(jù)之外,SQL Server備份還包括數(shù)據(jù)庫大綱(schema)和數(shù)據(jù)庫元數(shù)據(jù)(即數(shù)據(jù)庫文件、文件組和他們的位置)。SQL Server允許在備份時(shí)用戶依然使用數(shù)據(jù)庫,所以在備份期間發(fā)生的交易也記錄到備份中去了。

    備份數(shù)據(jù)庫

    為了備份數(shù)據(jù)庫,你能運(yùn)行BACKUP命令。(你也能使用SQL Enterprise Manager。)在執(zhí)行命令之前知道他的語法永遠(yuǎn)是個(gè)好主意。BACKUP命令有許多選項(xiàng),他的基本語法是:

    BACKUP DATABASE { database_name }

    TO < backup_device > |

    backup_device能是磁盤或磁帶??或他也能是個(gè)用磁盤文件、磁帶或已命名管道表示的邏輯上的備份設(shè)備。

    如果你想做一個(gè)快速、一次性的備份,那么向下面那樣使用磁盤文件:

    BACKUP DATABASE Northwind TO DISK = "c:\backup\Northwind.bak"

    如果你想把數(shù)據(jù)庫備份到另外一臺(tái)服務(wù)器上,能使用UNC名字:

    BACKUP DATABASE Northwind TO DISK = "\\FILESERVER\Shared\Backup\Northwind.bak"

    如果想進(jìn)行有規(guī)律、有計(jì)劃的備份,就需要使用邏輯備份設(shè)備。一個(gè)邏輯備份設(shè)備能保存若干個(gè)數(shù)據(jù)庫備份并駐留在磁盤、磁帶或已命名管道上。如果你使用磁帶設(shè)備,磁帶驅(qū)動(dòng)器必須在同一臺(tái)物理服務(wù)器上。已命名管道能利用第三方備份軟件。

    為了創(chuàng)建邏輯備份設(shè)備,使用sp_addumpdevice系統(tǒng)保存過程。SQL Enterprise Manager也能用來創(chuàng)建備份設(shè)備。命令行語法如清單A所示。

    清單B給出了一個(gè)在磁盤上創(chuàng)建邏輯備份設(shè)備的例子。

    當(dāng)備份設(shè)備創(chuàng)建完畢,Northwind數(shù)據(jù)庫能用下面的命令進(jìn)行備份:

    BACKUP DATABASE Northwind TO DiskBackup

    頻繁變動(dòng)的大數(shù)據(jù)庫的備份

    目前,我已演示了怎么備份整個(gè)數(shù)據(jù)庫。然而,他只允許你恢復(fù)備份結(jié)束時(shí)刻的數(shù)據(jù)庫所保存的數(shù)據(jù)。如果數(shù)據(jù)庫非常大并且頻繁變動(dòng),由于時(shí)間和空間的限制,頻繁進(jìn)行全數(shù)據(jù)庫備份是不現(xiàn)實(shí)的。當(dāng)數(shù)據(jù)庫失敗時(shí),可能會(huì)造成大量數(shù)據(jù)丟失。

    在這種情況下,有兩種提高可恢復(fù)性的途徑,這兩個(gè)途徑都需求全數(shù)據(jù)庫備份。而且這兩種方法都需求數(shù)據(jù)庫恢復(fù)模型為FULL或BULK_LOGGED。

    第一種方法采用差異數(shù)據(jù)庫備份,他只捕捉并保存全數(shù)據(jù)庫備份后改動(dòng)的數(shù)據(jù)。由于他的文件較小而且信息簡明,用他進(jìn)行數(shù)據(jù)恢復(fù)的速度非??臁?

    下面的例子在一個(gè)名為DiffBackupDevice的邏輯備份設(shè)備上創(chuàng)建了一個(gè)差異備份:

    BACKUP DATABASE Northwind TO DiffBackupDevice WITH DIFFERENTIAL

    第二個(gè)提高可恢復(fù)性的方法利用交易記錄備份,恢復(fù)能在一個(gè)特定的時(shí)間點(diǎn)上完成。

    你可能會(huì)問這怎么可能。記住,交易記錄的目的就是記錄發(fā)生在數(shù)據(jù)庫中所有交易。交易記錄允許COMMIT和ROLLBACK正確工作。為了達(dá)到這個(gè)功能,該數(shù)據(jù)的變化前后的數(shù)值必須隨同操作類型、交易開始(時(shí)間)等一齊被記錄下來。

    備份技巧

    利用下面的列出的技巧來確保你不會(huì)在每周一次的數(shù)據(jù)庫備份過程中忘記關(guān)鍵步驟。

    每周一次備份主數(shù)據(jù)庫。如果你創(chuàng)建、修改或停止一個(gè)數(shù)據(jù)庫,添加新的SQL Server消息,添加或停止連接服務(wù)器,或添加記錄設(shè)備,那就進(jìn)行手工備份。

    每天備份一次msdb數(shù)據(jù)庫。他一般非常小,但非常重要,因?yàn)樗怂械腟QL Server工作、操作和計(jì)劃任務(wù)。

    只有當(dāng)你修改他時(shí),才有必要備份模型數(shù)據(jù)庫。

    用SQL Server Agent來安排你的備份工作的時(shí)間表。

    如果在你的生產(chǎn)(production)環(huán)境中有現(xiàn)成資源,備份生產(chǎn)數(shù)據(jù)庫到本地磁盤或網(wǎng)絡(luò)服務(wù)器(用同一個(gè)開關(guān))。然后,把備份文件/設(shè)備拷貝到磁帶上。在存在許多硬件故障(特別是在RAID系統(tǒng)中)的情況下,磁盤常常是完好的(inact)。如果備份文件是在磁盤上,那么恢復(fù)時(shí)的速度會(huì)提高非常多。

    備份研發(fā)和測試數(shù)據(jù)庫至少要用到SIMPLE恢復(fù)模型。

    除了有計(jì)劃的定時(shí)備份外,在進(jìn)行未記錄的(nonlogged)批操作(如,批拷貝)、創(chuàng)建索引、或改動(dòng)恢復(fù)模型后要備份用戶數(shù)據(jù)庫。

    如果你使用的是SIMPLE恢復(fù)模型,記住在截短(truncate)交易記錄之后備份你的數(shù)據(jù)庫。

    用文件記錄你的恢復(fù)步驟。至少要大概記錄這些步驟,注意所有的重要文件的位置。

    在截短記錄之前,也就是所有的已提交(committed)交易從記錄中清空之前,所有的這些信息都保存在交易記錄中。在SIMPLE恢復(fù)模型中,記錄在一個(gè)CHECKPOINT期間內(nèi)截短(在SQL Server內(nèi)存緩沖寫道磁盤時(shí)),他是自動(dòng)發(fā)生的,但也能手動(dòng)執(zhí)行。這也就是SIMPLE恢復(fù)模型不支持時(shí)間點(diǎn)(point-in-time)恢復(fù)的原因。在FULL和BULK_LOGGED恢復(fù)模型下,當(dāng)交易記錄被備份時(shí),交易記錄被截短,除非你明確指出不進(jìn)行截短。

    為了備份交易記錄,使用BACKUP LOG命令。其基本語法和BACKUP命令非常相似:

    BACKUP LOG { database } TO

    下面是怎么把交易記錄備份到一個(gè)名為LogBackupDevice的邏輯設(shè)備上的例子:

    BACKUP TRANSACTION Northwind TO LogBackupDevice

    如果你不希望截短交易記錄,使用NO_TRUNCATE選項(xiàng),如下所示:

    BACKUP TRANSACTION Northwind TO LogBackupDevice WITH NO_TRUNCATE

    只是基本知識(shí)

    盡管我在本文中僅僅概述了數(shù)據(jù)庫恢復(fù)的基本知識(shí),你還是能通過這些技巧來找到正確的方向。那么,為了避免不必要的(丟失數(shù)據(jù)造成的)恐慌,你要做到每周備份主數(shù)據(jù)庫,每天備份msdb。

      本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評(píng)論

      發(fā)表

      請(qǐng)遵守用戶 評(píng)論公約

      類似文章 更多