復制(1)SQLServer復制簡介
來源:懂視網
責編:小采
時間:2020-11-09 15:24:11
復制(1)SQLServer復制簡介
復制(1)SQLServer復制簡介:前言: SQLServer的復制技術最少從SQLServer2000時代已經出現,當初是為了分布式計算,不是為了高可用。但是到了今天,復制也成為了一種高可用技術,并且被廣泛使用。很多問題都通過復制得以解決。 復制組件: 復制說白了就是一種發布/訂閱模式,但是這種模
導讀復制(1)SQLServer復制簡介:前言: SQLServer的復制技術最少從SQLServer2000時代已經出現,當初是為了分布式計算,不是為了高可用。但是到了今天,復制也成為了一種高可用技術,并且被廣泛使用。很多問題都通過復制得以解決。 復制組件: 復制說白了就是一種發布/訂閱模式,但是這種模
前言: SQLServer的復制技術最少從SQLServer2000時代已經出現,當初是為了分布式計算,不是為了高可用。但是到了今天,復制也成為了一種高可用技術,并且被廣泛使用。很多問題都通過復制得以解決。 復制組件: 復制說白了就是一種發布/訂閱模式,但是這種模
前言:
SQLServer的復制技術最少從SQLServer2000時代已經出現,當初是為了分布式計算,不是為了高可用。但是到了今天,復制也成為了一種高可用技術,并且被廣泛使用。很多問題都通過復制得以解決。
復制組件:
復制說白了就是一種發布/訂閱模式,但是這種模式并不容易理解。下面介紹一下復制技術的一些概念。提醒一下,這里的復制在英文中不是COPY,而是Replication。它包含三個組件:發布者、分發者和訂閱者。三者缺一不可,并且均以在發布和訂閱中定義的項目為操作單元。
項目(Article):是用于復制中的可配置的最小操作單元,它可以是一個單獨的SQL Server對象,也可以是一個對象中的一個自己。這些對象通常是表、視圖、存儲過程等。還可以是表中的部分行或者列的集合。在非嚴格環境下,可以把多個對象定義為一個項目來發布和訂閱。發布(Publication):注意這里是名詞,是一組項目的邏輯集合,每個發布可以包含一個或多個項目。發布中的配置項會影響它包含的所有項目,通過這種方式,可以減少管理對象所帶來的影響。其中最重要的配置項就是復制類型。發布者(Publisher):運行發布的實例,發布者監控所有項目的變更,并且告知這些信息給分發者。分發者(Distributor):是一個跟蹤所有訂閱和發布活動變更的實例,在復制過程中充當中間人,絕大部分的變更會存儲在一個分發數據庫(存在于系統數據庫目錄下,庫名為distribution),可以是單獨的實例,也可以運行在訂閱服務器或者發布服務器上,但是通常會運行在發布者所在的機器上。訂閱者(Subscriber):同樣是一個實例,用于通過分發者,接收所有發布者傳過來的信息。訂閱(Subscription):與發布配對,用于決定哪個服務器(訂閱者)接收從發布中傳輸過來的信息。每個訂閱都會創建一個發布者和訂閱者之間的連接。復制技術存在兩種訂閱方式,推送(push )和提取(pull)。對于推送訂閱,分發者直接在訂閱數據庫更新數據,對于提取訂閱,訂閱者會周期性詢問分發者是否有新變更可用,如果有,就會自行更新自己的數據。
圖中上半部分是分發者和發布者均在一個實例上的情況,下半部分是三者都分開實例。
復制類型:
粗略來說,SQLServer有三種主要的復制類型:快照復制、合并復制和事務復制。這里先簡單介紹,后續會詳細并演示每一種類型。
快照復制:
每次運行時,會創建被發布對象的完整副本及其數據,并使用SQLServer的BCP工具把每個表的內容寫入到快照文件夾中。這類快照文件夾是由分發者創建的共享文件夾。復制過程中的所有參與者都必須能夠訪問快照文件夾。
每次快照復制開始運行后,分發者會從發布中抓取已配置的發布項的當前快照,并傳送給訂閱者,然后應用到訂閱數據庫中,當應用新快照時,訂閱數據庫上的項目會被刪除并按新快照的內容重建,這個過程只會在每次快照復制啟動時執行一次,發布和訂閱端之間沒有持續的數據流,并且這個過程是高帶寬和存儲開銷的操作。
默認情況下,其他類型的復制會在初始化時通過分發者,通過快照來同步所有的訂閱項。這種類型的復制最適合用于相對靜態的數據環境。
事務復制:
基于事務的一種復制類型,每個在發布項中的已提交的事務都會被掃描,并通過分發者傳輸到訂閱端。這個掃描操作是由日志讀取器代理(log reader agent)通過讀取發布數據庫中的事務日志完成。如果已發布項中有修改,會把修改記錄在分發者的分發數據庫中。然后從分發數據庫上,按照當前的訂閱類型,應用到訂閱者中。
事務復制可以接近實時同步,并只占用少量的發布者空間。同時,這種類型的復制可以配置成數據雙向移動,但是事務復制的最初設計是僅僅用于單向的。
合并復制:
最初的設計是用于允許修改發生在發布者和訂閱者上。同時,合并復制在訂閱者不能持續連到發布者,可能隔天連一次這種情景下也很有用。這種情景下,可以每天晚上同步,但是當一個數據被同時來自于不同發布者的數據所修改時,就會產生沖突。可以通過一些配置來解決。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
復制(1)SQLServer復制簡介
復制(1)SQLServer復制簡介:前言: SQLServer的復制技術最少從SQLServer2000時代已經出現,當初是為了分布式計算,不是為了高可用。但是到了今天,復制也成為了一種高可用技術,并且被廣泛使用。很多問題都通過復制得以解決。 復制組件: 復制說白了就是一種發布/訂閱模式,但是這種模