共用方式為


點對點事務複製

點對點複寫提供向外延展和高可用性解決方案,方法是跨多個伺服器實例維護數據複本,也稱為 節點。 以事務複製為基礎,點對點複製會以近乎即時的方式傳播交易一致變更。 這可讓需要向外延展讀取作業的應用程式,將讀取從用戶端分散到多個節點。 由於數據會以近乎即時的方式跨節點維護,因此點對點複寫會提供數據備援,進而增加數據的可用性。

請考慮 Web 應用程式。 這可以從點對點複寫中獲得以下優勢:

  • 目錄查詢和其他讀取會分散到多個節點。 這可讓效能在讀取增加時保持一致。

  • 如果系統中的其中一個節點失敗,應用層可以將該節點的寫入重新導向至另一個節點。 這會維護可用性。

  • 如果節點需要維護,或整個系統需要升級,則每個節點都可以離線並新增回系統,而不會影響應用程式的可用性。

雖然點對點復寫可以提升讀取作業的擴展性,但拓撲的寫入效能類似於單一節點的寫入效能。 這是因為最終所有的插入、更新和刪除都會傳播到所有節點。 複寫可辨識變更已套用至指定節點的時間,並防止變更在節點中迴圈一次以上。 我們強烈建議將每行資料的寫入操作僅限於某個節點,理由如下:

  • 如果數據列在多個節點上修改,當數據列傳播至其他節點時,可能會導致衝突,甚至是遺失的更新。

  • 復寫變更時,一律會涉及一些延遲。 對於需要立即看到最新變更的應用程式,跨多個節點動態負載平衡應用程式可能會有問題。

點對點複寫包括一個選項,可以在點對點網路結構中啟用衝突偵測。 此選項有助於防止因未偵測到的衝突所造成的問題,包括不一致的應用程式行為和遺失的更新。 啟用此選項時,預設會將衝突的變更視為導致散發代理程式失敗的嚴重錯誤。 發生衝突時,拓撲會維持不一致的狀態,直到以手動方式解決衝突,而且數據在整個拓撲中會保持一致。 如需詳細資訊,請參閱 點對點複寫中的衝突偵測

備註

若要避免潛在的數據不一致,請確保在點對點拓撲中避免衝突,即使啟用了衝突偵測,也要注意避免發生衝突。 為了確保特定數據列的寫入作業只會在一個節點上執行,存取和變更數據的應用程式必須分割插入、更新和刪除作業。 此數據分割可確保對源自一個節點之指定數據列的修改會與拓撲中的所有其他節點同步處理,然後再由不同的節點修改數據列。 如果應用程式需要複雜的衝突偵測和解決功能,請使用合併式複寫。 如需詳細資訊,請參閱合併式複寫和偵測和解決合併式複寫衝突

點對點拓撲

下列情境展示點對點複寫的典型用法。

具有兩個參與資料庫的拓撲

點對點複寫、兩個節點

上述兩個圖例都顯示兩個參與的資料庫,使用者流量會透過應用程式伺服器導向至資料庫。 這個設定可用於各種應用程式,從網站到工作組應用程式,並提供下列優點:

  • 改善讀取效能,因為讀取分散在兩部伺服器上。

  • 如果需要維護,或一個節點發生失敗,則提供更高的可用性。

在這兩個圖例中,讀取活動會在參與的資料庫之間進行負載平衡,但更新會以不同的方式處理:

  • 左側將更新分配到兩部伺服器之間。 例如,如果資料庫包含產品目錄,您可以針對以 A 到 M 開頭的產品名稱,將自定義應用程式直接更新至節點 A ,並將節點 B 的更新導向至以 N 到 Z 開頭的產品名稱。然後,更新會復寫至其他節點。

  • 在右側,所有更新都會導向至節點 B。從該處,更新會復寫至節點 A。如果 B 離線(例如維護),應用程式伺服器可以將所有活動導向 A。當 B 上線時,更新可以流向它,而應用程式伺服器可以將所有更新移回 B ,或繼續將它們導向 A

點對點複製可以支援這兩種方法,但右側的中央更新範例也常與標準交易複製一起使用。

具有三個或多個參與資料庫的拓撲

點對點複寫至分散位置 點對點複寫至分散位置

上圖顯示三個參與的資料庫,為全球軟體支援組織提供數據,並在洛杉磯、倫敦和台北設有辦事處。 每個辦公室的支持工程師都會撥打客戶電話,並輸入並更新每個客戶通話的相關信息。 三個辦公室的時區相隔八小時,因此工作日沒有重疊。 隨著臺北辦事處的關閉,倫敦辦事處當天開放。 如果一通電話在一個辦公室即將關閉時仍在進行,該電話將轉接到下一個即將開門的辦公室的代表。

每個位置都有資料庫和應用程式伺服器,供支援工程師在輸入並更新客戶通話的相關信息時使用。 拓撲會依時間分割。 因此,更新只會發生在目前為商務開啟的節點上,然後更新會流向其他參與的資料庫。 此拓撲提供下列優點:

  • 獨立而不隔離:每個辦公室都可以獨立插入、更新或刪除數據,但也可以共用數據,因為它會復寫到所有其他參與資料庫。

  • 可在發生故障或需要對一個或多個參與資料庫進行維護時,提高可用性。

    點對點復寫,三個和四個節點

上圖顯示將節點新增至三節點拓撲。 在此案例中可以新增節點,原因如下:

  • 因為另一個辦公室已開設。

  • 為了在磁碟故障或其他重大故障發生時,提供更高的可用性以支持維護,或增強容錯能力。

請注意,在三個節點和四個節點拓撲中,所有資料庫都會發佈並訂閱所有其他資料庫。 如果維護需求或一或多個節點失敗,這會提供最大可用性。 隨著節點的新增,您必須平衡可用性和延展性需求,以符合效能和部署和管理的複雜性。

設定點對點複寫

設定點對點複製拓撲結構與設定一系列標準交易式的發行集及訂閱非常類似。 下列主題所示步驟顯示三節點系統的設定,類似於前述圖示中左側展示的組態,該圖展示對等拓撲結構。

使用點對點複製的考慮

本節提供使用點對點復寫時應考慮的信息和指導方針。

一般考慮

  • 對等復寫僅適用於 SQL Server 企業版。

  • 參與點對點複寫的所有資料庫都應該包含相同的架構和數據:

    • 物件名稱、物件架構和發行集名稱應該相同。

    • 發行集必須允許復寫架構變更。 (這是發行集屬性replicate_ddl1 設定,這是預設設定。如需詳細資訊,請參閱在發行集資料庫上進行架構變更

    • 不支援行列篩選。

  • 我們建議每個節點都使用自己的分配資料庫。 這可消除單一失敗點的可能性。

  • 數據表和其他物件不能包含在單一發行集資料庫的多個點對點發行集中。

  • 建立任何訂閱之前,必須先啟用發行集以進行點對點複寫。

  • 訂閱必須使用備份或使用 [僅復寫支援] 選項來初始化。 如需詳細資訊,請參閱 初始化不使用快照集的交易式訂閱

  • 不建議使用識別欄位。 使用身分識別時,您必須手動管理指派給每個參與資料庫之數據表的範圍。 如需詳細資訊,請參閱 複寫識別欄位中的「手動識別範圍管理的範圍分配」一節。

功能限制

點對點復寫支援事務複製的核心功能,但不支援下列選項:

  • 使用快照初始化和重新初始化。

  • 列和行篩選。

  • 時間戳欄位。

  • 非 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需要noneautomatic的值。

維護考慮

下列動作需要系統暫停進行。 這表示停止所有節點上已發行數據表上的活動,並確定每個節點都已收到所有其他節點的所有變更。

  • 將 SQL Server 2005 節點新增至現有的拓撲

  • 將文章新增至現有的出版物

  • 進行架構變更

  • 將節點從備份中還原

如需詳細資訊,請參閱停止複製拓撲(複寫 Transact-SQL 程序設計)和管理點對點拓撲(複寫 Transact-SQL 程序設計)。

  • 如果您將新節點新增至對等網路拓撲,則應該只還原從新增節點之後建立的備份。

  • 您無法在點對點拓撲中重新初始化訂用帳戶。 如果您必須確定節點有新的數據復本,請在節點還原備份。

另請參閱

管理點對點拓撲 (複寫 Transact-SQL 程式設計)
備份和還原快照與事務複寫的策略
交易式複製的發行類型