(4 10)快照的概念與使用

2022-02-15 09:34:26 字數 4359 閱讀 1861

最近,開發系統使用sqlserver2008 r2,但是由於系統資料壓力的增加,準備增加乙個和正式資料庫同步的庫,用來供介面和報表使用,所以開始對sqlserver裡面的一些技術開始研究,第一篇先來研究一下最基本的資料庫快照。

基本概念

先簡單介紹一下快照的基本概念,資料庫快照是 sql server 資料庫(源資料庫)的唯讀靜態檢視。 自建立快照那刻起,資料庫快照在事務上與源資料庫一致。 資料庫快照始終與其源資料庫位於同一伺服器例項上。 當源資料庫更新時,資料庫快照也將更新。 因此,資料庫快照存在的時間越長,就越有可能用完其可用磁碟空間。

資料庫快照的優點

快照可用於報告目的。

客戶端可以查詢資料庫快照,這對於基於建立快照時的資料編寫報表是很有用的。

使資料免受管理失誤所帶來的影響。

如果源資料庫上出現使用者錯誤,您可將源資料庫恢復到建立給定資料庫快照時的狀態。 丟失的資料僅限於建立該快照後資料庫中發生更新的資料。

例如,在進行重大更新(比如大容量更新或架構更改)前,對資料庫建立資料庫快照以保護資料。 一旦進行了錯誤操作,可以使用快照將資料庫恢復到生成快照時的狀態。 為此目的進行的。

使資料免受使用者失誤所帶來的影響。

定期建立資料庫快照,可以減輕重大使用者錯誤(例如,刪除的表)的影響。 為了很好地保護資料,可以建立時間跨度足以識別和處理大多數使用者錯誤的一系列資料庫快照。 例如,根據磁碟資源,可以每 24 小時建立 6 到 12 個滾動快照。 每建立乙個新的快照,就刪除最早的快照。

若要從使用者錯誤中恢復,可以將資料庫恢復到在錯誤發生的前一時刻的快照。 為此目的進行的恢復很可能比從備份還原快得多;但是,此後您無法對資料進行前滾操作。

或者,也可以利用快照中的資訊,手動重新建立刪除的表或其他丟失的資料。 例如,可以將快照中的資料大容量複製到資料庫中,然後手動將資料合併回資料庫中。

管理測試資料庫。

在測試環境中,當每一輪測試開始時針對要包含相同資料的資料庫重複執行測試協議將十分有用。 在執行第一輪測試前,應用程式開發人員或測試人員可以在測試資料庫中建立資料庫快照。 每次執行測試之後,資料庫都可以通過恢復資料庫快照快速返回到它以前的狀態。

資料庫快照的限制

源資料庫的限制:

不能對資料庫進行刪除、分離或還原。可以備份源資料庫,這方面將不受資料庫快照的影響。

源資料庫的效能受到影響。由於每次更新頁時都會對快照執行「寫入時複製」操作,導致源資料庫上的 i/o 增加。

不能從源資料庫或任何快照中刪除檔案。

快照資料庫的限制:

資料庫快照必須與源資料庫在相同的伺服器例項上建立和保留。

始終對整個資料庫製作資料庫快照。

當將源資料庫中更新的頁強制壓入快照時,如果快照用盡磁碟空間或者遇到其他錯誤,則該快照將成為可疑快照並且必須將其刪除。

快照為唯讀。

禁止對 model 資料庫、master 資料庫和 tempdb 資料庫建立快照。

不能在 fat32 檔案系統或 raw 分割槽上建立資料庫快照。 資料庫快照所用的稀疏檔案由 ntfs 檔案系統提供。

資料庫快照將繼承快照建立時其源資料庫的安全約束。 由於快照是唯讀的,因此無法更改繼承的許可權,對源資料庫的更改許可權將不反映在現有快照中。

如果源資料庫的狀態為 recovery_pending,可能無法訪問其資料庫快照。 但是,當解決了源資料庫的問題之後,快照將再次變成可用快照。

只要理解它的原理它的限制也就自然明了。

建立資料庫快照

在建立資料庫之前,首先要知道資料庫分布在幾個檔案上,因為快照需要對每乙個檔案進行copy-on-writing。

先檢視資料庫有幾個資料庫檔案:12

3--根據資料檔案個數建立快照

execsp_helpdb demo01

go

我的資料庫只有乙個資料庫檔案,所以直接執行以下指令碼建立快照:12

345--建立快照

createdatabasesnap_demo_10am

on(name=demo01,filename='c:\sqltest\snapshot\snap_advlt.snap')

assnapshotofdemo01

go

如果資料庫存在於檔案組,可能涉及多個資料庫檔案建立快照的示例:12

3456

78910

1112

1314

1516

----多檔案資料建立快照

createdatabasesales_snapshot1200on

(name= spri1_dat, filename =

'c:\program files\microsoft sql server\mssql11.mssqlserver\mssql\data\spri1dat_1200.ss'),

(name= spri2_dat, filename =

'c:\program files\microsoft sql server\mssql11.mssqlserver\mssql\data\spri2dt_1200.ss'),

(name= sgrp1fi1_dat, filename =

'c:\program files\microsoft sql server\mssql11.mssqlserver\mssql\data\sg1fi1dt_1200.ss'),

(name= sgrp1fi2_dat, filename =

'c:\program files\microsoft sql server\mssql11.mssqlserver\mssql\data\sg1fi2dt_1200.ss'),

(name= sgrp2fi1_dat, filename =

'c:\program files\microsoft sql server\mssql11.mssqlserver\mssql\data\sg2fi1dt_1200.ss'),

(name= sgrp2fi2_dat, filename =

'c:\program files\microsoft sql server\mssql11.mssqlserver\mssql\data\sg2fi2dt_1200.ss')

assnapshotofsales

go

資料庫快照恢復和刪除12

3456

7--利用快著恢復資料庫

use master

restoredatabasedemo01fromdatabase_snapshot='snap_demo_10am'

go

--刪除快照

dropdatabasesnap_demo_10am;

UIView的概念與使用

property nonatomic,readonly uiview superview 獲得自己的父控制項物件 property nonatomic,readonly,copy nsarray subviews 獲得自己的所有子控制項物件 property nonatomic cgaffinetr...

備份與快照的區別

快照 資料儲存的某一時刻的狀態記錄 備份 資料儲存的某一時刻的副本 原資料存放結構 邏輯位址01 234實體地址01 2345 6789 資料abc d邏輯位址01 234實體地址01 2345 6789 資料abc d生成快照時快照位址 0 1 對應的實體地址 0 3 將會被鎖定不可更改 此時將a...

快照與備份的技術

快照是現在很多主流雲伺服器的資料備份功能,用於伺服器故障時的資料恢復,將系統資料恢復至錯誤發生以前的某個時間。快照的優勢 快照可以在數秒鐘內建立拷貝,供備份應用使用.利用快照技術,配合普通的備份軟體是這樣實現的 通過圖形的管理介面發出做快照的命令 快照功能自動尋找沒有資料改變的時刻進行拷貝,幾秒鐘之...