一、客戶需求
客戶現在有一個需求,公司有一台很重要SQL數據庫,怕有一天服務器或者系統崩潰,導致所有SQL數據庫數據丟失,客戶想把數據庫數據,通過某種方式將數庫進行實時同步到另外一台服務器上,這樣可以做個backup。
那客戶這個需求如何實現呢?
二、解決方案:
通過分析與研究,使用的是SQL自帶的發布與訂閱功能,舊的SQL Server版本是2008,新安裝一個SQL Server 2014版本,通過舊SQL Serer發布,再通過SQL Server2014訂閱,來同步數據庫數據。
三、實現過程
3.1、發布
發布前准備:首先兩個服務器之間要能相互通訊,也就是能ping命令能通。平時我們連接數據庫時,經常都是用的ip登陸,但是發布的時候不能這樣,必須用服務器名稱。
如果在不同網段的兩台數據庫服務器,可以在兩台服務器hosts文件中添加對應的IP地址和主機名。
在舊服務器上,打開SQL Server數據庫軟件,進行發布SQL數據庫。
1、舊服務器上,找到復制--本地發布,右擊新建發布。

2、選擇需要發布的數據庫名稱。

3、選擇事務發布。

4、在此數據庫中,查看表,是否都可以正常的被發布,如下圖所示,有些表無法正常發布,那該怎么辦?

5、發現是由於這些表中沒有主鍵,需要給這三張表設置主鍵。

6、設置主鍵。



8、發現還有一個表無法發布。

9、查看原因。

10、需要將此表中的,阻止保存要求重新創建表的更改項勾選去掉。


11、去掉后,發現此表可以正常設置主鍵。

12、可以看到所有的表都可以正常發布了。

13、下一步。

14、選擇添加。

15、選擇立即創建快照並使快照保持可用狀態,以初始化訂閱。

16、選擇安全設置。

17、輸入數據庫的sa用戶名和密碼。

18、選擇下一步。這時要注意,需要將數據庫的代理服務開啟,和SQL browser服務開啟。

19、創建發布。

20、新建一個發布名稱。

21、發布成功。

22、發布的同時,要保證如下此SQL目錄可讀寫。

3.2、訂閱
1、要新服務器上,找到SQL Server代理服務器,將其開啟,自動。

2、找到SQL Browser將其服務開啟。

3、可以Ping通發布服務器的主機名。

4、找到復制--本地訂閱。

5、選擇下一步。

6、選擇查找SQL Server發布服務器。

7、選擇發布服務器的名稱,或者手動輸入發布服務器名稱,輸入發布服務器的用戶名sa,發布服務器數據庫sa密碼。

8、可以查詢到剛才我們發布的數據庫名稱。

9、選擇在發布服務器 PRD-SQL上運行所有代理。

10、選擇新建數據庫。


11、新建一個數據庫,來同步發布服務器中的數據庫。

12、新建數據庫完成,點擊下一步。

13、選擇與訂閱服務器的連接。

14、輸入訂閱服務器數據庫sa用戶名和密碼。

15、選擇下一步。

16、選擇連續運行。

17、選擇立即初始化時間。

18、選擇創建訂閱。

19、選擇完成。

20、訂閱創建成功。

3.3、測試結果
1、在發布服務器上查看同步狀態。

2、可以看到正在同步數據庫表。



3、同步完成后,可以查看數據庫數據有多少條和訂閱服務器進行對比,如果一樣說明成功。

4、在訂閱服務器上,可以查看到所有的表都已經同步過來了。而且數據總條目都和發布服務器數據一樣,實時數據備份成功。
當以后,發布服務器此數據庫中有變動,訂閱服務器數據庫也會實時變動。
