SQL SERVER 2012 使用訂閱發布同步數據庫


    軟件做大了,客戶就多了,一個數據庫服務器是遠遠不夠的,當有一台數據服務器卦掉,那整個系統就會崩潰,所以必須考慮到數據庫的自動同步與備份,當一台數據庫服務
器宕機,自然就有用一台數據服務器啟動起來保證整個軟件系統的可用性。備份數據庫與總數據庫之間既統一又獨立。這就是業務,技術服務於業務,那么擺在我們面前的問題是
如何讓數據既統一又獨立?其實SQLServer已經為我們提供了很好的解決方案:發布、訂閱。
	打開SQL Server2012的對象資源管理器我們可以看到里面有一個”復制“節點。(圖1)
1
 
 
先來簡單了解下復制的概念:
    復制是將數據或數據庫對象從一個數據庫復制和分發到另外一個數據庫,並進行數據同步,從而使源數據庫和目標數據庫保持一致。使用復制,可以在局域網和廣域網、
撥號連接、無線連接和Internet上將數據分發到不同位置以及分發給遠程或移動用戶。
    復制由發布服務器、分發服務器、訂閱服服務器組成:
  1. 發布服務器:數據的來源服務器,維護源數據,決定哪些數據將被分發,檢測哪些數據發生了修改,並將這些信息提交給分發服務器。
  2. 分發服務器:分發服務器負責把從發布服務器拿來的數據傳送至訂閱服務器。
  3. 訂閱服務器:訂閱服務器就是發布服務器數據的副本,接收維護數據。
點開復制節點我們看到其下面的兩個自節點:“本地發布”、“本地訂閱”(圖2)
1
舉個經典的例子解釋下發布、訂閱:
    發布服務器類似於報社,報社提供報刊的內容並印刷,是數據源;分發服務器相當於郵局,他將各報社的報刊送(分發)到訂戶手中;訂閱服務器相當於訂戶,從郵局那
里收到報刊。
    發布服務器通過復制向其他位置提供數據,分發服務器起着存儲區的作用,用於復制與一個或多個發布服務器相關聯的特定數據。每個發布服務器都與分發服務器上的單
個數據庫(稱作分發數據庫)相關聯。分發數據庫存儲復制狀態數據和有關發布的元數據,並且在某些情況下為從發布服務器向訂閱服務器移動的數據起着排隊的作用。在很
多情況下,一個數據庫服務器實例充當發布服務器和分發服務器兩個角色。這稱為“本地分發服務器”。訂閱服務器是接收復制數據的數據庫實例。一個訂閱服務器可以從多
個發布服務器接收數據。
	好了先消化一下理論,下面我們創建一個發布服務器:
	在“本地發布”節點上右擊->新建發布由於我沒有安裝復制組件所以出了點兒意外(圖3)
1

重新運行SQL Server2012安裝向導,選擇SQL Server復制功能(圖4)

1

下一步->下一步->直到完成。

這次再點擊“新建發布”,界面不一樣了(圖5)
1

點擊下一步(圖6)

1

我們先實驗一下“本地分發服務器”模式直接點擊下一步,由於我之前沒有啟動SQL Server代理所以又出了點兒小意外(圖7)

1

微軟已經解釋的很清楚了,直接點擊下一步(圖8)

1

到了這一步是不是感到有些迷惑?好了我們先消化幾個概念:

推訂閱:推訂閱是指由發布服務器將所有發生修改過的數據復制給訂閱者,推薦使用推訂閱。    拉訂閱:拉訂閱是指訂閱服務器在經過一段時間就會向發布服務器要求復制出版數據庫發生的變化的數據。    發布,分發,訂閱可以部署在獨立的服務器上面也可以部署在一台sql server 上面,分開部署可以提高性能。

點擊下一步,鍵入數據庫發布向導(選擇要發布的數據庫)(圖9)

 

1

 

點擊“下一步” 如圖10

 

 

1

微軟的發布類型說明似乎不太好理解:

(1)快照發布   快照發布指在某一時刻給出版數據庫中的出版數據照相,然后將數據復制到訂閱者服務器。快照復制實現較為簡單,其所復制的只是某一時刻數據庫的瞬間數據,快照

復制是將整個出版物傳送給訂閱者,就是在某一時刻將出版數據進行一次“照相”,生成一個描述出版數據庫中數據的當前狀態的一個文件,然后在相應的時間將其復制到

訂閱的數據庫上,快照復制並不是不停的監視出版數據庫中發生的變化情況,它是對出版數據庫進行一次掃描,把所有出版數據中的數據從源數據庫送至目標數據庫,而不

僅僅是變化的數據。如果數據量很大,那么要復制的數據就很多。因此對網絡資源要求很高,不僅要有較快的傳輸速度,而且要保證傳輸的可靠性。快照復制是最為簡單的

一種復制類型,能夠在出版者和訂閱者之間保證數據的一致性。快照復制通常使用在以下場合:在一定時間內出現大量的更改的操作,但數據總量不大,變化周期較長。

(2)事務發布   快照發布是將整個數據集發送給訂閱服務器,由於體積大而造成復制周期較長,會形成復制滯后問題。那么事務復制使用事務日志來生成將復制到訂閱服務器的事務,

因為它只復制事務也就是變化,所以滯后也比快照復制低得多。

(3)合並發布   合並發布是為移動用戶設計的,可以在發布服務器或是訂閱服務器處執行修改,在合並代理運行時,這些修改將同步,多用於發布服務器與訂閱服務都修改數據的情況下。

工作原理如下:在要復制的每個表上實現觸發器,並使用包含GUID列唯一標識要復制的表中的每一行。對其中的任何一個表進行修改時,都會將更改記錄到一個數據表中,在

合並代理運行時,它收集數據表中的GUID,這些GUID指出了在發布服務器和訂閱服務器處修改過的行。對於只在發布服務器或是訂閱端修改的數據則直接進行相應操作,如

INSERT,UPDATE,DELETE,如果雙方都有GUID則按照用戶指定的方式解決沖突,默認發布服務器優先。

我們先選擇最簡單的發布模式(快照發布),點擊下一步,由於我沒有在Publish數據庫中建立任何數據表所以又出了點兒意外(圖11)

 

1

建立UserList數據表(圖12)

1

 

繼續我們的發布之旅(圖13)

1

要發布的對象已經划分的很詳細了,從數據表到數據表的每一個字段,項目屬性也非常詳細(圖14)

 

 

1

點擊下一步,查看右上角的“添加”按鈕,還有更加令人驚喜的篩選器(圖15)

1

 

微軟做事總是很成熟,我們能想到的他都想到了。點擊下一步(圖16)

1

快照代理,它生成架構,數據以及跟蹤復制過程所需的數據;

欣賞一下快照代理的核心界面(圖17,圖18)

1

 

image

設置賬戶(圖19)

1image

點擊下一步(圖20)

image

為發布起個名字吧(圖21)

1

總算可以點完成了,大功告成(圖22)

image

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM