現在假如有一個這樣的應用,有一個游戲服務商在推廣一個大型游戲的時候,現在架設了多台數據庫服務器,為了數據的便於統計,最終這些數據可以自動的轉入到指定存儲的另一台服務器中,這時候就會面臨著一個這樣的問題,如何保證這些多台數據庫之間的數據的同步呢?
我們就可以使用復制的辦法,復制是將一組數據或數據庫對象從一個數據庫復制和分發到另外一個數據庫,從而使不同的服務器用戶都可以在權限的許可的范圍內共享這份數據。使用復制,可以在局域網和廣域網上將數據分發到不同位置,可以確保分布在不同地點的數據自動同步更新,從而保證數據的一致性。
在SQL Server 2005中,復制主要需要有發布服務器、分發服務器和訂閱服務器,源數據所在的服務器是發布服務器,負責發表數據。發布服務器把要復制的數據或對象發生的改變復制到分發服務器,分發服務器用來接收數據的所有改變,它包含一個分發數據庫,並保存這些改變,再把這些改變分發給訂閱服務器。在復制過程中,發布服務器是一種數據庫實例,它通過復制向其他位置提供數據,分發服務器也是一種數據庫實例,它起著存儲區的作用。訂閱服務器是接收復制數據的數據庫實例。一個訂閱服務器可以從多個發布服務器上接收數據。
復制主要有三種形式:快照復制、事務復制、合並復制。快照復制將數據以特定時刻的瞬時狀態分發,而不監視對數據的更新。如果發生了同步,就會生成完整的快照並將其發送到訂閱服務器;事務性復制通常從發布數據庫對象和數據的快照開始。拍攝初始快照後,隨後在發布服務器中所做的數據更改和架構修改通常在修改發生時便傳遞給訂閱服務器。數據更改在訂閱服務器中應用的更改順序以及更改所處的事務邊界與在發布服務器中相同。合並復制通常也是從發布數據庫對象和數據的報表快照開始。並用觸發器跟蹤在發布服務器和訂閱服務器中所做的後續數據更改和架構修改。訂閱服務器與發布服務器在連接到網絡時進行同步,並交換自上次同步以來發布服務器和訂閱服務器間發生變化的所有行。
現在來通過SQL Server 2005來建立數據復制的操作 。
1、先在兩台服務器上建立兩個完全一樣的數據庫、表結構及存放的數據;
2、在服務器一上打開SQL Server 2005,然後選擇“復制”——>“本地發布”,然後右鍵選擇新建發布;
3、在新建發布向導中首先要求選擇分發服務器,在操作中我們暫選擇本機作為分發服務器,所以選擇默認值。
4、選擇快照的路徑,一般情況下選擇默認路徑,根據向導選擇要發布的數據庫;
5、選擇發布的內容,可以選擇發布表,也可以發布其他的數據庫對象,比如函數。在選擇某一個表之後還可以選擇對應的列;
6、發布的內容設置好後,然後運行SQL代理的賬號。然後再按照向導給建立的復制名命。這樣就建立好了發布和分發的應用了。
下面接著來配置訂閱的應用。
1、先在服務器二上打開SQL Server 2005,然後選擇“復制”——>“本地訂閱”,然後右鍵選擇新建訂閱;
2、選擇發布服務器,在發布服務器的下接列表中找到對應已經建立好的SQL SERVER 發布服務器,然後就可以看到剛才新建的發布復制名稱;
3、選擇訂閱方式。在這裡可以選擇請求訂閱,然後選擇訂閱的本地需要同步的數據庫;
4、設置完本地數據庫之後要求設置運行代理的安全性,設置成SQL 代理賬號。訂閱的設置就已經完成。
下面我們就可以做一個操作的示范,在服務器一上面新插入一條記錄後,然後再去服務器二上面看看對應表的數據,會發現到,也會看到更新後的數據。