背景:
1、單個獨立數據庫的吞吐量是有瓶頸的,那么如何解決這個瓶頸?
2、服務器直接數據如何復制、並具備一致性、可擴展性?
資源:
官方資源:https://technet.microsoft.com/zh-cn/library/ms151198(v=sql.100).aspx
Quick Start 實戰
微軟官方教程查找:官方資源——復制——開發——設計和實現教程。里面還會涉及一些必要的安全設置。本文只對核心內容實操圖文,暫且跳過。
配置分發服務器(發布服務器、源)
1、打開SQL Server服務器下的 【復制】 ——右擊【本地發布】節點,選擇【新建發布】
2、如果第一次設置會彈出【發布向導】對話框直接點下一步——進入下圖設置【分發服務器】,
第一個是源發布服務器充當分發服務器,第二個將設置單獨的分發服務器,不理解的可以看后文的原理,所以選第一個【下一步】
3、【啟動SQL SERVER代理】的方式:【選擇第一個自動】——【下一步】。
(正式環境建議選自動,測試可以手動方式。訂閱/發布的基本原理還是要通過sql代理協助完成)
對應的服務在這里設置:
4、出現【快照文件夾】對話框,(默認C盤需要做權限設置)這里我們設置到D盤隨便新建一個文件夾ReplData——【下一步】。
(正式環境一般要配合Windows賬戶和權限設置文件夾這里暫部多述。另外需要知道的就是后文的發布類型初始化都是需要快照的)
5、點擊【下一步】,選中發布的數據庫,我們選擇 數據庫DataSample,點擊【下一步】
6、選擇【發布類型】,我們選擇 【事務發布】——點擊【下一步】。四個類型后面在詳細說明適用場景。
7、選擇需要發布給訂閱端的對象:表、存儲過程、視圖等等,點擊【下一步】:
8、出現【篩選表行】對話框,點擊【添加】:
9、出現如下的篩選器對話框、可以設置不同的表發布需要的列。
(聰明的同學可能想到能不能以此完成對表的切割分布,留作思考)
不篩選,每個表所有字段全部同步,點擊【取消】返回——【下一步】
10、,進入【快照代理】設置對話框,這里有兩個選擇一個是立即創建快照,一個是指定一個計划(比如可以指定xxx天xxx時間運行),我們選擇第一個,點擊【下一步】
11、【代理的安全性】——點擊【安全性設置】
12、選擇 SQL SERVER 用戶,填寫數據庫連接賬戶——點擊【確定】——返回后點擊【下一步】:
13、勾選【創建發布】 ——繼續【下一步】:
14、我們給發布進行命名為:“DataSample_Publisher” ,點擊【下一步】:
15、運行創建發布,並會顯示創建發布的結果(最后一個可以手動設置,方法見上文),點擊【關閉】:
設置為手動的, 驗證成功:右鍵查看快照狀態,每次點擊啟動會創建一個快照。點擊復制監視器,可以看到有沒有報錯
訂閱服務器(分布的從服務器、目標)
1、打開SQL——【復制】——右鍵【本地訂閱】——如果是第一次會彈出向導,直接【下一步】,如下圖,選擇我們剛配置的發布服務器,下一步
2、演示本機,選擇第一個——下一步
推送訂閱會加重主服務器的負擔,請求訂閱則會加重訂閱服務器的負擔
3、勾選發布源、后面設置 本地 訂閱存儲數據庫B——下一步
4、點擊“…”,彈出賬戶設置圖,輸入好賬戶——確定——下一步
5、下一步
6、下一步
7、下一步——下一步——完成
驗證
打開源數據庫、插入數據。然后打開訂閱數據庫查詢,看源數據庫的數據是否也同步到了訂閱數據庫:
INSERT INTO [dbo].[Product] ([Name] ,[Price] ,[CreateTime]) VALUES ('測試測試' ,18.02 ,GETDATE())