SQL Server一直以來不管版本的更迭,都維持不少的備份方式,畢竟身為資料庫。備份是除了儲存資料之外最重要的一環,網管人員備份常用的工具除了第三方軟體之外就是鏡像(Mirror)以及手動匯出.bak檔案了,因為設定簡單,幾個步驟即可完成。不過自微軟的官網文件庫中,有說明了鏡像功能未來會被移除。
接下來要討論的是另一個同步的功能 - Replication。許多人稱之為覆寫,它可以做線上同步或備份,但是因設定較繁瑣且失敗率高 (晚點會討論為何失敗率高), 所以較少人使用,網路上也較少人討論。
要了解該功能,首先要釐清伺服器的角色,微軟稱之為 "發佈者" (Publisher) 以及 "訂閱者 (Subscriber)"。發行者即為主伺服器,訂閱者則是備份伺服器,此外還有一個 "分派者 (Distributor)" ,操作中分派者用不到,因其角色是監督所有事件之進行,實務上分派者與發佈者通常為同一台。
Replication 訂閱有兩種操作模式 - Push 以及 Pull,假設 A 為發佈者, B 為訂閱者 , A 主動送給 B 稱之 Push , B 跟 A 索取則為 Pull ,實務上建議要用 Pull,因為 Push 會大量消耗 A 的資源。
至於設定方面,為甚麼失敗率會很高呢? 因為有太多權限以及路徑需要調整,不管是資料夾或是帳號等,一個小地方沒有設定正確就會出現作業系統錯誤3 (MSSQL_REPL20016) 訊息,而微軟的錯誤訊息又經常模糊不清,導致操作人員花了許多時間卻無法解決,漸漸的就愈來愈少人使用該功能了。
其實只要掌握幾個原則:1. 兩台 windows 系統登入帳號及密碼要相同 2. 發布端快照目錄要設定網路共享 3. 屬性設定不管是預設或是自選資料夾前置要填入網路路徑意即電腦名稱,就可以輕鬆完成同步備份。
Replication其實還可以做更多事如合併資料庫等,不過實務上並不常用,有興趣的讀者可自行上網搜尋。