1. 程式人生 > >SQL Server資料庫同步問題分享[未完,待續](一)

SQL Server資料庫同步問題分享[未完,待續](一)

下載網站:www.SyncNavigator.CN 

 ----------------------------------------------------------

HKROnline SyncNavigator 8.4.1 非破解版 註冊機 授權啟用教程

合併釋出(複製)通常也是從釋出資料庫物件和資料的報表快照開始。並用觸發器跟蹤在釋出伺服器和訂閱伺服器中所做的後續資料更改和架構修改。訂閱伺服器與釋出伺服器在連線到網路時進行同步,並交換自上次同步以來發布伺服器和訂閱伺服器間發生變化的所有行。允許站點對已經複製的資料進行匿名更改,並且在晚些時候合併更改和更加需要解決衝突。(資料合併可能導致主鍵衝突)

適用的情況:

(1) 多個定語伺服器可能會在不同的時間更新同一資料,這些更改將傳播到釋出伺服器和其他訂閱伺服器。

(2) 訂閱伺服器需要接手資料,離線更改資料,並且在以後與釋出伺服器和其他定語伺服器同步更改

(3) 訂閱伺服器都需要不同的資料分割槽

(4) 可能會發生衝突,如果發生衝突,需要具備檢測和解決衝突的能力

(5) 應用程式需要最終的更改結果,而不是訪問中間的資料狀態。

工作原理:

合併複製允許不同的站點自主工作,然後將更新合併成一個統一的結果,由於更新是在多個伺服器中進行,因此統一資料可能由釋出伺服器和多個定語伺服器進行了更新,可能會出現衝突,合併複製提供解決衝突方案。在訂閱伺服器中更新資料時,首先將資料傳播到釋出伺服器,然後再傳播到其他訂閱伺服器。如果使用立即更新,將使用兩階段提交協議立即傳播更改。如果使用排隊更新,更改將儲存在佇列中;當網路連線可用時,再在釋出伺服器中非同步應用排隊事務。由於更新非同步傳播至釋出伺服器,所以釋出伺服器或另一臺訂閱伺服器有可能更新同一資料,而在應用更新時會發生衝突。將根據建立釋出時設定的衝突解決策略檢測和解決衝突。

兩種可更新訂閱:

(1)     立即更新。必須連線釋出伺服器和訂閱伺服器才能在訂閱伺服器中更新資料。

(2)     排隊更新。不必連線釋出伺服器和訂閱伺服器即可在訂閱伺服器中更新資料。可以在訂閱伺服器或釋出伺服器離線時進行更新最近做資料庫同步,看似非常簡單的東西,可是問題一個接一個,或許我們在本機做測試,資料量小的時候根本查不到問題所在,在正式環境中每個因素都要考慮到,這裡將遇到的問題以及操作步驟與大家分享一下,希望對大家有幫助!

(一)  資料庫同步的必要性

  1. 資料庫實時備份同步,在資料庫伺服器出現問題時可以有正常工作時的備份
  2.  資料庫實時備份同步,在資料庫訪問壓力過大時,可以用來做負載均衡
  3.  資料庫實時備份,資料庫伺服器可以無間斷的無損失遷移
  4.  當資料庫遭受攻擊或者伺服器出現問題可以啟用同步機器應急
  5.  可以實現資料庫之間的合併

(二)  資料庫同步前提條件

  1. 資料庫故障還原模式必須是完全還原模型
  1. 所有被同步的資料庫都必須有主鍵

資料庫被同步的資料表必須有主鍵,因為大家都習慣使用自增列作為主鍵,這裡不一定要指定主鍵為自增列。主鍵主要用於事務複製

  1. 使用計算機名來註冊伺服器

釋出伺服器,分發伺服器和訂閱伺服器都必須使用計算機名稱來進行SQLServer伺服器的註冊。在企業管理器裡面註冊伺服器,如果需要             作為釋出伺服器,分發服務區和訂閱伺服器都必須使用伺服器名稱進行註冊,不得使用IP地址以及別人註冊,也不得使用帶有埠號

  1. 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)  應用程式需要最終的更改結果,而不是訪問中間的資料狀態。

工作原理:

合併複製允許不同的站點自主工作,然後將更新合併成一個統一的結果,由於更新是在多個伺服器中進行,因此統一資料可能由釋出伺服器和多個定語伺服器進行了更新,可能會出現衝突,合併複製提供解決衝突方案。