Sql-Server
是否可以自動故障轉移到可用性組中只讀副本的主副本?
我想建立一個有兩個節點的可用性組。一個節點將是主副本,第二個節點將設置為只讀副本。
在我的應用程序中,我使用讀/寫連接執行所有活動,並使用只讀連接執行報告。只讀連接將連接到只讀副本。
但是如果具有隻讀副本的節點下線會怎樣?據我了解文件,如果組中沒有可用的只讀副本,則無法再建立只讀連接。
是否有一種機制可以用於回退到主副本的只讀連接?還是我必須在我的應用程序中手動建構這樣的備份?
文件中對此進行了介紹:為可用性組 (SQL Server) 配置只讀路由,但要使此方法起作用,您需要在兩個副本上配置只讀路由 URL。
在連接字元串中設置了“ReadOnly”屬性的連接將被重定向到輔助副本。如果此輔助副本不可讀(由 ConnectionModeInSecondaryRole 設置確定),則連接將被定向回主副本。
這是來自 MSDN 的 PowerShell 範例,說明如何將只讀路由 URL 添加到兩個可用的副本:
Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg $primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer" $secondaryReplica = Get-Item "AvailabilityReplicas\SecondaryServer" Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://PrimaryServer.domain.com:1433" -InputObject $primaryReplica Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://SecondaryServer.domain.com:1433" -InputObject $secondaryReplica Set-SqlAvailabilityReplica -ReadOnlyRoutingList "SecondaryServer","PrimaryServer" -InputObject $primaryReplica
如果要使用只讀路由,對連接字元串也有一些要求:
- 使用 TCP 協議。
- 將應用程序意圖屬性/屬性設置為只讀。
- 引用配置為支持只讀路由的可用性組的偵聽器。
- 引用該可用性組中的數據庫。