快照複製

快照複製

快照複製就是在某一時刻對出版數據進行一次“照相”,生成一個描述出版資料庫中數據瞬時狀態的靜態檔案,最後在規定時間將其複製到訂購者資料庫。

基本介紹

  • 中文名:快照複製
  • 外文名:snapshot replication
  • 適用條件:很少更改數據、複製少量數據等
  • 執行操作:快照代理、分發代理
特點,工作機制,適用條件,執行操作,快照代理,分發代理,

特點

快照複製並不像事務複製那樣要不斷地監視、跟蹤在出版資料庫中發生的數據變化,它所複製的內容不是 INSERT、 UPDATE、 DELETE 語句(事務複製的特徵),也不是僅限於那些被修改數據(合併複製的特徵)。它實際上是對訂購資料庫進行一次階段性的表刷新,把所有出版資料庫中的數據從源資料庫送至目標資料庫,而不僅僅是那些發生了變化的數據。如果論文很大,那么要複製的數據就很多,因此對網路資源需求較高,不僅要有較快的傳輸速度,而且要保證傳輸的可靠性。
快照複製是最為簡單的一種複製類型,能夠在出版者和訂購者之間保證事務的潛在一致性。快照複製通常使用在以下場合:不需要實時數據時,如在進行決策支持、查詢靜態表信息時;唯讀訂購者(訂購者不對出版數據進行修改),並且不需要最近的數據;使用立即更新訂購者時對資料庫的修改次數和數據量較少。

工作機制

1、發布伺服器,將要發布的資料庫整個做一個快照,
2、訂閱伺服器的快照代理程式把發布伺服器的快照讀取過來,放在本地的快照資料夾內
3、訂閱伺服器的發布代理程式把快照資料夾中的快照發布到訂閱伺服器上。歷史記錄和快照記錄在分發伺服器中。

適用條件

當符合以下一個或多個條件時,使用快照複製本身是最合適的:
1.很少更改數據。
2.在一段時間內允許具有相對發布伺服器已過時的數據副本。
3.複製少量數據。
4.在短期內出現大量更改。
在數據更改量很大,但很少發生時,快照複製是最合適的。例如,如果某銷售組織維護一個產品價格列表且這些價格每年要在固定時間進行一兩次完全更新,那么建議在數據更改後複製完整的數據快照。對於給定的某些類型的數據,更頻繁的快照可能也比較適合。例如,如果一天中在發布伺服器上更新相對小的表,但可以接受一定的滯後時間,則可以在夜間以快照形式傳遞更改。
發布伺服器上快照複製的連續開銷低於事務性複製的開銷,因為不用跟蹤增量更改。但是,如果要複製的數據集非常大,那么若要生成和套用快照,將需要使用大量資源。評估是否使用快照複製時,需要考慮整個數據集的大小以及數據的更改頻率。

執行操作

快照複製的執行僅需要快照代理和分發代理。快照代理準備快照檔案(包括出版表的數據檔案和描述檔案)並將其存儲在分發者的快照資料夾中,除此之外快照代理還要在分發者的分發資料庫中跟蹤同步作業。分發代理將在分發資料庫中的快照作業分發至訂購者伺服器的目的表中。分發資料庫僅用於複製而不包括任何用戶表。

快照代理

(1)從分發者到出版者的連線並在出版物論文中的所有表上加了共享鎖。共享鎖是為了確保快照數據的一致性,因為共享鎖將防止所有的其它用戶對表進行修改。快照代理應該被安排在資料庫活動較少期間執行。
(2) 快照代理又建立從出版者到分發者的連線,並將每一個表的表描述拷貝至分發者上的一個.sch 檔案中,該檔案存儲在分發資料庫工作目錄下的一個子目錄。如果出版物中包括索引和聲明的參考完整性,則快照代理將所有被選擇的索引寫入分發者的.idx 檔案中。
(3) 快照代理對出版者的出版表的數據執行一次快照,並把這些數據寫入分發者上的一檔案當中。該檔案存儲在分發資料庫的工作目錄下的一個子目錄中,如果訂購者有SQL Server, 則快照被做為.bcp 檔案存儲;如果一個或多個訂購者是異構資料庫源,則快照被做為字元模式的.txt 文本檔案存儲同步集合包括.sch 和.bcp 檔案,出版物中每一篇論文都有一個同步集合。
(4) 快照代理向分發資料庫的Msrepl_commands 和Msrepl_trnsactions 表中插入新行。Msrepl_command 表中的每個記錄是指明同步集合和出版者等位置的命令,Msrepl_trnsactions 表中的每條記錄是引用訂購者同步任務的命令。
(5) 快照代理最後釋放在每一個論文上的共享鎖。

分發代理

(1) 分發代理從其所在的伺服器向分發者伺服器建立連線,對於推訂購,分發代理位於分發者伺服器上;對於拉訂購,分發代理位於訂購者上。
(2) 分發代理檢查分發者的分發資料庫中的Msrepl_commands 和Msrepl_trnsactions 表從第一個表,讀取同步集合的位置並從這兩個表讀取訂購者的同步任務。
(3) 分發代理將在訂購資料庫中套用在分發資料庫的Msrepl_commands 和Msrepl _trnsactions 表中發現的命令,從而將數據檔案和描述檔案複製到訂購者伺服器上。如果訂購者不是SQL Server 資料庫,則分發代理將按要求轉換數據類型。在出版物中的所有論文都將被同步並在各表中保持事務和參考完整性。
當有很多的訂購者時,應讓分發代理運行在訂購者伺服器上,即使用拉訂購。這樣可以減輕分發者負載,提高其性能。如果使用推訂購,只要訂購者訂購出版物或在出版物創建時所規劃的時間來臨,快照代理都會被執行。但是在快照代理執行的規劃時間來臨時,只有那些沒有被同步的訂購者才會被同步。

相關詞條

熱門詞條

聯絡我們