標籤:server 讀者 支援 查看 錯誤記錄 service 建立 info cli
原文:sql server 本地複製訂閱 實現資料庫伺服器 讀寫分離
再前段echosong 寫了一遍關於mysql 資料同步實現業務讀寫分離的文章,今天咱們來看下SQL Server的複製訂閱實現資料的讀寫分離
比起mysql的複製,SQL server 複製相對強大
一、 名詞解釋1、複製的 機構組成(類比報紙流通): 1)、發行伺服器(報社出版)
生產維護資料來源,審閱所有出版資料的更改 發送給 散發者(郵局)
2)、散發者 (郵局)
散發者包括散發資料庫,並且儲存中繼資料、曆史資料和事務。
3)、訂閱伺服器(訂報人,讀者)
保持資料的副本,並接收對所修改出版的更改。取決於所實現的複製選項,可能還允許更新者更新資料,並將其複製回伺服器或者其它訂閱者。
2、複製類型 1)快照式複寫
快照式複寫是完全按照資料和資料庫物件出現時的狀態來複製和分發它們的過程。快照式複寫不需要連續地監控資料變化,因為已發佈資料的變化不被增量地傳播到訂閱伺服器,而是周期性的被一次複製。 適用於 資料主要是靜態,比如將資料倉儲複製到資料集市中一段時間內允許有已淘汰的資料拷貝的情況
2)事務複製
使用事務複製,初始快照集資料將被傳播到訂閱伺服器,因此該訂閱伺服器就具有了一個所謂的初始負載,這是可以開始工作的內容。當出版伺服器上發生資料修改時,這些單獨的事務會被及時捕獲並複製到訂閱伺服器。並保留事務邊界,當所有的改變都被傳播後,所有訂閱伺服器將具有與傳播伺服器相同的值 需要資料修改經常在其發生的幾秒鐘內被傳播到訂閱伺服器需要事務是原子性的 訂閱伺服器在通常是串連到出版伺服器上的 應用程式不能忍受訂閱伺服器接收改變的高延遲
3)合併式複寫
合併式複寫允許一組網站自治工作,線上或離線。然後在將來的某個時刻,資料按照在多個已複製網站上發生的修改或插入情況被合并成一個統一的結果。在訂閱伺服器上應用初始快照集,作為其初始負載,然後SQL Server跟蹤在出版伺服器上和訂閱伺服器上已發佈資料的更改。資料按照預先定義或調度的時間,或者按需在伺服器間同步。然後更新被獨立應用在多個伺服器上。這意味著相同的資料可能由出版伺服器或多個訂閱伺服器進行了更新,因而當資料更新合并時將發生衝突。 多個訂閱伺服器需要在不同時刻更新資料,並將這些資料傳播到出版伺服器和其他訂閱伺服器。 訂閱伺服器需要接收資料,離線更改資料,然後將更改同步到出版伺服器和其他訂閱伺服器 應用程式的延遲需求可高可低 網站的自治性很關鍵
3、複製模式 1)、推模式(Push)
分發代理程式在散發者上運行,即為推模式
2)、拉模式(Pull)
分發代理在訂閱伺服器運行,即為拉模式
二、工作流程1、快照式複寫
1)、發行伺服器,將要發布的資料庫整個做一個快照,
2)、訂閱伺服器的快照代理程式把發行伺服器的快照讀取過來,放在本地的快照檔案夾內
3)、訂閱伺服器的發布代理程式把快照檔案夾中的快照發布到訂閱伺服器上。記錄和快照記錄在散發者中。
2、事務複製
1)、初始資料和架構(通過快照式複寫來完成),從這裡可以體現出來快照式複寫,是所有複製的基礎 。快照式複寫在訂閱伺服器上建立了訂閱資料庫。
2)、發行伺服器的資料修改後,寫交易記錄,
3)、散發者的日誌讀取代理讀取發生改變的資料的交易記錄,把這些交易記錄儲存在發行伺服器的發行集資料庫中。
4)、散發者的分發代理程式 將散發資料庫中的交易記錄分發到各個訂閱伺服器上,然後把記錄和錯誤記錄在散發資料庫中
三、具體操作流程 1、發布複製(推送模式)
1)、展開SQL Server 2008 伺服器下的 【複製】 節點,會發現有【本地發布】和【本機訂閱】兩個節點,右擊【本地發布】節點,選擇【建立發布】
2)、設定散發者和發行伺服器為同一台(推送模式)
3)、選擇資料元位置
4、選擇同步的資料庫物件
5、發布複製類型
6、設定同步計劃
7、設定代理安全性
8、發布完成取名字
2、訂閱複製
1)、右鍵點擊【本機訂閱】節點,開啟,【建立訂閱嚮導】對話方塊
2)搜尋發行伺服器去訂閱
3)、由於上面發布的和分發的是同一台伺服器所以選擇發送訂閱
4)、選擇訂閱接受的對象(也就是擷取資料的資料庫,上面發布了 test 庫 pce_admin_info,這裡用原生test1來接受,同步時如果沒有表會自動在test1庫建立表)
5)、設定串連安全性
6)後面一直預設點下一步,完成訂閱
3、查看效果
同步上面步驟,把 A伺服器的 test 庫 的 pce_admin_info 表同步到 B伺服器的 test1 ,在第一次執行訂閱後自動建立了表,之後會根據計劃設定同步的更新表pce_admin_info
四、注意事項
1、無論是發布複製還是訂閱服務 一定要在sql server安裝的伺服器本機操作,不能是遠端連線操作
2、將這個檔案夾共用出來,然戶用共用資料夾的UNC路徑作為快照檔案夾路徑。這個檔案夾要賦予SQL Server Service和Agent Service讀寫權限。
3、sql server 另外一種鏡像實現資料副本,鏡像是只能主伺服器讀寫,從伺服器是不支援讀寫的,而複製是可以從伺服器讀 主伺服器寫。所以我們實現讀寫分離往往是通過資料庫的複製來實現。
4、UNC 可以做的網路驅動映射或者FTP串連
5、再發行伺服器設定訂閱的時候 系統會提示使用電腦名稱,而在不同的網路內電腦名稱不可以直接存取,這個時候需要設定別名,別名要注意64 client 和32client都要加
五、補充
同步複製的時候訂閱伺服器會產生相應的表的刪除,修改,添加的儲存過來來執行資料
-->
左邊的預存程序由右邊的調用預存程序控制,選項可以選擇其他的就不會產生預存程序
當我們業務需要 需要對預存程序進行修改,我們修改預存程序後,如果改變了來源資料的結構,這個時候預存程序又會初始化,如果我們想讓預存程序保持不變可以做以下修改
上面右圖的true 改為false 就 ok
sql server 本地複製訂閱 實現資料庫伺服器 讀寫分離