基於上次的文章搭建的環境,可以在這里:http://www.cnblogs.com/DragonStart/p/8275182.html看到上次的文章.
演示環境
1. 配置一覽
| Key | Value |
|---|---|
| 系統版本 | Win2016 |
| 數據庫版本 | SQLServer 2016 |
| 群集IP | 10.22.20.201 |
| 數據庫偵聽器IP | 10.22.20.202 |
2. 連接

3. 寫點初始數據
這個只需要在其中一個寫就行,不用全部寫

4. 備份數據庫
如果不做備份的話,后面會失敗.進入后不用改什么,直接備份即可.

5. 給SQLServer服務打開高可用性組支持
操作完記得重啟數據庫服務:

創建與分享證書
1. 在服務器上建立目錄
創建證書過程中會生成證書文件,所以每個服務器准備個文件夾用於存放證書文件:
記得給everyone讀寫權限

2. 創建證書
在每一個服務器上,執行如下SQL代碼,注意:每一個服務器執行之前要做小改動,要改的地方寫在注釋里:
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 = 'D:\share\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
如果創建證書過程中有失敗的,可以用這個回退一些操作:
--刪除終結點
drop ENDPOINT [group0_endpoint];
go
--刪除證書
DROP CERTIFICATE CERT1;
--刪除主密鑰
drop master key
go
3. 把證書文件發到每台設備
隨便用什么方法,把證書文件發到每台服務器:

4. 在每台服務器的SQL里,安裝其它服務器的證書:
--載入其它節點證書
--不用載入自己的證書!
--不用載入自己的證書!
--不用載入自己的證書!
--CREATE CERTIFICATE CERT1 FROM FILE = 'D:\share\CERT1.cer';
CREATE CERTIFICATE CERT2 FROM FILE = 'D:\share\CERT2.cer';
CREATE CERTIFICATE CERT3 FROM FILE = 'D:\share\CERT3.cer';
GO

5. 查看證書與終結點
現在在每台設備執行如下指令應該都能看到所有證書,以及終結點.group0_endpoint,如果沒有,需要根據以上操作創建.
select * from sys.certificates
select * from sys.endpoints
創建可用性組
1. 新建可用性組向導

2. 根據向導走流程
名稱隨意

如果你之前沒備份數據庫,這里會過不了

把所有節點添加進來,注意還要配置些選項

默認過過過~




3. 數據同步成功

到這里,數據同步就成功了,我們可以看到每台服務器都同步了這個數據庫
根據之前的配置,我們有1個可讀寫的主節點,和2個只讀的備用節點.當客戶端要連接的時候,如何知道主節點與備用節點呢?接下來需要配置一個偵聽器,讓客戶端通過偵聽器自動連接到主節點.
創建偵聽器
我們需要給可用性組創建一個偵聽器,該偵聽器會自動把偵聽器IP指向主庫服務器.
1. 點這里

2. 填寫偵聽器IP和端口

3. 完成

簡單測試
1. 使用偵聽器連接
我們剛才創建了偵聽器,現在可以用這個偵聽器的IP去連接當前主數據庫節點.

成功!
2. 嘗試手工切換主節點
點這里

選D2節點切換

連接一下

后面都是默認配置即可.

刷新下連接,可以看到當前還是連着"主要"節點:


3. 嘗試自動切換
接着試試以關機的方式,讓數據庫自己去切換節點.
強行關閉該服務器:

再次刷新客戶端:

可以看到主庫自動切換到D1去了.
4. 寫入數據

在切換過的庫寫數據會出現這樣的情形:寫入的數據自增長字段多了1000,所以,在設計業務的時候,最好對此有所准備.
