Availability-Groups

單個 VM 上的 Always On 可用性組

  • December 23, 2020

有沒有辦法在單個虛擬伺服器上使用 SQL Server 2019 Enterprise Edition 實施 Always On 可用性組。

目標不是擁有任何 HA 或 DR 功能,而只是 Read-Scale 作為一種將讀取操作分發到第二個副本的方法。想法是在同一虛擬伺服器上擁有兩個或更多實例,每個實例都有一部分 RAM 分配基於讀取與寫入所經歷的負載。每個 SQL 實例的記憶體不會那麼混亂,發生的鎖定等也會更少,並且即使使用單個伺服器,性能也會有所提高。

嘗試對同一伺服器上的兩個實例執行此操作時,SQL 在 AG 創建嚮導中抱怨副本節點的名稱包含相同的基本伺服器名稱,即使有兩個單獨的實例。本質上,它將實例名稱的基本伺服器名稱解釋為“節點”(即使讀取擴展的設置不需要 WSFC 節點設置),因此不允許在同一節點上創建副本。

有沒有解決的辦法?

謝謝!

當實例在同一台伺服器上時,我嘗試的腳本沒有成功:

CREATE AVAILABILITY GROUP [TEST_AG1]
WITH (
AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
DB_FAILOVER = ON,
DTC_SUPPORT = NONE,
CLUSTER_TYPE = NONE
)
FOR DATABASE [Northwind]
REPLICA ON N'ROBSWS2019\SQLA' WITH (
ENDPOINT_URL = N'TCP://ROBSWS2019.AUSTINLANE.local:5022', 
FAILOVER_MODE = MANUAL, 
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, 
BACKUP_PRIORITY = 50, 
SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
),
N'ROBSWS2020\SQLB' WITH (
ENDPOINT_URL = N'TCP://ROBSWS2020.AUSTINLANE.local:5022', 
FAILOVER_MODE = MANUAL, 
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, 
BACKUP_PRIORITY = 50, 
SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
);

GO

我絕對理解 Lee 和 Rodrigo 的評論,非常感謝您向我指出這些額外的資源。我認為您的觀察通常是正確的。

但是,我發現了一種可能會在這項工作中取得成果的方法。Rafael Rodriguez 通過使用 Docker 容器實現了這一點。他有一篇關於他如何完成AOAG Read-Scale Clusterless的文章。

他還在一個git 儲存庫中擁有整個項目。

我下載了它並在我的 Win10 工作站上的 Docker 中啟動它。我能夠從 SSMS 連接到兩個實例,將表添加到主副本,然後看到它顯示在輔助副本中!

我認為這基本上回答了這個問題。我的下一步是設置我的案例的詳細資訊,並確定測試策略以獲取基準和性能改進數據。我會嘗試迴圈並發布任何結果。

感謝大家幫助我推進這個項目!聖誕節快樂!!!

引用自:https://dba.stackexchange.com/questions/281839