1. 程式人生 > >SQL Server雙機熱備之釋出、訂閱實現實時同步

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
    這篇文章說的是同一區域網釋出不了其他釋出、訂閱的解決辦法。