sql server 作為目前主流的數據庫,用戶遍布世界各地。sql server也有一些比較成熟的主備方案,目前主要有:復制模式(發布-訂閱模式)、鏡像傳輸模式、日志傳輸模式、故障轉移集群。后面會一一介紹介紹各自的優缺點。
(一)復制模式
復制模式也被稱為發布-訂閱模式,是由主服務器進行發布消息,備份服務器進行訂閱,當主服務器數據發生變更時,就會發布消息,備份服務器讀取消息進行同步更新,中間過程延遲比較短。
復制方式是以前很常見的一種主備,速度快,延遲小,可以支持部分同步等優點,但是也有一個很明顯的缺點,因為是部分同步,如果是表修改,可以主動同步,但是如果是新增表、視圖等操作,必須在發布屬性中,將新加的表或者視圖添加到同步配置中,否則對這個表做的任何操作都不會同步。
復制模式同步,要求數據庫名稱和主機名稱必須一致,否則查找不到數據庫主機;要求數據庫不能使用端口,必須是可以通過ip直接訪問的;
主要分為以下4種發布方式:
1.快照發布
快照發布,就是將所有要發布的內容,做成一個鏡像文件,然后一次性復制到訂閱服務器,兩次快照之間的更新不會實時同步。這種方式占用帶寬較多,因此比較適用內容不是很大,或者更新不需要很頻繁的場景
2.事務發布/具有可更新訂閱的事務發布
事務發布,是在第一次設置好事務復制之后,所有發布的內容都會進行鏡像快照,訂閱服務器收到已發布數據的初始快照后,發布服務器將事務流式傳輸到訂閱服務器。當主服務器數據發生變更時,會通過日志傳遞同步給訂閱服務器,數據近似於同步更新。
此方式會對主服務器性能造成很大影響(實時同步每次變更,而不是最終變更),適用於對數據及時性要求比較嚴格主備方案,但是目前已被微軟提供的集群Always On所取代。
3.合並發布
合並發布是相當於兩台都是主服務器,都可以對數據進行更新修改等操作,然后定時將發布服務器上的內容與訂閱服務器上的內容進行合並,並根據配置保留相應內容,此種很少用。
(二)鏡像傳輸模式
數據庫鏡像傳輸,嚴格來說不是主從架構,而是主備架構,將兩台數據庫服務器通過一台中間監控服務器關聯起來,兩台服務器通過鏡像文件,實時同步數據(有延遲,延遲很短)。當主服務器宕機之后,監控服務器自動切換到備份服務器上。
此方案優點是可以快速的切換主備方案,相比較Always on集群,可以不用共享磁盤即可實現,避免了數據庫集群存儲單點故障,導致整個集群崩潰。
缺點也很明顯,無論是主備服務器,要實現同步操作,都是依賴於性能低的那一端,因此兩台服務器都要是高性能的才可以保證同步的及時性;同時備份服務器只是備份和故障轉移,不能提供從服務器的只讀訪問,因此才說是主備服務器,而且是一對一,只能有一台備份服務器。
(三)日志傳輸模式
與鏡像傳輸模式類似,是將主數據庫日志備份,發送到從服務器上,然后從服務器還原日志,更新數據。
此方式優點在於從服務器可以有多台從服務器,而且當主服務器腳本操作異常后,只需要在日志同步之前,及時攔截日志傳輸,即可保留從服務器數據,減少災難損失;此方式相較於“復制發布”模式,還有一個有點就是無論是新增表、視圖等等,都會通過日志同步給從服務器,而復制模式不行
而相應的缺點就是通過日志備份傳輸,在還原,會有較大的時間延遲。而且無法自動轉移故障,只能手動轉移。
(四)故障轉移集群
集群技術是微軟提供的,可用性最高的主備方案。它是將多台服務器通過一個共享的外部存儲區域(SAN),連接成一個資源共享的服務器群體,數據庫文件和實例,都存放並運行在該共享區域節點上,每台服務器相當於一個節點,共同訪問共享的節點實例。服務器只有一個節點處於活動狀態,當活動節點出現故障,會有其他節點主動啟動,取代當前故障點,整個過程只需要幾秒鍾,用戶無法感知。
集群有很多優點,是目前最高效的高可用技術,但是他也有很明顯的缺點,所有的節點,都依賴於共享節點實例,如果共享節點出現故障,將會導致整個集群失去作用,且很難恢復。
首先配置需要注意些東西:
1.打開sqlserver配置管理器,啟動sqlserver代理,設置屬性中,啟動模式為自動啟動(兩台服務器都需要配置),具體如圖:
2.在sqlserver中新建查詢,輸入sql語句 select @@SERVERNAME,查詢到本服務器的別名,(因為一台電腦上的sqlserver連接其他電腦的sqlserver在數據庫同步的連接時候會報錯,已經試過錯誤了,所以這里提前說明),查詢到本sqlserver的別名后,將本機外網ip和別名寫入hosts文件中,(C:\Windows\System32\drivers\etc\hosts),兩台服務器需要互相在其hosts文件中寫入對方的ip和別名。
3.接下來就開始主要部分吧,建立一個數據庫DB_test,在數據庫中建立一個表tb1,寫入幾個字段,但是一定要加一個設為主鍵的字段
4.點擊sqlserver左側的復制 -> 本地發布,會提示你配置分發服務器,這里在D盤建一個名為ReplData的文件夾,將地址寫成這個文件夾的地址即可。
5.本地發布流程:(發布服務器上進行)
點擊復制中的本地發布,右鍵新建發布,選擇你要發布的數據庫,此時有4種發布類型可供選擇,現在選擇事務發布,選擇你要同步的數據庫的表,點擊下一步,點擊右側添加,可以重寫篩選的條件,點擊下一步,選擇立即創建快照並使用快照保持可用狀態,以初始化訂閱,點擊下一步,右側安全設置,輸入相應信息,一直點下一步,直至發布成功。具體如圖示:
6.本地訂閱流程:(訂閱服務器上進行)
輸入別名,sa和密碼連接發布數據庫 這時便可以看到剛發布過的數據庫的發布名稱“test_8.15”
選擇一個 訂閱數據庫與發布數據庫同步
這時你就可以看到訂閱服務器的 你選擇的數據庫中已經有你發布服務器的那個數據庫和表及其表中數據了,到此,同步完成。
我認為需要注意的問題有:
本文中的兩台機器必定是可以使用sqlserver客戶端互聯(在sqlserver studio中設置'允許遠程鏈接',同時要設置相應的ip地址,以及在配置管理器中開啟tcp/ip協議即可)。
快照的存儲目錄要有,要有讀寫訪問權限
https://blog.csdn.net/roy_88/article/details/70332108
默認安裝路徑:C:\Program Files\Microsoft SQL Server
C:\Program Files(x86)\Microsoft SQL Server