熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

用SQL實現分布式數據復制

2013-11-15 14:44:03  來源: SQL Server 

     復制的概念
  
     復制作為一個重要並且強大的技術為分布式數據的存儲和處理提供了有力支持微軟公司的SQL Server可以生成數據的拷貝並能把這些數據的拷貝分發到不同的地方自動進行數據的同步保持所有的數據拷貝具有相同的數據SQL Server采用一種稱為松散一致的復制模式在兩個數據庫之間進行復制這兩個數據庫既可以在同一台計算機上也可以在不同的計算機上彼此通過局域網(LAN)廣域網(WAN)進行連接
  
     我們公司在開發西安市國家稅務局內部網絡信息系統正是利用了SQL Server的復制功能實現全西安市分布的稅收數據的復制同步西安市國家稅局包括市局機關和下屬的個基層征管分局分布於西安市不同的地理位置彼此通過DDN專線或X專線連接構成了西安國稅局廣域網市局信息中心用Windows NT Server 構建一個Windows NT的單主域網絡環境下屬每個分局有一台運行Windows NT Server 或Windows NT Server 的服務器通過廣域網加入到單主域的環境中作為一台獨立的服務器運行各分局建有本分局的局域網網絡環境為Novell和Windows NT的混合網絡環境
  
     全西安市所有的納稅人均到指定的征管分局進行納稅登記納稅申報國稅局用FoxPro開發了基於Novell網絡環境的稅收征管軟件在各分局征收大廳由Novell的無盤工作站負責稅收數據的錄入寫入到Novell服務器上的數個DBF文件中由於稅收征管數據分布在全市不同的征管分局為全市范圍納稅信息的檢索和分析帶來困難
  
     新系統的開發在原有基礎上編制專門的數據轉換程序把存儲於Novell服務器上的DBF文件轉換到本分局Windows NT上的SQL Server數據庫中每個分局的SQL Server數據庫與市局信息中心的SQL Server數據庫進行復制及時把最新的稅收數據傳遞到市局信息中心這樣在市局信息中心就有了全市所有稅收征管數據信息中心建立Intranet Web站點用戶的計算機只要連上各分局的局域網或者通過Modem撥號到信息中心的RAS服務器就可以用IE浏覽器訪問IIS服務器由IIS服務器向SQL Server服務器發出數據請求並把結果按HTML格式返回給用戶浏覽器
  
     系統的設計采用客戶浏覽/服務器的多層結構方式客戶端采用標准的浏覽器訪問方式用戶在自己的計算機上安裝IE浏覽器(WINWINNT中已內置IE浏覽器)輸入Web 站點地址就可以進入該系統
  
     在中間層由Internet Information Server完成大多數的用戶業務規則的實現例如對用戶權限的限制數據請求的生成等IIS會根據不同的用戶所擁有的不同的權限生成不同的頁面將來當業務規則發生變化時只需要在Internet Information Server上進行相應的更改這種更改就會在系統的每一個用戶下次訪問系統時得到體現
  
     在系統的最低層由SQL Server大型關系數據庫作為支撐西安全市的稅務數據是一個以GB為單位的大型數據庫納稅數據表中的數據記錄超過數百萬條在如此大量的數據中進行快速的數據檢索和數據分析一般的數據庫軟件是難以完成的SQL Server關系型數據庫較好地完成了用戶提出的各種數據的檢索要求同時也正是利用了SQL Server的數據復制技術把近二十個分局的數據通過廣域網復制到信息中心來使用戶能快速獲取全市的納稅信息
  
     該系統實現的一個重要部分就是各分局稅收征管數據的復制SQL Server的復制有以下幾個特點
  
     基於事務
  
     有復制標志的事務從源數據庫的事務日志讀出並送到目的數據庫例如執行了一條Insert語句使源數據庫的數據發生變化這條Insert語句會被寫入到一個數據庫中我們稱之為發布數據庫(Distrbution)在適當的時候這條Insert語句會送到復制的目的數據庫並執行該Insert語句以此保證兩端的數據保持同步
  
     以三種不同的方式使用服務器
  
     ()出版(Publication)作為源數據服務器(在本系統中是各分局的SQL Server服務器)當標志復制的表(Table)的數據發生變化時產生該變化的事務被刻上復制標志由日志閱讀器(LogReader)把該事務送入分發數據庫(Distribution Database)這些事務寄存在分發數據庫中直到被傳送到目的服務器
  
     ()分發(Distribution)包含有分發數據庫分發服務器接受出版服務器的更改事務並保存到分發數據庫中在適當的時候把這些事務送入訂閱服務器缺省情況下分發服務器與出版服務器為同一台計算機當然也可以是不同的計算機
  
     ()訂閱(Subscription)接受出版服務器的出版數據
  
     使用專用的SQL Server數據庫作為復制數據的可靠隊列
  
     SQL Server的復制采用松散一致復制模式其特征是源數據與拷貝數據之間並不是在任何時刻都保持完全一致它們之間有一個延時源數據庫的變化不是立刻反應到訂閱數據庫中而是把產生變化的事務寫入一個專門的分發數據庫中(Distribution)當這些事務累計到設定值時由事務分發器(Distribution task)把事務送到訂閱服務器中訂閱服務器再執行這些事務來保持源數據與拷貝數據的一致分發數據庫完成了一種緩沖的作用當因網絡或其他問題使復制不能完成時源數據的變化會一直保存在分發數據庫中直到問題解決再自動把所有保存的事務送出並且復制兩端的數據仍保持一致這種方式使SQL Server數據的復制有極大的自適應性和可靠性最大限度減少用戶的干預
  
     SQL Server的復制主要組成部分有:日志閱讀(Log Reader)初始同步(Synchornization)數據分發(Distribution)和分發數據庫
  
     初始同步是復制真正開始執行的第一步類似於開始傳送事務前先給源數據庫照一個快照把傳送事務前的那一時刻的數據拷貝到訂閱數據庫其實質就是把那時刻的數據生成BCP文件通過網絡傳到訂閱數據庫完成初始同步後再開始由日志閱讀初始同步以後的事務並由數據分發過程傳送分發數據庫中的事務到訂閱服務器中去
  
     復制的實現
  
     下面我們結合在西安市國家稅務局內部網絡信息系統的實例介紹SQL Server的配置以及其中需要注意的事項
  
     復制前的准備
  
     ()使用一種字符集市局和分局的SQL Server的配置使用一種字符集
  
     ()允許分局服務器有足夠的事務日志空間
  
     ()最好設置MSSQL Service 和SQLExecutive Service Auto Start at Boot time
  
     復制的安裝
  
     ()運行Microsoft SQL Enterprise Manage在Server Manager窗口中選擇源數據服務器
  
     ()從Server選單選擇Replication Configuration 然後從所出現的子選單選擇Install Publishing出現Install Replication Publishing 對話框
  
     ()選擇Local-Install New Local Distribution Database選項(配置該服務器充當自身的分發服務器)
  
     在為分發數據庫建立分發數據庫設備時要根據源數據的更新率估計分發數據設備的大小盡量把分發數據庫建大些
  
     設置出版和訂閱服務器和數據庫
  
     在前面的安裝分發數據庫中如果在詢問是否在本次配置服務器選項對話框中選擇YES則出現Replication-Publishing對話框在Enable Publishin to These Servers(左邊列表)目錄中選擇訂閱的服務器在本實例中為信息中心的SQL Server在Publishing Database下(右邊列表)選擇被允許出版數據的數據庫
  
     回到Server Manager選擇訂閱服務器從Server選單選擇Replication Configuration;然後從出現的下拉選單選擇Subscribing出現Replication-Subscribing對話框在左側的Publishing Server框中選擇源數據SQL服務器在右側的框內選擇拷貝的數據庫
  
     復制數據的設置
  
     安裝SQL Server復制並設置復制的服務器和數據庫後要進行出版物的設置就是指定復制數據庫中那些表要進行復制一個出版物可以包括很多表
  
     從Server Manager窗口選擇源數據服務器
  
     從Manage選單選擇Replication然後選擇Publication對話框
  
     選擇NEW出現Edit Publications對話框為該復制數據設置一個名字選擇要復制的表到右邊的列表
  
     這裡要注意到這樣一個情況因為我們要從多個源數據庫向一個中心服務器數據庫復制數據一定要保證源數據之間不會互相影響復制的表中要有字段定義數據的來源
  
     在Edit Publications對話框選擇右邊列表中要復制的表Edit按鈕進入Manage Article對話框在最下面的Restriction Clause中輸入標識唯一源數據的條件
  
     在Manage Article對話框中選擇Scripts標簽Generate按鈕出現模式源設置畫面這裡需要設置初始同步的模式在多個源數據庫向一個中心數據庫復制數據時這裡一定要選擇DELETE DATA Using Restriction Clause
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22250.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.