SQL Server 跨網段(跨機房)復制


一.本文所涉及的內容(Contents)

  1. 本文所涉及的內容(Contents)
  2. 背景(Contexts)
  3. 解決方案(Solution)
  4. 搭建過程(Process)
  5. 注意事項(Attention)
  6. 參考文獻(References)

二.背景(Contexts)

  搭建SQL Server復制的時候,如果網絡環境是局域網內,通過主機名就可以實現了,但是如果是跨網段、跨機房異地搭建復制的時候就需要注意了,因為SQL Server復制不支持通過IP連接分發服務器,那有什么辦法解決跨網段、跨機房的問題呢?

三.解決方案(Solution)

  在跨網段、跨機房進行SQL Server復制的時候需要區分兩種情況:一種是外網IP的1433端口對應了這台機器SQL Server的數據庫端口;另外一種情況是外網IP對應SQLServer機器的端口不是1433;下面是幾種解決方案:

A. 如果外網IP端口是1433,可以在Windows的host文件中指定IP地址與主機名的對應關系,主機名必須跟真實的主機名一樣?

B. 因為你的外網IP端口不是1433,所以你無法在host文件中跟IP地址一起指定端口;這種情況下,如果條件允許(安全性和端口數),你可以在防火牆中開放外網IP的1433端口對應這個發布服務器的1433端口,並且限制某個IP可以訪問這個端口,程序等訪問發布數據庫就使用另外的21433端口,保證了1433端口的安全;又可以解決端口映射問題,可以畫張圖解釋;

wps_clip_image-16794

(Figure1:邏輯結構圖)

C. 另外一種方案是在SQL Server配置管理器里建立一個SQL Server別名,這個別名需要跟主機名一樣,不需要啟用SQL Server Browser服務;

四.搭建過程(Process)

(一) 環境信息

系統環境:Windows Server 2008 + SQL Server 2008

發布服務器:192.168.1.101,1924,192.168.1.101,1433,服務器名稱:USER-H2B2A89PEK

分發服務器:與發布服務器同一台機器

訂閱服務器:192.168.1.102,1433,服務器名稱:QuZhoushiwei105

發布數據庫:Task

訂閱數據庫:TaskSubscribe

數據庫帳號:ReplicationUser/ ReplicationPassword

 

(二) 搭建步驟

  上面的發布服務器的外網IP開通了兩個端口,一個是默認的1433,一個是1924,如果是默認的1433,可以通過host文件,而如果只有端口1924的話就只能通過SQL Server別名方式實現,這里為了做測試就一起開通了這2個端口了。

A. 下面是通過host文件的形式創建訂閱的具體步驟:

1) 在發布服務器上創建發布,具體操作可以參考:SQL Server 復制事務發布,只有搭建成功之后下面的步驟才能進行;

2) 設置訂閱服務器C:\Windows\System32\drivers\etc目錄的host文件,添加分發服務器(我的環境是發布服務器與分發服務器是一起的,所以這里指定的是發布服務器的地址)信息:192.168.1.101 USER-H2B2A89PEK

3) 設置分發服務器C:\Windows\System32\drivers\etc目錄的host文件,添加訂閱服務器信息:192.168.1.102 QuZhoushiwei105

4) 在訂閱服務器上創建訂閱,具體步驟如下:

wps_clip_image-17997

(Figure2:連接發布服務器)

wps_clip_image-22114

(Figure3:成功連接發布服務器)

wps_clip_image-18311

(Figure4:選擇推送訂閱)

wps_clip_image-23578

(Figure5:選擇訂閱數據庫)

wps_clip_image-16849

(Figure6:推送訂閱帳號密碼)

wps_clip_image-21517

(Figure7:代理計划)

wps_clip_image-2598

(Figure8:初始化)

wps_clip_image-15522

(Figure9:成功后的訂閱信息與作業)

wps_clip_image-5443

(Figure10:新建訂閱的狀態信息)

 

B. 下面是通過SQL Server別名的形式創建訂閱的具體步驟:

1) 在發布服務器上創建發布,具體操作可以參考:SQL Server 復制事務發布,只有搭建成功之后下面的步驟才能進行;

2) 在訂閱服務器上創建分發服務器(我的環境是發布服務器與分發服務器是一起的,所以這里指定的是發布服務器的地址)的別名;

wps_clip_image-12241

(Figure11:訂閱服務器上的別名)

  在分發服務器上,如果別名的設置包括:SQL Native Client 10.0 配置(32位)和SQL Native Client 10.0 配置,需要都設置訂閱服務器的別名,如果沒有像Figure13那樣進行設置,

wps_clip_image-21703

(Figure12:分發服務器上的別名)

wps_clip_image-8754

(Figure13:分發服務器上的別名)

3) 接下來的步驟按照Figure2到Figure8進行就可以了,同樣,最后一樣可以達到Figure9、Figure10的效果;

五.注意事項(Attention)

1. 使用請求訂閱,分發作業是在訂閱服務器上創建的;使用推送訂閱,分發作業是在分發服務器上創建;

2. 在發布服務器上創建發布的時候,如果SQL Server數據庫實例名與服務器名不一致,將會出現下面的錯誤:

wps_clip_image-30328

(Figure14:發布錯誤)

在訂閱服務器上創建訂閱的時候,如果SQL Server數據庫實例名與服務器名不一致,將會出現下面的錯誤:

wps_clip_image-12226

(Figure15:訂閱錯誤)

3. 可以通過下面的SQL腳本修改不一致的問題,修改之后記得重啟SQL Server服務才能生效;

/*
SQL Server數據庫實例名與服務器名不一致的解決辦法
*/
IF SERVERPROPERTY('SERVERNAME')<>@@SERVERNAME  
BEGIN
    DECLARE @server SYSNAME
    SET @server=@@SERVERNAME
    EXEC sp_dropserver @server=@server  
    SET @server=CAST(SERVERPROPERTY('SERVERNAME') AS SYSNAME)
    EXEC sp_addserver @server=@server,@local='LOCAL'
END

4. 分發服務器上的快照文件會給刪除?

CareySon:After the snapshot is applied at all Subscribers, replication cleanup deletes the associated .bcp file for the initial snapshots automatically.

5. 如果通過修改host文件部署發布訂閱,你必須使用推送訂閱模式,如果你使用請求訂閱模式,因為你無法讀取快照文件,將會報下面的錯誤:

wps_clip_image-24196

(Figure16:請求訂閱無法讀取快照文件錯誤信息)

使用別名的形式部署發布訂閱,同樣會存在相同的問題,CareySon在Azure上通過開通相關權限的方式可以使用請求訂閱方式,但是過程比較復雜,這里就不做討論了;

6. 如果只在訂閱服務器的host文件上指定了分發服務器(這里指定是發布服務器,因為我的發布服務器與分發服務器是一起的),沒有在分發服務器的host文件上指定訂閱服務器地址,將會發生下面的錯誤:

wps_clip_image-2957

(Figure17:發布服務器連接不上訂閱服務器)

7. 如果服務器同時存在“SQL Native Client 10.0 配置(32位)”和“SQL Native Client 10.0 配置”,測試發現“SQL Native Client 10.0 配置(32位)”設置的別名是提供給:查找SQL Server發布服務器使用的,錯誤信息類似Figure19所示;“SQL Native Client 10.0 配置”設置的別名是提供給:分發服務器作業推送到訂閱服務器使用的,錯誤信息類似Figure17所示;具體原因不清楚,求科普;

wps_clip_image-15608

(Figure18:別名)

8. 在分發服務器和訂閱服務器上設置別名的時候,別名應該跟服務器的實例名要一致,不然會報下面的錯誤:

wps_clip_image-4568

(Figure19:錯誤信息)

六.參考文獻(References)

SqlServer數據庫同步方案詳解(包括跨網段)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM