Microsoft SQL Server 2000 超級管理手冊(二六)

26. Microsoft SQL Server 複寫:概觀與快照式複寫

什麼是資料庫複寫?

複寫概念

設定發行與散發

快照式複寫

管理複寫

快照式複寫校調

本章總結

Microsoft SQL Server 資料庫複寫技術可用於散發資料和預存程序在不同的伺服器,複寫允許設定系統自動地將資料複製到另一個系統。使用資料庫複寫,您可依您的需求決定應複製資料的多寡,並且可決定要把資料分配到多少個系統裡。由於複寫程序是自動的,並且複寫期間資料庫會將複寫的狀態資料及複寫資料都儲存下來,因此不用擔心資料遺失的問題。如果複寫程序被中斷(如斷電),在系統恢復正常運作後,複寫會從中斷處繼續進行。

由於複寫的程序相當複雜,本書以三章來討論這個主題。本章會先學到複寫與快照式複寫的基本方法與概念, 第27章 會介紹交易式複寫, 第28章 則介紹合併式複寫,這三章提供的資訊將可讓您徹底了解 SQL Server 複寫,包括如何規劃、管理與使用。

什麼是資料庫複寫?
 

 資料庫複寫(Database Replication) 是一種從一個資料表或資料庫將資料複製或複寫到另一個資料表或資料庫的動作。使用複寫,您可以完整或指定部份的資料庫複本,分散到公司內部的其他系統。當使用 SQL Server 複寫,分配和複製資料的任務即自動進行,在複寫資料的過程中也不需要使用者的介入。由於資料複寫與程序是由 SQL Server 內部來完成,因此具備了穩定性與可復原性。如果複寫期間(或是任何 SQL Server 交易進行期間)產生錯誤,作業會在問題修復後從中斷處繼續執行。因此,許多人利用複寫取代其他在系統間搬移資料的方法。

有許多選項可用來規劃網路上的複寫。例如,您可指定要複寫的資料多寡。您可指定複寫的複本是唯讀還是可修改。也可指定資料每隔多久就需要複寫。在 〈規劃快照式複寫〉 一節裡將介紹這些與其他的選項。

複寫概念
 

本節將學習基本的資料庫複寫概念。首先了解發行和訂閱模型,以及複寫的三種類型:複寫資料、資料傳播以及複寫代理程式。

複寫元件
 

Microsoft SQL Server 2000 中的複寫是利用「發行和訂閱(publish-and-subscribe)」模式,這個模式首先在 SQL Server 6.0 中被用來建置資料的複寫,主要包括三個觀念,即 發行者(publishers)  散發者(distributors)  訂閱者(subscribers) 。「發行者」是使資料可供複寫的資料庫系統;「散發者」是包含分散資料庫或虛擬資料(pseudodata)來維護和管理複寫的資料庫系統;「訂閱者」是接受複寫資料和儲存複寫資料庫的資料庫系統。

發行者
 

發行者是由一個安裝有 SQL Server 資料庫的 Microsoft Windows 系統組成。此資料庫是被複寫資料的來源。此外也會偵測已經變更的資料,使資料確實的被複寫。發行者也需維護該站台中關於發行集的所有資訊,例如哪些資料被規劃複寫等等。依複寫類型的不同,發行者在複寫過程依需要負擔不同的工作量,本章稍後將有進一步解釋。

一個複寫環境可以包含很多訂閱者,但任何要給予發行的 發行項(article) ,亦即規劃要複寫的資料集,只能有一個發行者。(發行項將在本章稍後 〈複寫資料〉 一節裡詳細說明。)一個特定的資料集只能有一個發行者,並非意味著發行者是唯一一個可修改資料的元件,訂閱者也可修改資料甚而再發行資料,不過這需要一點技巧,您可參閱本章及後兩章。

散發者
 

散發者是包含散發資料庫和儲存中繼資料、歷程記錄資料及其他資訊的伺服器;散發者也需負責將複寫資料散發給訂閱者。發行者和散發者並不需要放在同一台伺服器上,事實上,您可能會比較喜歡用一台專用的伺服器來擔任散發者。當建立發行者時,每個發行者必須指派一個散發者,且一個發行者只能有一個散發者。這種安排方式將在本章稍後 〈規劃發行與散發〉 一節裡有詳細的說明。


說明

 中繼資料(metadata) 是關於資料的概要資料,用來在複寫中追蹤複寫作業的狀態。該資料同樣會由發行者傳播給複寫集合中的其他成員,內容包括資料結構與資料屬性的相關資訊,如某一資料行中資料的型別(數值型態、文字型態等)或資料行的長度等。


訂閱者
 

剛才已經提到,訂閱者是儲存複寫資料和接收更新的資料庫伺服器。訂閱者也可進行更新並和發行者一樣對其他系統提供服務。同時,一個訂閱者也可以作為其他系統的發行者。要讓訂閱者接收複寫資料,它必須訂閱該資料。「訂閱複寫」(subscribing to replication)指的是訂閱者接收該資料的規劃方式。而一個「訂閱」(subscription)意指您所訂閱的資料庫資訊。我們在本章的 〈規劃快照式複寫〉 一節中將討論這些元件之間的相互關連性。

複寫類型
 

SQL Server 提供了三種類型的複寫:快照式(snapshot)、交易式(transactional)和合併式(merge)。這些複寫的類型提供了複寫資料庫中不同程度的資料一致性,同時也會有不同層級的系統負荷。

快照式複寫
 

快照式複寫是最簡單易懂的複寫類型。在快照式複寫中,資料庫的快照集(snapshot)將週期性地產生並傳播給訂閱者。快照式複寫的最主要的優點在於,它不涉及到發行者和訂閱者之間持續的系統負荷;也就是說,它不需要連續的監控發行者上的資料變更,也不需持續傳送資料至訂閱者。最大的缺點在於,目前存在於訂閱者上的資料庫不一定是最新的快照集。

在很多情況下,快照式複寫已經足夠並且合適。舉例來說,當來源資料的修改只是偶爾為之的時候,像電話清單、價格表和項目描述等資訊,可以很容易的使用快照式複寫來處理,這些清單可以在每天的業餘時間進行更新。

交易式複寫
 

交易式複寫可用來將變更複寫至資料庫。使用交易式複寫,任何發行項(規劃要複寫的資料集)的變更將立即從交易記錄檔中被擷取出來並傳播至散發者。依照您複寫的規劃,利用交易式複寫可讓您的發行者與其訂閱者保持近乎一致的狀態。

當需要保持所有複寫系統為最新狀態時,應使用交易式複寫。由於每個造成系統中資料變更的交易均會個別套用至複寫系統,交易式複寫比快照式複寫佔用更多的系統資源。不過,交易式複寫比快照式或合併式複寫更能保持系統在最新的狀態。交易式複寫將在 第27章 詳細說明。

合併式複寫
 

合併式複寫與交易式複寫類似的地方在於它會持續追蹤發行項的變更。不過,合併式複寫並不會個別的傳播造成變更的交易,而是週期性的傳送一整批變更。由於合併式複寫以批次方式傳送資料,它也類似於快照式複寫。(雖然在快照式複寫中,所有規劃要複寫的資料都會傳播,而不只是變更。)合併式複寫將在 第28章 詳細說明。

複寫資料
 

您必須將要複寫的資料儲存在一個稱為發行集的物件中。一個 發行集(publication) 是由一個(含)以上的發行項組成。讓我們更詳細的看一下發行項與發行集。

發行項
 

之前已提到,一個發行項是要複寫的資料的個別集合。一個發行項可以是一整個資料表,或是由特定的資料行與資料列構成的資料表子集,或是一個預存程序。您可以使用篩選器來建立子集。「水平篩選器(horizontal filter)」可用來建立由資料列構成的子集;「垂直篩選器(vertical filter)」則可用來建立由資料行構成的子集。水平與垂直篩選器將在本章稍後詳細說明。


說明

在合併式複寫中,篩選器的定義與運作跟快照式與交易式複寫並不相同。本章與接下來的兩章將會詳細說明。


發行集
 

發行集是發行項的集合,這些發行項被組合在一起視為一基本單元。發行集將邏輯分組後的發行項視為一組複寫物件。舉例來說,您可以建立一個發行集來複寫一個由許多資料表構成的資料庫,每個資料表定義成一個發行項。在複寫資料庫時,以一個發行集來複寫整個資料庫會比資料表個別地複寫要來得更有效率。

發行集可由單一的發行項來構成,但它多半都包含有一個以上的發行項。不過,訂閱者只能訂閱發行集,而不能訂閱發行項。因此,如果您希望訂閱一個單一的發行項,您必須設定一個只有此發行項的發行集,然後訂閱這個發行集。

發送與提取訂閱
 

複寫資料可以利用數種方法來傳送。所有的傳送方法的基礎不是「發送訂閱」(push subscriptions)便是「提取訂閱」(pull subscriptions)。訂閱者可以支援同時混合了發送訂閱和提取訂閱的訂閱方式。

發送訂閱
 

當使用發送訂閱時,散發者負責為訂閱者提供更新。更新的初始化並不需要任何來自訂閱者的請求。發送訂閱在需要集中管理時很有用,這是因為這些複寫都由散發者控制和管理,而不是不同的訂閱者。換言之,複寫的初始化與排程由散發者掌控。

發送訂閱允許您在複寫排程上有更大的彈性。發送訂閱可以被設定為保持複寫情形接近即時同步,或根據規定的排程來執行更新。在本章的 〈規劃複寫〉 一節中,您將學到更多有關這些選項的內容。

提取訂閱
 

提取訂閱(pull subscription)允許訂閱者初始複寫,複寫可依排程或以手動進行。提取訂閱適用於當發行集擁有大量的訂閱者或是訂閱者連線時間不定。透過提取訂閱,訂閱者可定期連線網路及提取複寫資料。提取訂閱的另一個好處是可降低送至散發者的連線錯誤訊息。如果散發者欲初始複寫至沒有回應的訂閱者,將產生錯誤訊息。因此,如果複寫是由訂閱者在連線時初始化,就不會產生錯誤訊息。

複寫代理程式
 

數個代理程式可執行將複寫資料由發行者傳至散發者,到最後至訂閱者手中。這些代理程式包括:快照集代理程式、記錄讀取器代理程式、散發代理程式、合併代理程式及佇列讀取器代理程式。本節將學習如何管理這些代理程式。

快照集代理程式
 

「快照集代理程式」用於建立及傳播快照集至散發者(或快照點)。快照集代理程式建立複寫資料(即快照集)和建立資訊,此資訊可讓散發者代理程式用來傳播資料(此資訊即中繼資料)。快照集代理程式將資料快照儲存至散發者,或指定其他或者額外位置來儲存。快照集代理程式也負責維護複寫物件的同步狀態資訊;這項資訊儲存在發行者資料庫中。

快照集代理程式依排程的不同,可定時啟動執行作業。快照集代理程式會執行下列步驟:

  1. 建立散發者與發行者之間的連線。假設兩者未連線,則快照集代理程式不會建立快照集。當連線建立,快照集代理程式則鎖定所有發行項,以確保資料快照集的一致性。(由於鎖定後可以防止其他使用者更新資料表,因此快照集代理程式必須安排在資料庫活動的離峰時間執行。)
  2. 建立發行者與散發者之間的連線,並為每個發行項寫入一份資料表結構描述至散發者資料庫,這份資料即為中繼資料。
  3. 複製發行者上已經發行資料表中的資料,將其寫至快照集資料夾中。快照集資料夾不一定要放在散發者。如果所有訂閱者均屬於 SQL Server 系統,則快照集會儲存為 原生大量複製工具程式(native bulk copy program) (大量複製在 第24章 有討論)檔案。若有一或多個訂閱者屬於異質性資料來源,則快照集會儲存成文字檔。至此由快照集代理程式設定同步資訊。
  4. 當資料被複製後,快照集代理程式即更新於散發者資料庫資訊。
  5. 釋放每一個已經發行資料表的共用鎖定,並完成記錄歷程資料表的寫入動作。

所以,快照集代理程式僅負責建立快照集,而散發資料至訂閱者則由其他代理程式執行。

當使用快照集複寫且在發行者的資料有異動,快照集應經常更新。由於快照集固定被複製至訂閱者,故應保持最新狀態。


說明

當使用的是交易式複寫或合併式複寫,或是增加新訂閱,就無須更新快照集。


記錄讀取代理程式
 

記錄讀取代理程式用於交易式複寫。它可將標示為複寫的交易,自發行者的交易記錄移至散發資料庫中。標示為交易式複寫的每個資料庫都具有一個在散發者的記錄讀取器代理程式。記錄讀取器代理程式會在本書 第27章 詳細討論。

散發代理程式
 

散發代理程式(Distribution Agent)散發快照集與來自散發者資料庫中的交易至訂閱者。每一個發行者均有自己的散發代理程式。如果使用發送訂閱,則透過散發者的散發代理程式執行。如果使用提取訂閱,則透過訂閱者的散發代理程式執行。

合併代理程式
 

合併代理程式(Merger Agent)可搭配合併式複寫,用在合併遞增資料。當使用合併式複寫,就不使用到散發代理程式或快照集代理程式,而是使用合併代理程式連結發行者和訂閱者。在 第28章 我們會詳細討論合併代理程式。

佇列讀取器代理程式
 

佇列讀取器代理程式(Queue Reader Agent)用來傳送更新資料至具佇列更新選項的快照式複寫或交易式複寫訂閱者。這個選項允許在不使用分散式交易的情況下,在訂閱者處作變更。

監視複寫代理程式活動
 

您可使用 Enterprise Manager 監視複寫代理,步驟如下:

  1. 在 Enterprise Manger 中展開伺服器群組,然後展開指定為散發者資料庫的伺服器。
  2.  複寫監視器 按一下滑鼠右鍵,然後按一下 效能監視器 
  3. 展開 複寫監視器 資料夾,然後展開 代理程式 資料夾。
  4. 展開欲監視的代理程式資料夾。
  5. 按一下要監視的代理程式,在右方詳細資料窗格的資料列按一下滑鼠右鈕叫出快顯功能表,然後按一下 代理程式歷程 即可監視複寫代理程式歷程。

設定發行與散發
 

要設定發行與散發,可透過 設定散發暨發行精靈(Configure Publishing and Distribution Wizard) ,也可透過預存程序設定發行與散發,但透過 設定散發暨發行精靈 是較建議的做法。透過 Enterprise Manager,可利用以下的精靈作複寫設定:

  • 建立發行集精靈
     
  • 建立提取訂閱精靈
     
  • 建立發送訂閱精靈
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值