快照複製,SQL Server保障資料一致性的法寶

2021-08-29 18:44:23 字數 2800 閱讀 5525

通常情況下,快照複製有如下特點。

一是從快照這個名詞中,我們也可以看出,**是乙個靜態的過程,即只反映資料庫某個時刻的狀態,而不會反映資料庫的乙個變化過程。快照複製知識對資料庫某個設定的時間的資料進行複製,而不會對一段時間內的資料更改進行連續監視。這跟其另乙個兄弟「事務複製」有本質的區別。若把快照複製比喻成完全備份的話,則事務複製就是乙個差異備份。

二是快照複製所需要的資源比較大。快照複製是對整個資料庫進行複製,而不管其是否發生了變化。無疑,這複製的時間、傳輸的時間都會比較長,其耗費的伺服器與網路資源也會比較多。所以,快照複製的成本是比較高的。但是,在某些特定的情況下,快照複製反而可以提高效率。如對於不經常更改當資料,或者不要求保持高同步性的資料的情況下,利用快照複製來協調多個資料庫之間的資料一致性反而使比較合理的選擇。

快照複製雖然是一門比較先進的技術,但是,並不是在所有應用場景中,其都可以起到很好的效果。若使用不當,快照複製技術反而會拖資料庫管理員的後腿。根據筆者的經驗,一般在以下情況下,最好採用快照複製。

一是當資料更改量大但是不經常發生時,可以採用快照複製。如筆者有乙個客戶,在全國各地都有服裝門市店,各個店面的銷售**基本一致。由於經濟危機的影響,在年底為了盡可能的收回現金,決定在12月24日到1月3日之間下調各個門市店的銷售**。由於他們的銷售系統都是全國聯網的。**的下調需要總部的系統來完成。此時,就可以採用快照技術,讓這個**表跟各個地方的資料庫同步。在**更改完成後,複製完成的資料庫快照。一般來說,某個表的資料主要是靜態資料,不經常更改。當資料在乙個時間發生更改時,將乙個全新的資料庫快照發布到伺服器上,其效果會更好。

二是在某些決策支援系統中,採用快照複製技術的比較多。因為決策支援系統,他們只需要查詢資料,而很少對資料進行更改。同時,往往對資料庫的及時性要求也不高。如乙個銷售決策系統,他們可能只需要到上個月月底的銷售資料,而不需要到當天的銷售資料。在這種情況下,採用快照複製技術,比起其他的資料同步技術,如事務複製技術,效果會更加的好。通常情況下,在某個時期,如果允許有過時的資料副本,也就是說,對資料的及時性要求不怎麼高的系統,可以考慮採用快照技術。

三是複製資料比較少的情況下,可以採用快照複製技術。因為快照複製是一次複製整個資料庫,如果資料量比較大的話,則每次複製、傳輸的時間都會比較長。此時,採用事務複製會比較合理。其實,這跟完全備份與差異備份類似。當資料庫容量比較小時,採用完全備份反而比差異備份更加實際。因為維護起來方便。

四是可以利用快照複製來實現對sql server資料庫的異地備份。sql server伺服器本身沒有異地備份功能。往往是先在本地進行備份,然後把備份檔案拷貝到其他主機上。有了快照複製的話,可以解決這個問題。即先建立乙個分發伺服器,然後每天晚上在空餘的時候,對發布伺服器進行快照複製,傳輸給分發伺服器。如此的話,分發伺服器的內容就跟發布伺服器上的內容保持一致。再對分發伺服器執行備份,就可以完成異地備份的策略了。

所以,通常情況下,如果企業的應用場景符合上面四種情況的話,採用快照複製的效果會比較好。反之,則就需要考慮採用事務複製等其他的資料同步技術。

在使用快照複製技術的時候,筆者還有幾個善意的提醒。

一是快照複製技術可以在一定程度上實現網路資料庫的功能。sql server資料庫到現在的版本為止,都不支援資料庫橫向的擴充套件。也就是說,不主張採用多個伺服器來分擔主伺服器的負擔。微軟一直強調的是伺服器的縱向拓展,如增加伺服器的cpu數、增加記憶體等等,來改善伺服器的效能。使用快照複製技術可以使得資料的分布過程實現自動化,讓多個伺服器之間自動實現資料的同步,以適應企業不同程度的需要。當企業擴充套件時,可以增加額外的資料庫伺服器,來減輕主伺服器的工作負荷並提高資料的使用效率。這也就在一定程度上實現了多伺服器(網路資料庫)的功能。不過這個功能有個限制,請看下面乙個注意點。

二是快照複製技術基本上是單向的。也就是說,只可以從主伺服器上對資料進行快照複製,然後傳遞給其他的資料庫伺服器。其他的資料庫伺服器只能夠被動的接收主伺服器過來的快照。而不能夠把自己伺服器的資料的變化情況反饋給主伺服器。這就跟我們通常所說的網路伺服器有乙個本質的區別。網路伺服器的話,各個子伺服器上更改的資料,可以在相互的伺服器上進行同步。所以,若要利用快照伺服器來實現網路伺服器的功能,以減輕主伺服器的負荷,這裡往往有乙個部署上的技巧。就是對於子伺服器來說,只接受查詢的功能。也就是說,把一些報表生成、資料查詢的任務交給子伺服器來做。而把資料更新等任務則仍然交給主伺服器來完成。

三是對一些資料突然變更的情況,可以採用強制複製與強制訂閱。如在發布伺服器上(發布伺服器是快照複製中對於主伺服器的專業稱呼)資料發生了變更,則不管資料庫管理員設定的時間有沒有到,可以強制對發布伺服器執行快照複製。並且把它傳輸到分發伺服器上,強制採用更新後的資料。這就是強制訂閱。強制訂閱通常用在發生資料更改時必須立即傳送更改到訂閱伺服器的這種型別的應用中。如在08年1月1日早上1點某個超市要對所有的商品**進行調價。此時,調價完成後,就必須採用強制訂閱業務,同步其他的一些**查詢伺服器上的資料。當客戶在查詢機上查詢**的時候,查到的是其調整後的**。這就是強制訂閱的一種典型應用。但是,若資料變更比較頻繁,則採用這種強制訂閱的話,很可能造成系統或者網路的癱瘓。資料庫管理員在這一點上要引起重視。

四是從2005以後的版本中,包括剛推出的2008版本,引入了對internet技術的支援。通過複製,可以把資料發布到internet上,提高了資料庫中資料的使用效率。不過在internet上覆制資料時,要注意幾個問題。一是要保證發布伺服器和分發伺服器在網路防火牆的同一端,而不能夠位於防火牆的兩側,負責的話,資料複製將不會成功。二是要保證發布伺服器和分發伺服器有直接的連線,而併發只有網際網路這一種連線方式。三是目前它支援tcp/ip協議。只有這個協議正常執行,才可以進行網際網路上的複製。同時要注意的問題就是網際網路的頻寬問題。頻寬的多少,直接影響著資料複製的效率問題。

總之,快照複製的出現,為sql server各個資料庫之間資料的同步提供了一種捷徑,是保障sql server資料一致性的法寶。

複製 Amazon EBS 快照

利用 amazon ebs,您可以建立卷的時間點快照,我們為您將其儲存在 amazon s3 中。在建立快照並且已完成到 amazon s3 的複製 快照狀態為completed時 後,您可將快照從乙個 aws 區域複製到另乙個區域,也可在相同區域內複製。amazon s3 伺服器端加密 256 位...

sqlserver 開啟快照

同事總結的 記錄之 1 開啟快照 在master資料庫執行如下 alter database dbname set allow snapshot isolation on alter database dbname set read committed snapshot on 在nc資料庫下執行如下...

快照寫時複製

寫時複製 適合讀密集型 io重定向 適合寫密集型 資料備份與恢復 當儲存裝置發生應用故障或者檔案損壞時可以進行快速的 資料恢復 將資料恢復某個可用的時間點的狀態。快照的另乙個作用是為儲存使用者提供了另外乙個 資料儲存系統 當前實現快照有主要有兩種技術,一種是第一次寫時複製 copy onfirst ...