在之前陸續介紹多種不同方式 SQL Server AlwaysOn 的設定與安裝的方式,可以有效的提高資料庫的高可用性,這次我們再來介紹 AlwaysOn 進階的部份 分散式可用性群組 (Distributed availability groups) 的功能。
相關連結參考:
在混合雲的架構上建立完整的AlwaysOn架構
http://caryhsu.blogspot.com/2015/12/alwayson.html
SQL Server 2012 新功能 - AlwaysOn安裝與設定
http://caryhsu.blogspot.com/2012/04/sql-server-2012-alwayson.html
如何在Amazon上透過EC2,架設完整的AlwaysOn架構。
https://caryhsu.blogspot.com/2015/10/amazonec2alwayson.html
一般的情況下,我們在 AlwaysOn 的設定上以2個節點為主,進一步的設定,可以將第三個節點放在不同的地區或雲端,藉以當問題發生時,可以將 AlwaysOn 的節點轉移至雲端上,而且也可以當作可讀副本,藉以減輕主節點的壓力。
但在發生問題時,可能由於地端的網域或叢集等問題,所以轉移後,可能仍需及時的確認等問題,所以如果在預算允許的情況下,其實可以建立相同的第二組藉以問題發生時進行移轉,而 AlwaysOn 可以透過 分散式可用性群組 (Distributed availability groups)進行管理,當發生問題時,可以進行轉移的動作。
常見的方式,直接將第三個或第四個節點放在不同區或雲端上。
在使用 分散式可用性群組 (Distributed availability groups) 的部份,有下列的幾個優點:
- 將叢集節點建立在不同的地區,而且真正作到多叢集多節點的情境。
- 資料中心(DataCenter) 轉移。
- 延伸可讀副本至不同的地區上。
環境說明:
==============
- AD - Windows Server 2022
- SQL Server Nodes, 這裡主要有四台 SQL Server,一個叢集中有二個SQL Server的節點
安裝方式:
==============
1. 請依照下列的文章將二組叢集建立好.
SQL Server 2012 新功能 - AlwaysOn安裝與設定
http://caryhsu.blogspot.com/2012/04/sql-server-2012-alwayson.html
2. 請在第一組叢集的部份,建立第一組的 AlwaysOn,然後確認轉移等功能皆正常。
3. 在第二組叢集時,AlwaysOn 可以透過自動同步的方式進行建立,但通常如果資料庫較大,會透過備分的方式進行還原,而且這樣在建立上,問題也會比較單純。
4. 目前請確認二組的叢集在 Failover 上皆正常,可以 Listener 也可以正常的連接,最後在 Endpoint 的部份,也都確認有建立完成。
透過 SQL 語法進行查詢
SELECT * FROM sys.endpoints
where type = 4
5. 請透過下列的語法,建立 分散式可用性群組 (Distributed availability groups)
CREATE AVAILABILITY GROUP [distributedag]
WITH (DISTRIBUTED)
AVAILABILITY GROUP ON
'sqlag2019-1' WITH
(
LISTENER_URL = 'tcp://sqlag2019ag1lt.mscaryhsu.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = MANUAL
),
'sqlag2019-2' WITH
(
LISTENER_URL = 'tcp://sqlag2019ag2lt.mscaryhsu.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = MANUAL
);
GO
上述中可以看到 分散式可用性群組 (Distributed availability groups) 主要是將二個 AlwaysOn 透過 Listener 進行綁定,其中在 AVAILABILITY_MODE 一定要設定為 ASYNCHRONOUS_COMMIT 模式,因為如果設定為 SYNCHRONOUS_COMMIT 的模式,因為要等於第一個叢集完成後,也要同時寫到第二個叢集才算一個交易的完成,一來會造成交易的時間過長,二來也會因為跨區的網路延遲造成問題,由於是 ASYNCHRONOUS_COMMIT 模式,所以在 FAILOVER_MODE 也會是手動的方式(MANUAL),最後在 SEEDING_MODE 也就是在同步時,如果資料庫不存在,進行初使化為同步傳送,還是透過手動進行,因為我們上一個步驟是透過手動進行還原,所以這個步驟就設定成 SEEDING_MODE = MANUAL。
6. 最後建立完成後,如果要進行手動的 Failover,可以透過下列的方式進行轉移。
ALTER AVAILABILITY GROUP [distributedag] FORCE_FAILOVER_ALLOW_DATA_LOSS;
設定完上述的部份即已完成,但其實用性上來說,個人感覺使用第三個節點於雲端上已算是很好的部份,你要地端與雲端都同時發生問題,我想可能真的是發生了很嚴重的事情了,大家也別太擔心,最後也希望這篇有幫助到大家。
沒有留言:
張貼留言