深入淺出SQL Server Replication第一篇:走近Replication(上)
對於很多的SQL Server DBA而言,Replication不是什麼新鮮的事物了,也是大家常常說的“複製”,很多的朋友已經在項目中使用。正如其他技術一樣:有人可以使用的好,有人會抱怨技術不行。
我們AgileSharp團隊也經過了不少高可用的案例, Replication還是非常有價值的。因此,我們整理了很多的資源,我們決定發布一系列的Replication文章,一是為了協助大家瞭解Replication,另外也是為以後的講述高可用做個鋪墊。
另外,有關高可用的一些問題,請參看這篇文章談談SQL Server高可用的常見問題。
理解出版業刊物發布
提到Replication,說的通俗一點就是:傳遞資料,同步資料。既然是資料的同步和傳遞,那麼就可以即時的進行,或者隔斷時間進行。既然是同步,那麼就可能存在多個資料來源,而且資料來源的位置可以是任意的,或許在同一台伺服器上面,或者處於不同的伺服器,甚至網路。
為了使得更好的討論Replication,勢必要討論它涉及到的幾個重要的組成部分:Distributor(散發者),Publisher(發行伺服器),Subscriber(訂閱伺服器),Publication(發布),Article(項目),Subscriptions(訂閱)。為了使得大家更好的明白這些組成部分,首先,我建議大家在頭腦中把Replication同步資料的過程和出版社發送刊物給讀者結合起來思考。下面我們首先看看三個重要的組件:發行者(Publisher),分發者(Distributor),訂閱者(Subscriber)。然後在一一的展開。
下面我們就藉助上面的圖和出版社發行刊物的例子來說明Replication。
我們首先看看我們最熟悉的發行訂閱刊物的例子。
整個步驟是這樣的:
1. 讀者(Subscribers)去出版社(Publisher),要求訂閱書刊。
2. 既然有很多的資料,但是讀者在出版社中訂閱了《AgileSharp技術周刊》雜誌(稱之為Subscriptions)。
3. 出版社同意讀者的要求,並且把這個讀者加入到他們的訂閱者清單中。
4. 刊物出版了,出版社通知下面的各級的代理商(Distributor)新書出來了。
5. 各級代理商派人去把新書和訂閱者的名單拿來。
6. 代理商每次把新書銷售都做一個記錄,方便之後結算等
7. 代理商然後把新書快遞到每個讀者手裡
再談
Replication組成部分
Replication使用出版業術語表示Replication拓撲中的組件,其中有發行伺服器、散發者、訂閱伺服器、發布、項目和訂閱:
·雜誌出版商(發行伺服器)生產一種或多種刊物(發布)
·刊物(發布)包含文章(項目)
·出版商(發行伺服器)可以直接發行(分發)雜誌,也可以使用發行商(散發者)
·訂閱者(訂閱伺服器)接收訂閱的刊物(發布)
雖然雜誌術語有助於理解Replication,但重要的是要注意到 SQL Server Replication包含有這套術語未予以表述的功能,尤其是訂閱伺服器進行更新的功能以及發行伺服器將增量更改發送到發布中的項目的功能。
“Replication拓撲”定義了伺服器和資料副本間的關係,並闡明了決定資料如何在伺服器之間流動的邏輯。Replication進程(稱為“代理”)負責在發行伺服器和訂閱伺服器之間複製和移動資料。
為Replication中所涉及的組件和進程的概述。
發行伺服器
發行伺服器是一種資料庫執行個體,它通過複製向其他位置提供資料。發行伺服器可以有一個或多個發布,每個發布定義一組要複製的具有邏輯關係的對象和資料。
散發者
散發者也是一種資料庫執行個體,它起著儲存區的作用,用於複製與一個或多個發行伺服器相關聯的特定資料。每個發行伺服器都與散發者中的單個資料庫(稱作散發資料庫)相關聯。散發資料庫儲存複製狀態資料和有關發布的中繼資料,並且在某些情況下為從發行伺服器向訂閱伺服器移動的資料起著排隊的作用。在很多情況下,一個資料庫伺服器執行個體充當發行伺服器和散發者兩個角色。這稱為“本機散發者”。
當發行伺服器和散發者按各自的資料庫伺服器執行個體配置時,把散發者稱為“遠端散發者”。
訂閱伺服器
訂閱伺服器是接收複製資料的資料庫執行個體。訂閱伺服器可以接收來自多個發行伺服器和發布的資料。根據所選的複製類型,訂閱伺服器還可以將資料更改傳遞迴發行伺服器或者將資料重新發布到其他訂閱伺服器。
項目
項目用於標識發布中自主資料庫對象。一次發布可以包含不同類型的項目,包括表、視圖、預存程序和其他對象。當把表作為項目發布時,可以用篩選器限制發送到訂閱伺服器的資料的列和行。
發布
發布是一個資料庫中的一個或多重專案的集合。將多重專案分組成一個發布,使得更便於指定一組作為一個單元複製的、具有邏輯關係的資料庫物件和資料。
訂閱
訂閱是把發布副本傳遞到訂閱伺服器的請求。訂閱定義將接收的發布和接收的時間、地點。有兩種類型的訂閱:發送訂閱和提取訂閱,我們之前的那個出版社的例子就是發送訂閱,即,Push。