sql server 作為目前主流的數據庫,用戶遍布世界各地。sql server也有一些比較成熟的主備方案,目前主要有:復制模式(發布-訂閱模式)、鏡像傳輸模式、日志傳輸模式、故障轉移集群。后面會一一介紹介紹各自的優缺點。
(一)復制模式
復制模式也被稱為發布-訂閱模式,是由主服務器進行發布消息,備份服務器進行訂閱,當主服務器數據發生變更時,就會發布消息,備份服務器讀取消息進行同步更新,中間過程延遲比較短。
復制方式是以前很常見的一種主備,速度快,延遲小,可以支持部分同步等優點,但是也有一個很明顯的缺點,因為是部分同步,如果是表修改,可以主動同步,但是如果是新增表、視圖等操作,必須在發布屬性中,將新加的表或者視圖添加到同步配置中,否則對這個表做的任何操作都不會同步。
復制模式同步,要求數據庫名稱和主機名稱必須一致,否則查找不到數據庫主機;要求數據庫不能使用端口,必須是可以通過ip直接訪問的;
主要分為以下4種發布方式:
1.快照發布
快照發布,就是將所有要發布的內容,做成一個鏡像文件,然后一次性復制到訂閱服務器,兩次快照之間的更新不會實時同步。這種方式占用帶寬較多,因此比較適用內容不是很大,或者更新不需要很頻繁的場景
2.事務發布/具有可更新訂閱的事務發布
事務發布,是在第一次設置好事務復制之后,所有發布的內容都會進行鏡像快照,訂閱服務器收到已發布數據的初始快照后,發布服務器將事務流式傳輸到訂閱服務器。當主服務器數據發生變更時,會通過日志傳遞同步給訂閱服務器,數據近似於同步更新。
此方式會對主服務器性能造成很大影響(實時同步每次變更,而不是最終變更),適用於對數據及時性要求比較嚴格主備方案,但是目前已被微軟提供的集群Always On所取代。
3.合並發布
合並發布是相當於兩台都是主服務器,都可以對數據進行更新修改等操作,然后定時將發布服務器上的內容與訂閱服務器上的內容進行合並,並根據配置保留相應內容,此種很少用。
(二)鏡像傳輸模式
數據庫鏡像傳輸,嚴格來說不是主從架構,而是主備架構,將兩台數據庫服務器通過一台中間監控服務器關聯起來,兩台服務器通過鏡像文件,實時同步數據(有延遲,延遲很短)。當主服務器宕機之后,監控服務器自動切換到備份服務器上。
此方案優點是可以快速的切換主備方案,相比較Always on集群,可以不用共享磁盤即可實現,避免了數據庫集群存儲單點故障,導致整個集群崩潰。
缺點也很明顯,無論是主備服務器,要實現同步操作,都是依賴於性能低的那一端,因此兩台服務器都要是高性能的才可以保證同步的及時性;同時備份服務器只是備份和故障轉移,不能提供從服務器的只讀訪問,因此才說是主備服務器,而且是一對一,只能有一台備份服務器。
(三)日志傳輸模式
與鏡像傳輸模式類似,是將主數據庫日志備份,發送到從服務器上,然后從服務器還原日志,更新數據。
此方式優點在於從服務器可以有多台從服務器,而且當主服務器腳本操作異常后,只需要在日志同步之前,及時攔截日志傳輸,即可保留從服務器數據,減少災難損失;此方式相較於“復制發布”模式,還有一個有點就是無論是新增表、視圖等等,都會通過日志同步給從服務器,而復制模式不行
而相應的缺點就是通過日志備份傳輸,在還原,會有較大的時間延遲。而且無法自動轉移故障,只能手動轉移。
(四)故障轉移集群
集群技術是微軟提供的,可用性最高的主備方案。它是將多台服務器通過一個共享的外部存儲區域(SAN),連接成一個資源共享的服務器群體,數據庫文件和實例,都存放並運行在該共享區域節點上,每台服務器相當於一個節點,共同訪問共享的節點實例。服務器只有一個節點處於活動狀態,當活動節點出現故障,會有其他節點主動啟動,取代當前故障點,整個過程只需要幾秒鍾,用戶無法感知。
集群有很多優點,是目前最高效的高可用技術,但是他也有很明顯的缺點,所有的節點,都依賴於共享節點實例,如果共享節點出現故障,將會導致整個集群失去作用,且很難恢復。
文章借鑒
https://www.cnblogs.com/CareySon/archive/2012/06/20/IntroductToSQLServerReplicationPart1.html