點對點交易式複寫
更新: 2006 年 12 月 12 日
點對點交易式複寫是針對特定的應用程式所設計,這些應用程式可讀取或修改參與複寫之任意資料庫中的資料。例如,線上購物應用程式就非常適用點對點複寫:透過跨越多個資料庫展開讀取資料的查詢,可提升應用程式的效能。此外,如果任意一個裝載資料庫的伺服器無法使用,便可對應用程式進行程式撰寫,將傳輸量傳送到包含相同資料副本的其他伺服器。由於活動可在所有節點間展開,因此讀取效能得到提升。該拓撲彙總了更新、插入及刪除效能,類似單一節點,因為所有變更最終都將傳播到所有節點。
點對點拓撲中的所有節點都是對等:每個節點會發行與訂閱相同的結構描述與資料。變更 (插入、更新及刪除) 可在所有節點進行。當有變更套用到給定節點時,複寫可進行辨識,以防止變更在各節點間循環多次。
附註: |
---|
存取和變更資料的自訂應用程式必須確定插入、更新和刪除是分開的,這樣從一個節點對給定資料列的修改便會在其他節點修改該資料列之前,與拓撲中的所有其他資料庫同步。如果應用程式在多個節點上對給定資料列同時執行相互衝突的修改,則請使用可處理衝突的合併式複寫。如需合併式複寫的詳細資訊,請參閱<合併式複寫概觀>。 |
標準交易式複寫假設了唯讀「訂閱者」,並且屬於階層式結構:通常由單一「發行者」向一個或多個「訂閱者」發行資料。標準交易式複寫還支援重新發行階層:更新從「發行者」傳遞到一組重新發行「訂閱者」,這些「訂閱者」再依次將更新傳遞到最終一組*「分葉節點」*「訂閱者」。更新訂閱為「訂閱者」提供了將變更發送回「發行者」的能力,但是排列仍然遵循階層式結構,因為變更在「訂閱者」和「發行者」之間移動時遵循階層式結構。相對於唯讀交易式複寫和含更新訂閱的交易式複寫,點對點複寫拓撲中各節點之間的關聯性是對等的關聯性,而不是階層式關聯性,每個節點都包含相同的結構描述和資料。
附註: |
---|
儘管更新可以在參與的多個資料庫中進行,但有必要瞭解,點對點拓撲不需要也不允許立即更新或佇列更新發行集選項。如需立即更新和佇列更新的詳細資訊,請參閱<交易式複寫的可更新訂閱>。 |
點對點拓撲
以下案例說明點對點複寫的一般用法。
有兩個參與資料庫的拓撲
以上每一個圖例均顯示兩個參與資料庫,且使用者傳輸量會透過應用程式伺服器導向資料庫。這種組態可用於從網站到工作群組應用程式的各種應用程式,具有下列優點:
- 提升讀取效能,因為讀取會在兩台伺服器間展開。
- 在需要維護或一個節點失敗時具有更高的可用性。
在兩個圖例中,讀取活動在參與的資料庫間均負載平衡,但對更新的處理方式有所不同:
- 左側圖例中,兩個伺服器間的更新是分開的;舉例來說,如果資料庫包含產品目錄,您可以讓一個自訂應用程式將名稱以 A-M 開頭之產品的更新導向節點 A,將名稱以 N-Z 開頭之產品的更新導向節點 B。隨後,更新會再複寫到其他節點。
- 而右側圖例中,所有更新均導向節點 B,然後再從該處複寫到節點 A。如果 B 離線 (例如在維護),應用程式伺服器可以將所有活動導向 A。當 B 恢復上線時,更新會傳送到該節點,且應用程式伺服器會將所有更新移回 B 或繼續將它們導向 A。
點對點複寫對以上兩種方法均支援,但是右側的中央更新範例也經常與標準交易式複寫一起使用。
有三個或更多資料庫參與的拓撲
以上圖例顯示為全世界軟體支援公司提供後端系統的三個參與資料庫,其辦事處分別設在洛杉磯、倫敦和台北。每個辦事處的支援工程師都會接聽客戶來電,同時輸入並更新每一個客戶來電的資訊。這三個辦事處的時差為八小時,這樣工作日就不會有重疊:當台北辦事處下班時,倫敦辦事處開始了一天的工作。如果當一個辦事處即將下班時仍有來電,則來電將轉到將開始工作的下一個辦事處的代表那裡。
每一處都有資料庫和應用程式伺服器,供支援工程師輸入並更新有關客戶來電的資訊。拓撲依時間分割,這樣更新就只會發生在目前正在營業的節點;隨後更新會流向其他參與的資料庫。此拓撲具有下列優點:
- 獨立而不隔離:每一個辦事處都可以獨立插入、更新或刪除資料,而且還可以共用資料,因為資料會複寫到所有其他參與的資料庫。
- 在發生失敗或要允許對任意參與資料庫進行維護時具有更高的可用性。
以上圖例顯示將節點新增到三節點拓撲。此案例中可新增一個節點:
- 因為另一個辦事處已開始上班。
- 在發生重大錯誤時提供更高的可用性,以支援維護或增加容錯功能。
- 請注意,在三個或四個節點的拓蹼樸中,所有資料庫間的發行和訂閱,在需要維護或有一或多個節點失敗時可提供最大的可用性。新增節點後,您必須針對效能以及部署與管理的複雜度來平衡可用性和延展性。
設定點對點交易式複寫
設定點對點複寫拓撲與設定一系列標準交易式發行集和訂閱類似。以下主題中描述的步驟顯示三節點系統的組態,與以上左圖中顯示的組態類似。
設定點對點交易式複寫
- SQL Server Management Studio: 如何:設定點對點交易式複寫 (SQL Server Management Studio)
- 複寫 Transact-SQL 程式設計:<How to: Configure Peer-to-Peer Transactional Replication (Replication Transact-SQL Programming)>
使用點對點複寫的考量
使用點對點複寫時請記住下列考量:
一般考量
- 點對點複寫只適用於 SQL Server 2005 Enterprise Edition。
- 所有參與資料庫應包含相同的結構描述和資料:
- 參與資料庫中的物件名稱、物件結構描述和發行集名稱應相同。
- 發行集必須允許結構描述變更被複寫 (1 設定適用於發行集屬性 replicate_ddl,這是預設值)。如需詳細資訊,請參閱<對發行集資料庫進行結構描述變更>。
- 不支援資料列和資料行篩選。
- 建議每一個節點均使用自己的散發資料庫。避免潛在的單一失敗點。
- 資料表與其他物件不能包含在單一發行集資料庫的多個點對點發行集中。
- 在建立任何訂閱前,必須先啟用點對點複寫的發行集。
- 訂閱必須使用備份或藉由「僅支援複寫」選項進行初始化。如需詳細資訊,請參閱<不使用快照集初始化交易式訂閱>。
- 不提供衝突偵測與解決。給定資料列的更新應在資料庫與其對等資料庫同步後進行。舉例來說,這可由應用程式將一組資料列的更新導向特殊節點來達成。
- 不建議使用識別資料行。使用識別時,您必須手動管理指派給每個參與資料庫中資料表的範圍。如需詳細資訊,請參閱<複寫識別資料行>主題中的<為手動識別範圍管理指派範圍>一節。
功能限制
點對點複寫支援交易式複寫的核心功能,但是不支援以下選項:
- 使用快照集進行初始化和重新初始化。
- 資料列和資料行篩選。
- 時間戳記資料行。
- 非 SQL Server 發行者或訂閱者。
- 立即更新和佇列更新訂閱。
- 匿名訂閱。
- 部分訂閱。
- 可附加訂閱和可轉換訂閱 (兩者在 SQL Server 2005 中都已被取代)。
- 共用的散發代理程式。
- 散發代理程式參數 -SubscriptionStreams 和記錄讀取器代理程式參數 -MaxCmdsInTran。
- 發行項屬性 @destination_owner 和 @destination_table。
下列屬性有特殊考量:
- 發行集屬性 @allow_initialize_from_backup 需要 'true' 值。
- 發行項屬性 @replicate_ddl 需要 'true' 值,@identityrangemanagementoption 需要 'manual' 值,而 @status 則必須設定選項 '24'。
- 發行項屬性 @ins_cmd、@del_cmd 和 @upd_cmd 的值不能設定為 'SQL'。
- 訂閱屬性 @sync_type 需要 'none' 或 'automatic' 值。
維護考量
- 下列動作需要系統停止執行 (停止所有節點上已發行資料表的活動,並確定每一個節點均從所有其他節點處接收了所有變更):
- 將節點新增至現有的拓撲
- 將發行項新增至現有的發行集
- 變更結構描述
- 從備份還原節點
如需詳細資訊,請參閱<如何:設定點對點交易式複寫 (SQL Server Management Studio)>、<How to: Quiesce a Replication Topology (Replication Transact-SQL Programming)>和<How to: Administer a Peer-to-Peer Topology (Replication Transact-SQL Programming)>。
- 如果您向點對點拓撲新增了節點,則應該僅從新增節點後建立的備份進行還原。如需詳細資訊,請參閱<如何:設定點對點交易式複寫 (SQL Server Management Studio)>。
- 您無法重新初始化點對點拓撲中的訂閱。如果您必須確定節點有資料的新副本,請在節點還原備份。
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 12 月 12 日 |
|
2006 年 7 月 17 日 |
|
請參閱
概念
其他資源
How to: Administer a Peer-to-Peer Topology (Replication Transact-SQL Programming)