SQL Server雙機熱備之發布、訂閱實現實時同步


一、復制的功能概述  

       SQL Server 復制功能實現了主從庫的讀寫分離,從而將主庫的壓力分解掉,主庫就主要負責數據的增刪改等,而從庫主要負責查詢。另外有了主、從庫,也給生產數據增加了一層安全性,即備份。萬一主庫出了什么問題,從庫卻還在。

       本文主要講述的是通過:發布-訂閱的方式實現數據庫的主、從分離。因此需要配置一個發布服務器與一個訂閱服務器。其中發布服務器負責將數據分布到相應的訂閱服務器上,而訂閱服務器,則負責接收數據,並將數據整合、更新到自己庫上,從而保證其數據與主庫一樣。下面將自己配置發布與訂閱的流程以及遇到的問題詳細記錄如下。

二、搭建前准備

2.1、硬件准備

發布服務器SKTSEV001: (PC1),數據庫服務名: SKTSEV001

訂閱服務器SKTNB033: (PC2),數據庫服務名:SKTNB033

2.2、搭建前環境准備

准備工作1: 配置機器名和數據庫服庫名是否一致

先檢查PC1,PC2中的機器名和數據庫服務名是否一致,這個很重要!

1.檢查SQL Server 的服務器名稱

use master
go
select @@servername
select serverproperty('servername')

如果查出來的兩個名字不一樣,那就需要把他們的名字改成一樣的如果是一樣的直接跳過此步驟

    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

准備工作2:打開PC1 與 PC2 的共享訪問

PC1:右下角任務欄網絡圖標右擊---點擊“打開網絡和internet設置”--- “網絡和共享中心”---“更改高級共享設置”---點選“啟用網絡發現”“啟用文件和打印機共享”---點擊“確定”

PC2: 右下角任務欄網絡圖標右擊---點擊“打開網絡和共享中心”---點擊“更改高級共享設置”---點選“啟用網絡發現”“啟用文件和打印機共享”

准備工作3:防火牆開1433端口

PC1:右下角任務欄網絡圖標右擊---點擊“打開網咯和internet設置”---點擊“WINDOWS防火牆”---確保“域網絡”“專用網絡”“公用網絡”防火牆都有啟用---點擊“高級設置”---點擊左側“入站規則”—點擊右側“新建規則”---點選“端口”---下一步---點選“TCP”,“特定本地端口”輸入“1433”---下一步---點選“允許連接”---下一步---勾選所有網絡環境---下一步---“名稱”輸入“1433”---完成---此時在入站規則名稱下能夠看到1433

繼續操作---右擊“1433”---點擊“屬性”---點擊“協議和端口”標簽---將“協議類型”修改為“任何”---點擊“確認”(經測試若不開啟所有協議,訂閱主機會查找不到發布主機)

PC2:右下角任務欄網絡圖標右擊---點擊“打開網絡和共享中心”---點擊“windows防火牆”---確保防火牆有啟用---點擊“高級設置”---點擊左側“入站規則”—點擊右側“新建規則”---點選“端口”---下一步---點選“TCP”,“特定本地端口”輸入“1433”---下一步---點選“允許連接”---下一步---勾選所有網絡環境---下一步---“名稱”輸入“1433”---完成---此時在入站規則名稱下能夠看到1433

繼續操作---右擊“1433”---點擊“屬性”---點擊“協議和端口”標簽---將“協議類型”修改為“任何”---點擊“確認”

 

准備工作4:配置SQL ServerTCP/IP(PC1、PC2)

PC1: 在程序列表中打開“SQL Server 2016配置管理器”---打開“SQL server網絡配置”---點擊“SQL2016的協議”---右擊右側“TCP/IP”---點擊“屬性”---點擊“IP地址”---將所有TCP Port改為“1433”,在用IP地址的enable改為“是”

PC2:開始---所有程序---microsoft SQL server 2008---配置工具---SQLserver配置管理器---打開“SQL server網絡配置”---點擊“SQL2016的協議”---右擊右側“TCP/IP”---點擊“屬性”---點擊“IP地址”---將所有TCP 端口改為“1433”,在用IP地址的已啟用改為“是”

准備工作5:Sql Server Browser 服務開啟(PC1、PC2)

如果在SSMS工具中找不到局域網內的其他數據庫服務器,可以開啟這個功能

SQLserver配置管理器---打開“SQL server服務”---右側右擊“SQL ServerBrowser”---啟動

准備工作6:驗證登陸用戶(PC1、PC2)

兩台主機都有cdgl此用戶  且登陸密碼相同

在程序列表打開“Microsoft SQL Server managerment studio+版本”---登陸本地數據---打開“安全性”---右擊“登錄名”---點擊“新建登錄名”---默認“windows身份驗證”---點擊“搜索”---輸入“cdgl”查找(查找結果為主機名+cdgl)---點擊“確定”---點擊“確定”

准備工作7:打開數據庫遠程訪問(PC1、PC2)

在程序列表打開“Microsoft SQL Server managerment studio+版本”---登陸本地數據---

右擊登陸數據庫“數據庫名”---點擊“屬性”---點擊“連接”---勾選“允許遠程連接到此服務器”---點擊“確定”

准備工作8:測試PC1、PC2能否互通(這里要用服務器名ping)

PC1:      ping         SKTNB033

                 telnet       SKTNB033      1433

PC2:      ping        SKTSEV001

                 telnet       SKTSEV001      1433

ping結果:

 

這里一定要用服務器名去ping,如果服務器名ping不通后面就算訂閱成功了數據也過不去,解決辦法之一是配置host,找到 PC1服務器文件  c:\windows\system32\drivers\etc下的hosts文件:(如果能ping的通則可忽略此步驟)

在最后一行填上PC2服務器的ip 和主機名, 注意:ip和名字之間隔空格,這個ip可是是內網,也可以是公網

 

 PC2配置同理:(如果服務器名能ping的通則可忽略此步驟)

在PC2服務器進行相同的操作主機上進行相同的添加host操作 ,將PC1服務器的ip 和主機名 添加到PC2服務器的hosts文件下面.

三、創建發布

使用sa賬戶登錄PC1,打開復制-本地發布-點擊“新建發布”

點擊下一步

注意:..\ ReplData這個文件夾是發布所在的文件夾,要保持訪問權限,當在c盤時,有時可能會出現無法訪問,我這里一般會給ReplData這個文件夾加上everyone權限

 下一步:

 選擇后,點擊下一步:

 下一步,篩選一般不管,如果對數據同步頻率要求比較高,則勾選“計划在以下時間運行快照代理”點擊更改:

 

 下一步,點擊安全設置:

 點擊“確定”---下一步---下一步---“發布名稱”輸入“DB Back”---點擊“完成”---等待創建發布成功

 四、本地訂閱

 PC2(訂閱主機)用sa賬戶登陸本地數據庫---打開“復制”---右擊“本地訂閱”---點擊“新建訂閱”---打開“發布服務器”下拉列表---點擊“查找sql server 發布服務器”

下一步---點選“在發布服務器PC1上運行所有代理”---下一步---打開“訂閱數據庫下拉列表”---點擊“新建數據庫”

“數據庫名稱”輸入“DBAdmin”(PC2與PC1數據庫名稱相同)---點擊“確定”---點擊“完成”---點擊“完成”---等待創建訂閱

 下一步,點擊安全設置

下一步,點擊完成即可,等待創建完成:

在PC1右擊復制-啟動復制編輯器-點擊快照代理,如果訂閱沒有成功,或者數據沒能同步,可以在這里看看日志,查找原因:

五、常見問題

1、 兩台主機的 1433端口互相不通

2、SqlServer Agent 代理沒有開啟

3、 沒有配置 hosts 文件中的ip和主機名映射

4、ReplData文件夾權限不足

5、發布訂閱前沒有進行完整備份

六、參考文獻(資料)

  主要參考資料

  •  https://blog.csdn.net/u012861467/article/details/76411216
    這篇文章說的是快照復制,但有許多細節、注意事項也是有提及到,對個人的幫助不少,點個贊
  • http://blog.51cto.com/46562434/1156582
    這篇文章說的是如何開啟 Windows Server 2008 r2 的網絡發現的
  • https://www.cnblogs.com/linyanyao/p/4513257.html
    這篇文章說的是當SQL Server安裝后,計算機名稱被更改了,要如何才能確認是否被修改,以及如何才能解決修正

  備用參考資料

  • https://www.cnblogs.com/songafeng/p/3839955.html
    這篇文章說的是同一局域網發布不了其他發布、訂閱的解決辦法。


免責聲明!

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



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