資料庫的備份與還原

2021-04-01 23:35:45 字數 2951 閱讀 3697

資料庫的備份一般都會同時擁有三種:完全備份、差異備份、事務日誌備份

完全備份是指整個資料的完整備份,差異備份則指現在資料與上次完整備份後的差異資料備份;而事務日誌備份則是備份日誌檔案.

根據以上的說明,一般在安排排程時就是完全備份的間隔期最長,差異備份其次,事務日誌的最短.比如一周進行一次完整備份,一天進行一次差異備份,每四小時進行一次事務日誌備份.當然安排執行時須根據具體實際情況來定.

備份:可以直接備份,也可利用維護計畫,還可利用備份裝置.要想週期性的自動執行,最好是利用作業.下面介紹的就是備份裝置+作業進行備份.

可以在企業管理器中視覺化進行,也可利用t-sql編寫.一般後者更靈活.

當資料有丟失或其它系統故障需要恢復時,一般恢復順序為:

1.備份當前的事務日誌(如果還能備份的話);

2.恢復最近一次的完整備份;

3.恢復離最近一次的差異備份;

4.順序恢復最近一次差異備份之後的每乙個事務日誌備份

5.恢復第一步備份的當前事務日誌;

注意:1.如果資料沒有損壞,原來資料檔案還完好無損,請直接附加資料庫.

2.在進行恢復完整備份時,就須指定norecovery.直到最後所有的事務日誌恢復完全才可recovery結束.

還有一種為檔案,檔案組備份,該備份還原更特殊,更靈活。做這種備份的情況是該檔案上的資料比較重要,改動比較頻繁。而在恢復時,只要恢復受損的所在檔案或檔案組及其相應的事務日誌,對於大型資料庫來說,將能大大恢復加快速度。其缺點是比較難於管理。必須注意檔案的完整性及事務日誌備份的覆蓋點。

下面示例為資料庫db05102的完全備份、差異備份、事務日誌備份及其還原操作。呵,建作業時用的是企業管理器。因為那樣方便多了,當然如果只能用**編寫時,那再麻煩也只能硬著頭皮寫啦^_^

1.建備份裝置:

use master

alter database pubs

set recovery ******

gogo

if exists(select name from sysdevices where name='db05102fbk')

exec sp_dropdevice 'db05102fbk'

exec sp_addumpdevice 'disk','db05102fbk','f:/0509/backup/db05102fbk'  --完全備份裝置

goif exists(select name from sysdevices where name='db05102dbk')

exec sp_dropdevice 'db05102dbk'

exec sp_addumpdevice 'disk','db05102dbk','f:/0509/backup/db05102dbk'     --差異備份裝置

goif exists(select name from sysdevices where name='db05102lbk')

exec sp_dropdevice 'db05102lbk'

exec sp_addumpdevice 'disk','db05102lbk','f:/0509/backup/db05102lbk'      --事務日誌備份裝置

goexec sp_addumpdevice  'disk','db05102lbk2','f:/0509/backup/db05102lbk2'   --當前事務日誌備份裝置

go2.在企業管理器中新建如下三種作業,安排排程為:

完全備份每1天執行1次;步驟中的t-sql 語句為:backup database db05102 to db05102fbk

差異備份每天每隔4小時執行1次;其中的t-sql語句為:

backup database db05102 to db05102dbk with differential

事務日誌備份每天每隔1小時執行1次:其中的t-sql語句為:

backup log db05102 to db05102lbk. 注意資料庫在建立時,預設恢復模式為******.而要備份事務日誌的話,必須將其改為full 或 bulk_logged.即alter database db05102 set recovery bulk_logged.當然這個語句只執行一次就行了.沒必要每次執行事務日誌備份都帶進去

3.還原資料庫:

備份當前活動事務日誌:

backup log db05102 to db05102lbk2

with no_truncate                    

go還原上一次的完全備份.file為要還原的備份集,一次備份產生乙個備份集,norecovery說明恢復未結束.直到最後乙個日誌恢復方指定為recovery或不指定 (預設為recovery) .

restore database db05102

from db05102fbk

with file=4,norecovery  

go 

.還原上面完全備份後的離現在最近一次的差異備份                              

restore database db05102

from db05102dbk

with file=29,norecovery

go----.還原上面的差異備份後的所有事務日誌備份.必須按順序執行.

restore log db05102

from db05102lbk

with file=115,norecovery

gorestore log db05102

from db05102lbk

with file=116,norecovery

gorestore log db05102

from db05102lbk

with file=117,norecovery

go還原當前備份的事務日誌備份.

restore log db05102

from db05102lbk2

with file=8

go

資料庫備份與還原

在開發和資料庫有關的應用程式的時候,很多時候我們做的操作就是和資料庫打交道,而使用者最關心的也是資料,而一旦資料庫出現故障,我們事先又沒有做任何的預防措施,帶來的將會是災難性的錯誤。雖然資料庫本身提供備份和還原的功能,也可設定定期備份資料庫的操作,但是很多時候使用者並不知道怎樣操作,特別是還原。所以...

資料庫備份與還原

還原,將資料恢復到備份時的狀態。保護資料記錄。myisam innodb bdbmemory archive 批量插入的速度高低 高高非常高事務安全 支援 支援 全文索引 支援5.5版本支援 鎖機制 表鎖行鎖 頁鎖表鎖 行鎖儲存限制 沒有64tb沒有有 沒有b樹索引 支援支援 支援支援 雜湊索引 支...

資料庫備份與還原

window to widows 資料庫備份與還原 步驟 pg dump.exe執行程式在postgresql資料庫安裝目錄 bin 目錄下,這是在windows下的檔名。執行過程如下 1 開啟windows下的命令視窗 開始 cmd 安裝資料庫的目錄 進入bin目錄 2 匯出命令 pg dump ...