SQL Server數據庫同步問題分享(二)---操作步驟[未完,待續]
合並發布(復制)通常也是從發布數據庫對象和數據的報表快照開始。並用觸發器跟蹤在發布服務器和訂閱服務器中所做的后續數據更改和架構修改。訂閱服務器與發布服務器在連接到網絡時進行同步,並交換自上次同步以來發布服務器和訂閱服務器間發生變化的所有行。允許站點對已經復制的數據進行匿名更改,並且在晚些時候合並更改和更加需要解決沖突。(數據合並可能導致主鍵沖突)
適用的情況:
(1) 多個定語服務器可能會在不同的時間更新同一數據,這些更改將傳播到發布服務器和其他訂閱服務器。
(2) 訂閱服務器需要接手數據,脫機更改數據,並且在以后與發布服務器和其他定語服務器同步更改
(3) 訂閱服務器都需要不同的數據分區
(4) 可能會發生沖突,如果發生沖突,需要具備檢測和解決沖突的能力
(5) 應用程序需要最終的更改結果,而不是訪問中間的數據狀態。
工作原理:
合並復制允許不同的站點自主工作,然后將更新合並成一個統一的結果,由於更新是在多個服務器中進行,因此統一數據可能由發布服務器和多個定語服務器進行了更新,可能會出現沖突,合並復制提供解決沖突方案。在訂閱服務器中更新數據時,首先將數據傳播到發布服務器,然后再傳播到其他訂閱服務器。如果使用立即更新,將使用兩階段提交協議立即傳播更改。如果使用排隊更新,更改將存儲在隊列中;當網絡連接可用時,再在發布服務器中異步應用排隊事務。由於更新異步傳播至發布服務器,所以發布服務器或另一台訂閱服務器有可能更新同一數據,而在應用更新時會發生沖突。將根據創建發布時設置的沖突解決策略檢測和解決沖突。
兩種可更新訂閱:
(1) 立即更新。必須連接發布服務器和訂閱服務器才能在訂閱服務器中更新數據。
(2) 排隊更新。不必連接發布服務器和訂閱服務器即可在訂閱服務器中更新數據。可以在訂閱服務器或發布服務器脫機時進行更新最近做數據庫同步,看似非常簡單的東西,可是問題一個接一個,或許我們在本機做測試,數據量小的時候根本查不到問題所在,在正式環境中每個因素都要考慮到,這里將遇到的問題以及操作步驟與大家分享一下,希望對大家有幫助!
(一) 數據庫同步的必要性
1. 數據庫實時備份同步,在數據庫服務器出現問題時可以有正常工作時的備份
2. 數據庫實時備份同步,在數據庫訪問壓力過大時,可以用來做負載均衡
3. 數據庫實時備份,數據庫服務器可以無間斷的無損失遷移
4. 當數據庫遭受攻擊或者服務器出現問題可以啟用同步機器應急
5. 可以實現數據庫之間的合並
(二) 數據庫同步前提條件
1. 數據庫故障還原模式必須是完全還原模型
2. 所有被同步的數據庫都必須有主鍵
數據庫被同步的數據表必須有主鍵,因為大家都習慣使用自增列作為主鍵,這里不一定要指定主鍵為自增列。主鍵主要用於事務復制
3. 使用計算機名來注冊服務器
發布服務器,分發服務器和訂閱服務器都必須使用計算機名稱來進行SQLServer服務器的注冊。在企業管理器里面注冊服務器,如果需要 作為發布服務器,分發服務區和訂閱服務器都必須使用服務器名稱進行注冊,不得使用IP地址以及別人注冊,也不得使用帶有端口號
4. SQL Server必須啟動代理服務
SQLServer必須啟動代理服務,且代理服務器必須以本地機器的賬號運行
(三) SQL Server數據庫同步相關定義
(1). 復制簡介
復制是將數據或數據庫對象從一個數據庫復制和分發到另外一個數據庫,並進行數據同步,從而使源數據庫和目標數據庫保持一致。使用復制,可以在局域網和廣域網、撥號連接、無線連接和 Internet 上將數據分發到不同位置以及分發給遠程或移動用戶。
一組SQL SERVER2005復制有發布服務器、分發服務器、訂閱服服務器組成,他們之間的關系類似於書報行業的報社或出版社、郵局或書店、讀者之間的關系。以報紙發行為例說明,發布服務器類似於報社,報社提供報刊的內容並印刷,是數據源;分發服務器相當於郵局,他將各報社的報刊送(分發)到訂戶手中;訂閱服務器相當於訂戶,從郵局那里收到報刊。在實際的復制中,發布服務器是一種數據庫實例,它通過復制向其他位置提供數據,分發服務器也是一種數據庫實例,它起着存儲區的作用,用於復制與一個或多個發布服務器相關聯的特定數據。每個發布服務器都與分發服務器上的單個數據庫(稱作分發數據庫)相關聯。分發數據庫存儲復制狀態數據和有關發布的元數據,並且在某些情況下為從發布服務器向訂閱服務器移動的數據起着排隊的作用。在很多情況下,一個數據庫服務器實例充當發布服務器和分發服務器兩個角色。這稱為“本地分發服務器”。訂閱服務器是接收復制數據的數據庫實例。一個訂閱服務器可以從多個發布服務器和發布接收數據。
(2). 復制類型
(3) 快照發布
快照復制就是在某一時刻對出版數據庫進行一次照相,生成一個描述發布數據的瞬時狀態的靜態文件,然后再規定的時間復制到訂閱數據庫
快照發布特點:
(1) 不需要實時監控和跟蹤發布數據庫發生的數據庫變化
(2) 復制的內容不是Insert,Update,Delete語句數據,也不是被修改的數據
(3) 對網絡資源要求較高,而且要保證傳輸的可靠性
(4) 對訂閱數據庫進行一次刷新,將發布數據庫完全重新復制一份到訂閱數據庫
適用條件:
(1) 很少有數據更改
(2) 在一段時間內允許具有相對發布服務器已過時的數據副本
(3) 復制少量數據
(4) 在短期內出現大量更改
工作機制:
(1) 發布服務器,將要發布的數據庫整個做一個快照
(2) 訂閱服務器的快照代理程序把發布服務器的快照讀取過來,放在本地的快照文件夾內訂閱服務器的發布代理程序把快照文件夾中的快照發布到訂閱服務器上。歷史記錄和快照記錄在分發服務器中

(4) 事務發布
復制的一種類型,在訂閱服務器上應用數據的初始快照,然后當發布服務器上發生數據修改時,捕獲個別的事務並傳播到訂閱服務器。
適用環境:
(1) 希望發生增量更改時將其傳播到訂閱服務器。
(2) 從發布服務器上發生更改,至更改到達訂閱服務器,應用程序需要這兩者之間的滯后時間較短
(3) 應用程序需要訪問中間數據狀態,而不只是響應該行最終的數據更改.
(4) 發布服務器有大量的插入、更新和刪除活動發布服務器或訂閱服務器不是 SQL Server 數據庫
(5) 具有可更新訂閱的事務發布
在訂閱服務器中更新數據時,首先將數據傳播到發布服務器,然后再傳播到其他訂閱服務器。如果使用立即更新,將使用兩階段提交協議立即傳播更改。如果使用排隊更新,更改將存儲在隊列中;當網絡連接可用時,再在發布服務器中異步應用排隊事務。由於更新異步傳播至發布服務器,所以發布服務器或另一台訂閱服務器有可能更新同一數據,而在應用更新時會發生沖突。將根據創建發布時設置的沖突解決策略檢測和解決沖突。
兩種可更新訂閱:
(1) 立即更新。必須連接發布服務器和訂閱服務器才能在訂閱服務器中更新數據。
(2) 排隊更新。不必連接發布服務器和訂閱服務器即可在訂閱服務器中更新數據。可以在訂閱服務器或發布服務器脫機時進行更新
(6) 合並發布
合並發布(復制)通常也是從發布數據庫對象和數據的報表快照開始。並用觸發器跟蹤在發布服務器和訂閱服務器中所做的后續數據更改和架構修改。訂閱服務器與發布服務器在連接到網絡時進行同步,並交換自上次同步以來發布服務器和訂閱服務器間發生變化的所有行。允許站點對已經復制的數據進行匿名更改,並且在晚些時候合並更改和更加需要解決沖突。(數據合並可能導致主鍵沖突)
適用的情況:
(1) 多個定語服務器可能會在不同的時間更新同一數據,這些更改將傳播到發布服務器和其他訂閱服務器。
(2) 訂閱服務器需要接手數據,脫機更改數據,並且在以后與發布服務器和其他定語服務器同步更改
(3) 訂閱服務器都需要不同的數據分區
(4) 可能會發生沖突,如果發生沖突,需要具備檢測和解決沖突的能力
(5) 應用程序需要最終的更改結果,而不是訪問中間的數據狀態。
工作原理:
合並復制允許不同的站點自主工作,然后將更新合並成一個統一的結果,由於更新是在多個服務器中進行,因此統一數據可能由發布服務器和多個定語服務器進行了更新,可能會出現沖突,合並復制提供解決沖突方案。
