一、簡介
環境:小編使用的服務器是windows server 2016(系統服務器) + sql server 2016(數據庫服務器)
(windows server 2016 + sql server 2016以上才可用無域高可用,windows server 2016 + sql server 2016下載地址:http://msdn.itellyou.cn/
windows server 2016 下載
sql server 2016 下載
下面進入主題吧!
ip地址
二、安裝故障轉移和.net3.5
主機名 IP 說明
win-138 192.168.66.138 服務器138,也就是節點138
win-139 192.168.66.139 服務器139,也就是節點139
mk-AlwaysOn 192.168.66.137 集群IP,虛擬的,自己隨便寫,同網段就行,后續會用到
mk-SQL 192.168.66.140 監聽器IP,也是虛擬的,自己隨便寫
在服務器中添加角色和功能(兩台計算機都要安裝)
默認下一步,下一步,勾選NET Framework 3.5 功能和故障轉移群集,直到安裝完成。
二.修改並加入域(兩台計算機都要改)
在我的電腦中點擊屬性(也可以使用win+E進入文件夾,在此電腦中右鍵后點擊屬性)—>更改設置–>在彈出的窗口點擊更改–>彈出的窗口點擊其他–>最后點擊確定(點擊確定之后會重啟電腦,點擊立即重新啟動)
修改HOST文件(兩台計算機都要安裝)
在文件夾中 C:\Windows\System32\drivers\etc 打開文件hosts,在hosts以筆記本或寫字板方式打開,並進行新增和保存(保存不了的,把hosts文件復制到桌面后進行修改,修改完再覆蓋C:\Windows\System32\drivers\etc中的hosts)
新增內容hosts(注意是自己的IP,請參考下面的表格圖):
主機名 IP 說明
win-138 192.168.66.138 服務器138,也就是節點138
win-139 192.168.66.139 服務器139,也就是節點139
mk-AlwaysOn 192.168.66.137 集群IP,虛擬的
mk-SQL 192.168.66.140 監聽器IP
192.168.66.137 mk-AlwaysOn
192.168.66.138 win-138.gdmk01.cn
192.168.66.139 win-139.gdmk01.cn
192.168.66.140 mk-SQL
三、關閉防火牆(兩台電腦執行)
關閉防火牆,要不然故障轉移會有問題
設置允許應用或功能通過windows防火牆
還是在剛剛的防火牆中點擊設置允許應用或功能通過windows防火牆,設置以下幾項
四、修改DNS(兩台電腦執行)
在右下角網絡中打開internet網絡,設置DNS服務器
五、新建故障轉移(任意一台電腦執行)
打開PoserShell運行以下代碼,注意修改成自己的IP跟計算機名(參考上面的表格)
New-Cluster -Name mk-AlwaysOn -Node win-138,win-139 -StaticAddress 192.168.66.137 -AdministrativeAccessPoint DNS
六、驗證故障轉移是否成功(任意一台電腦關機)
最好測試兩台電腦(也可跳過不做這一步)
如WIN-139關機(有人問怎么打開這個界面?在服務器管理器–>工具–>故障轉移群集–>右鍵故障轉移群集管理器–>連接到群集(N)–>輸入集群的名稱,如:mk-alwayson)
恭喜各位故障轉移已全部搞定,接下來就是sql server 2016的高可用性安裝了
七、安裝sql server 2016(兩台電腦都要裝)
下載地址:http://msdn.itellyou.cn/ 上面有提過的
安裝的話就不介紹了,不懂的小朋友請參考特別注意安裝的功能和目錄要一致,否則高可用會失敗https://jingyan.baidu.com/article/948f592434b407d80ef5f97d.html
八、設置共享文件
在C盤中新建一個gdmk文件夾(兩台都要建)
設置共享人為Everyone,修改權限級別為讀取/寫入
九、在配置管理器中啟用高可用和修改賬戶名登錄(兩台節點上都要操作)
1.點擊SQL Server服務,再點擊【SQL Server(MS…】
2.勾選“啟用AlwaysOn可用性組(E)”
3.選擇【登錄】,設置電腦的賬號名、密碼(電腦開機的密碼)注意注意:兩台電腦的開機密碼一定要一樣的!!!
十、在數據庫里面安裝證書(特別特別要小心)/客戶機上操作
先將兩台安裝客戶端登錄到數據庫並且啟用sa權限可以遠程登陸
1.這是sql的客戶端下載地址:
SQL Server Management Studio (SSMS) 下載地址:https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-2017
2.在sql的客戶端連接兩台電腦裝的數據庫,用sa用戶登錄
3.使用客戶端去訪問兩台虛擬機的服務器。(可以在物理機里訪問,物理機連接兩台服務器的數據庫),,注意:一定先要在兩台虛擬機備份,快照,以防壞了不好恢復。步驟如下:
3.新建查詢,執行以下語句:
節點1:WIN-138(數據庫)
USE master;
GO
--創建主密鑰
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Abc123';
--創建證書 這里有兩個"CERT1",建議每台機器都改成不同的名稱以作區分
CREATE CERTIFICATE CERT1 WITH SUBJECT = 'CERT1', START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30';
--把剛才創建的證書備份到文件 這里也有兩個CERT1要改
BACKUP CERTIFICATE CERT1 TO FILE = 'C:\gdmk\CERT1.cer';
--創建終結點,設為證書驗證 這里第二行有1個CERT1要改
CREATE ENDPOINT [group0_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT1, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
節點2:WIN-139
USE master;
GO
--創建主密鑰
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Abc123';
--創建證書 這里有兩個"CERT1",建議每台機器都改成不同的名稱以作區分
CREATE CERTIFICATE CERT2 WITH SUBJECT = 'CERT2', START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30';
--把剛才創建的證書備份到文件 這里也有兩個CERT1要改
BACKUP CERTIFICATE CERT2 TO FILE = 'C:\gdmk\CERT2.cer';
--創建終結點,設為證書驗證 這里第二行有1個CERT1要改
CREATE ENDPOINT [group0_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT2, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
3.1將兩邊得共享文件夾里面證書互換,確保兩節點上gdmk文件夾里面都有CERT1跟CERT2證書
4.證書通過共享文件互相復制粘貼,共享文件地址:win-138\gdmk
5.執行完上一步,接着運行win-138,win-139里面的內容
節點1:WIN-138
--載入其它節點證書
--不用載入自己的證書!
--不用載入自己的證書!
--不用載入自己的證書!
--CREATE CERTIFICATE CERT1 FROM FILE = 'C:\gdmk\CERT1.cer';
CREATE CERTIFICATE CERT2 FROM FILE = 'C:\gdmk\CERT2.cer';
GO
節點2:WIN-139
--載入其它節點證書
--不用載入自己的證書!
--不用載入自己的證書!
--不用載入自己的證書!
CREATE CERTIFICATE CERT1 FROM FILE = 'C:\gdmk\CERT1.cer';
--CREATE CERTIFICATE CERT2 FROM FILE = 'C:\gdmk\CERT2.cer';
GO
十、新建可用性組(此操作在連接集群ip上進行操作)
數據庫先備份
這里添加副本輔助角色選擇為:win-139
添加監聽器IP及名稱
最后一直下一步,直到完成!
大功告功!
連接的時候連接監聽器地址192.168.66.140就可以了
這時測試下,可以讓其中一台電腦故障(關機也可以),這時會自動轉移到另外一台數據庫上,在另外一台數據庫里做增刪改查等操作,但凡這台電腦開機,正常運行了,數據也會自動同步到這台電腦數據庫里,這台電腦掛了,另外一台電腦的數據庫依然接着繼續運行,保證數據一切正常。
sqlserver 2019 on windows server2019集群上也是一樣的
特別要注意的是:
1.監聽器ip可以不用做 連接集群ip就可以了
2.建立集群的時候必須要在集群ip上建立
3.集群建立好之后先創建數據庫 看到主副本數據庫同步之后才能轉移
4.調節的時候我是將豬調節為同步模式 副本調節為異步模式
5.測試的時候 在集群ip上創建數據庫跟可用性模式 看能否同步到主從數據庫上