SQL Server 跨网段(跨机房)复制
一.本文所涉及的內(nèi)容(Contents)
二.背景(Contexts)
搭建SQL Server復(fù)制的時候,如果網(wǎng)絡(luò)環(huán)境是局域網(wǎng)內(nèi),通過主機名就可以實現(xiàn)了,但是如果是跨網(wǎng)段、跨機房異地搭建復(fù)制的時候就需要注意了,因為SQL Server復(fù)制不支持通過IP連接分發(fā)服務(wù)器,那有什么辦法解決跨網(wǎng)段、跨機房的問題呢?
三.解決方案(Solution)
在跨網(wǎng)段、跨機房進行SQL Server復(fù)制的時候需要區(qū)分兩種情況:一種是外網(wǎng)IP的1433端口對應(yīng)了這臺機器SQL Server的數(shù)據(jù)庫端口;另外一種情況是外網(wǎng)IP對應(yīng)SQLServer機器的端口不是1433;下面是幾種解決方案:
A. 如果外網(wǎng)IP端口是1433,可以在Windows的host文件中指定IP地址與主機名的對應(yīng)關(guān)系,主機名必須跟真實的主機名一樣?
B. 因為你的外網(wǎng)IP端口不是1433,所以你無法在host文件中跟IP地址一起指定端口;這種情況下,如果條件允許(安全性和端口數(shù)),你可以在防火墻中開放外網(wǎng)IP的1433端口對應(yīng)這個發(fā)布服務(wù)器的1433端口,并且限制某個IP可以訪問這個端口,程序等訪問發(fā)布數(shù)據(jù)庫就使用另外的21433端口,保證了1433端口的安全;又可以解決端口映射問題,可以畫張圖解釋;
(Figure1:邏輯結(jié)構(gòu)圖)
C. 另外一種方案是在SQL Server配置管理器里建立一個SQL Server別名,這個別名需要跟主機名一樣,不需要啟用SQL Server Browser服務(wù);
四.搭建過程(Process)
(一) 環(huán)境信息
系統(tǒng)環(huán)境:Windows Server 2008 + SQL Server 2008
發(fā)布服務(wù)器:192.168.1.101,1924,192.168.1.101,1433,服務(wù)器名稱:USER-H2B2A89PEK
分發(fā)服務(wù)器:與發(fā)布服務(wù)器同一臺機器
訂閱服務(wù)器:192.168.1.102,1433,服務(wù)器名稱:QuZhoushiwei105
發(fā)布數(shù)據(jù)庫:Task
訂閱數(shù)據(jù)庫:TaskSubscribe
數(shù)據(jù)庫帳號:ReplicationUser/ ReplicationPassword
?
(二) 搭建步驟
上面的發(fā)布服務(wù)器的外網(wǎng)IP開通了兩個端口,一個是默認的1433,一個是1924,如果是默認的1433,可以通過host文件,而如果只有端口1924的話就只能通過SQL Server別名方式實現(xiàn),這里為了做測試就一起開通了這2個端口了。
A. 下面是通過host文件的形式創(chuàng)建訂閱的具體步驟:
1) 在發(fā)布服務(wù)器上創(chuàng)建發(fā)布,具體操作可以參考:SQL Server 復(fù)制事務(wù)發(fā)布,只有搭建成功之后下面的步驟才能進行;
2) 設(shè)置訂閱服務(wù)器C:\Windows\System32\drivers\etc目錄的host文件,添加分發(fā)服務(wù)器(我的環(huán)境是發(fā)布服務(wù)器與分發(fā)服務(wù)器是一起的,所以這里指定的是發(fā)布服務(wù)器的地址)信息:192.168.1.101 USER-H2B2A89PEK
3) 設(shè)置分發(fā)服務(wù)器C:\Windows\System32\drivers\etc目錄的host文件,添加訂閱服務(wù)器信息:192.168.1.102 QuZhoushiwei105
4) 在訂閱服務(wù)器上創(chuàng)建訂閱,具體步驟如下:
(Figure2:連接發(fā)布服務(wù)器)
(Figure3:成功連接發(fā)布服務(wù)器)
(Figure4:選擇推送訂閱)
(Figure5:選擇訂閱數(shù)據(jù)庫)
(Figure6:推送訂閱帳號密碼)
(Figure7:代理計劃)
(Figure8:初始化)
(Figure9:成功后的訂閱信息與作業(yè))
(Figure10:新建訂閱的狀態(tài)信息)
?
B. 下面是通過SQL Server別名的形式創(chuàng)建訂閱的具體步驟:
1) 在發(fā)布服務(wù)器上創(chuàng)建發(fā)布,具體操作可以參考:SQL Server 復(fù)制事務(wù)發(fā)布,只有搭建成功之后下面的步驟才能進行;
2) 在訂閱服務(wù)器上創(chuàng)建分發(fā)服務(wù)器(我的環(huán)境是發(fā)布服務(wù)器與分發(fā)服務(wù)器是一起的,所以這里指定的是發(fā)布服務(wù)器的地址)的別名;
(Figure11:訂閱服務(wù)器上的別名)
在分發(fā)服務(wù)器上,如果別名的設(shè)置包括:SQL Native Client 10.0 配置(32位)和SQL Native Client 10.0 配置,需要都設(shè)置訂閱服務(wù)器的別名,如果沒有像Figure13那樣進行設(shè)置,
(Figure12:分發(fā)服務(wù)器上的別名)
(Figure13:分發(fā)服務(wù)器上的別名)
3) 接下來的步驟按照Figure2到Figure8進行就可以了,同樣,最后一樣可以達到Figure9、Figure10的效果;
五.注意事項(Attention)
1. 使用請求訂閱,分發(fā)作業(yè)是在訂閱服務(wù)器上創(chuàng)建的;使用推送訂閱,分發(fā)作業(yè)是在分發(fā)服務(wù)器上創(chuàng)建;
2. 在發(fā)布服務(wù)器上創(chuàng)建發(fā)布的時候,如果SQL Server數(shù)據(jù)庫實例名與服務(wù)器名不一致,將會出現(xiàn)下面的錯誤:
(Figure14:發(fā)布錯誤)
在訂閱服務(wù)器上創(chuàng)建訂閱的時候,如果SQL Server數(shù)據(jù)庫實例名與服務(wù)器名不一致,將會出現(xiàn)下面的錯誤:
(Figure15:訂閱錯誤)
3. 可以通過下面的SQL腳本修改不一致的問題,修改之后記得重啟SQL Server服務(wù)才能生效;
/* SQL Server數(shù)據(jù)庫實例名與服務(wù)器名不一致的解決辦法 */ IF SERVERPROPERTY('SERVERNAME')<>@@SERVERNAME BEGINDECLARE @server SYSNAMESET @server=@@SERVERNAMEEXEC sp_dropserver @server=@server SET @server=CAST(SERVERPROPERTY('SERVERNAME') AS SYSNAME)EXEC sp_addserver @server=@server,@local='LOCAL' END4. 分發(fā)服務(wù)器上的快照文件會給刪除?
CareySon:After the snapshot is applied at all Subscribers, replication cleanup deletes the associated .bcp file for the initial snapshots automatically.
5. 如果通過修改host文件部署發(fā)布訂閱,你必須使用推送訂閱模式,如果你使用請求訂閱模式,因為你無法讀取快照文件,將會報下面的錯誤:
(Figure16:請求訂閱無法讀取快照文件錯誤信息)
使用別名的形式部署發(fā)布訂閱,同樣會存在相同的問題,CareySon在Azure上通過開通相關(guān)權(quán)限的方式可以使用請求訂閱方式,但是過程比較復(fù)雜,這里就不做討論了;
6. 如果只在訂閱服務(wù)器的host文件上指定了分發(fā)服務(wù)器(這里指定是發(fā)布服務(wù)器,因為我的發(fā)布服務(wù)器與分發(fā)服務(wù)器是一起的),沒有在分發(fā)服務(wù)器的host文件上指定訂閱服務(wù)器地址,將會發(fā)生下面的錯誤:
(Figure17:發(fā)布服務(wù)器連接不上訂閱服務(wù)器)
7. 如果服務(wù)器同時存在“SQL Native Client 10.0 配置(32位)”和“SQL Native Client 10.0 配置”,測試發(fā)現(xiàn)“SQL Native Client 10.0 配置(32位)”設(shè)置的別名是提供給:查找SQL Server發(fā)布服務(wù)器使用的,錯誤信息類似Figure19所示;“SQL Native Client 10.0 配置”設(shè)置的別名是提供給:分發(fā)服務(wù)器作業(yè)推送到訂閱服務(wù)器使用的,錯誤信息類似Figure17所示;具體原因不清楚,求科普;
(Figure18:別名)
8. 在分發(fā)服務(wù)器和訂閱服務(wù)器上設(shè)置別名的時候,別名應(yīng)該跟服務(wù)器的實例名要一致,不然會報下面的錯誤:
(Figure19:錯誤信息)
六.參考文獻(References)
SqlServer數(shù)據(jù)庫同步方案詳解(包括跨網(wǎng)段)
總結(jié)
以上是生活随笔為你收集整理的SQL Server 跨网段(跨机房)复制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [wbia 2.2] 对检索结果进行评估
- 下一篇: Oracle SQL语句执行步骤