Sql-Server

SQL Server 複製附加訂閱者

  • March 13, 2022

我在同一台伺服器上有一個發布者和分發者,這是事務複製。還有一個使用推送方法的活動訂閱者。

我需要使用與目前訂閱者相同的文章將新訂閱者設置到不同的伺服器。數據庫很大,不能離線,所以我打算從備份而不是新快照中進行初始化。

如果我exec sp_addsubscription在發布者上執行,我還需要執行命令exec sp_addpushsubscription_agent嗎?這會在發布者上創建 2 個分發代理,還是只能使用 1 個。

還會創建更多代理添加這個額外的訂閱者嗎?

每個訂戶都需要自己的分銷代理。

對於事務複製,涉及三種不同類型的代理,每種類型的代理都有不同的“範圍”。

  • 日誌讀取器代理——每個已發布(複製)數據庫一個——該代理讀取事務日誌,並將複製命令插入分發數據庫。

    • 如果您在數據庫中創建第一個發布,您將需要設置一個新的日誌閱讀器代理。
  • 快照代理——每個發布一個——該代理創建用於初始化新訂閱者的初始快照。

    • 如果您創建一個新的發布,您將需要設置一個新的快照代理。
  • 分發代理——每個訂閱者/發布組合一個——該代理將複製命令從分發數據庫傳送到訂閱者數據庫。

    • 如果您創建新訂閱,則需要設置新的分發代理。

因此,如果您有一個已發布的數據庫,有兩個發布,並且每個發布有兩個訂閱,那麼您總共將擁有四個分發代理。即使有多個訂閱進入同一個數據庫有重疊——這不會改變分發代理的數量。

所以是的,創建一個新的分發代理,但您不需要創建任何其他代理,因為它不是一個新的出版物。

數據庫很大,不能離線,所以我打算從備份而不是新快照中進行初始化。

雖然從備份初始化適用於這種情況,但並非絕對必要。您可以從數據庫快照創建複製快照,該快照使用寫入時複製稀疏文件來創建數據庫的時間點一致視圖,而不會在源數據庫上鎖定或阻塞。為此,請將“數據庫快照”指定@sync_methodsp_add_publication

如果訂閱者的表不是從發布者複製的表,則需要從快照初始化,因為從備份重新初始化會清除這些表。

引用自:https://dba.stackexchange.com/questions/299611