[個人筆記] SQL replication複寫機制設定筆記

  • 141
  • 0
  • 2023-09-07

只是把自己遇到的一些問題記錄下

發布者(負責把資料丟給另一台的)

訂閱者(負責接受複寫資料的DB,可能可以視為讀寫分離中 讀的那一台)

 

錯誤訊息: 项目的初始快照尚不可用。 (the initial snapshot for publication is not yet available)

- 解法1: 如果是新開的機器。可能要安裝SP4補丁檔。或某些更新(這方法對我沒用)

- 解法2:重建publisher & subscriber (我之前只是一直砍掉subscriber、一直沒效果。但是重建publisher就正常了)

 

如果有發生一些權限問題或訂閱端的錯誤訊息是無法遠程連結..

 

其他心得 (2023/1)

不確定是否有這樣的設計。partition的配置都沒同步過去 & index的同步似乎是寫完資料才處理?(如果是1000萬+筆)會很慘。

因此建議採去。先建好table & index。然後同步端設定>資料表已存在>則保留(?)還是blabla的那個設定。

但是還遇到了replication的資料表。有使用到truncate table來清資料。但是replication的資料表不支持此語法 (直到新版SQL似乎還是不能)

所以…最後暫時放棄了Replication的方案了。

 

發布端 (Publication)

要確保 [發布端] 複寫資料夾D:/SQL_Server/RepliData…. 類似這樣的路徑

  • 網路資料夾分享
  • everyone權限開啟(或更謹慎一點的控管)

如果索引(非叢集)也要同步。建置的時候。Article property 要設置 true
並且建議設定訂閱端(Subcribe)之前 

要先確定發布者(Publisher)這邊的SQL排程歷史紀錄,沒有出現錯誤

當針對大型table (千萬筆)的資料表設置Publication後。會開始產生sanpshot。CPU有明顯上升大概多了30%(因此建議還是在停機時段處理會比較安全)

 

 

查看發布者那邊的配置(更進階的砍掉重練是對著SSMS複寫分類按右鍵禁用全部)

select * from msdb..MSdistpublishers
select * from distribution..MSpublisher_databases
select * from distribution..MSpublications
select * from distribution..MSarticles
select * from distribution..MSsubscriptions

 

發布端的路徑要用UNI路徑

\\WIN-XXX-ServerName\repldata\

 

如果在訂閱端執行代理複寫行為一直行不通

可以改成在發布端執行代理複寫,或許就可以了(但我猜這種方式對主DB負擔較大?)