適用於:Azure SQL 資料庫
如分散式函式架構中所述,Azure SQL Database Hyperscale 有兩種不同類型的計算節點,也稱為複本:
次要複本一律是唯讀狀態,且可以有三種不同類型:
- 高可用性複本
- 地理複製
- 具名副本
每個類型具有不同的結構、功能集、用途和成本。 您可根據所需功能,只使用一種或甚至全部三種類型。 您可以將次要副本搭配 無伺服器 或預配置的計算層使用。
如需有關設定和管理超大規模資料庫具名複本的教學課程,請參閱:
高可用性複本
高可用性 (HA) 複本會使用與主要複本相同的頁面伺服器,因此不需複製任何資料來新增 HA 複本。 HA 複本可用來增加資料庫可用性;它們會作為故障轉移用途的熱待命複本。 如果無法使用主要複本,則系統會自動且快速地容錯移轉至其中一個現有 HA 複本。 連接字串不需要改變;在容錯移轉事件期間,應用程式可能會因使用中的連線中斷而經歷短暫停機時間。 針對此案例,建議您如往常般使用適當的重試邏輯。 數個驅動程式已提供某種程度的自動重試邏輯。 如果您使用 .NET,最新的 Microsoft.Data.SqlClient 程式庫提供可設定的自動重試邏輯完整支援。
HA 複本會使用與主要複本相同的伺服器和資料庫名稱。 其服務等級目標(SLO)始終與主要複本相同。 HA 複本無法作為獨立資源顯示,也無法從入口網站或任何 API 進行管理。 它們會以與主要複本相同的計算費率計費,但記憶體成本不適用於次要複本。
可以有零到四個 HA 複本。 您可以在建立新資料庫期間指定複本數目,或更新現有資料庫的複本數目。 您可以使用常見的管理端點和工具(例如:Azure PowerShell、Azure CLI、Azure 入口網站、REST API)來指定 HA 複本的數目。 建立或移除HA複本不會影響主要複本的作用中聯機。
連線至 HA 複本
在超大規模資料庫中,用戶端在連接字串所用的 ApplicationIntent
引數,代表連線是否已路由至讀寫主要複本或唯讀 HA 複本。 如果 ApplicationIntent
設定為 ReadOnly
且資料庫沒有次要複本,則會將連線路由傳送至主要複本,並預設為 ReadWrite
行為。
-- Connection string with application intent
Server=tcp:<myserver>.database.windows.net;Database=<mydatabase>;ApplicationIntent=ReadOnly;User ID=<myLogin>;Password=<password>;Trusted_Connection=False; Encrypt=True;
所有 HA 複本在其資源容量上都是相同的。 如果有一個以上的 HA 複本,讀取導向的工作負載會隨機分配至所有可用的 HA 複本。 當有多個 HA 複本時,請留意,相對於主要複本的資料變更,每個複本可能具有不同的資料延遲。 同一組頁面伺服器上的每個 HA 複本都使用與主複本相同的資料。 不過,每個 HA 複本上的本機資料快取會透過交易日誌服務來反映主要複本的變更,這項服務將日誌記錄從主要複本轉發到 HA 複本。 因此,視在HA複本上執行的工作負載而定,記錄記錄的應用程式可能會以不同的速度發生,因此不同的複本可能會有與主要複本不同的數據延遲。
具名副本
具名複本如同 HA 複本,會使用與主要複本相同的頁面伺服器。 與HA複本類似,不需要任何數據副本以新增具名複本。
HA 複本與具名複本之間具有差異:
- 具名復本會在入口網站和 API 中顯示為一般(只讀)Azure SQL 資料庫(Azure CLI、Azure PowerShell、T-SQL) 呼叫。
- 具名複本的資料庫名稱可以與主要複本不同,而且可以選擇性位於不同邏輯伺服器 (只要與主要複本位於相同區域即可)。
- 具名複本具有自己的服務等級目標,可獨立於主要複本來進行設定和變更。
- 每個主要複本最多支援 30 個具名複本。
- 具名複本透過在裝載具名複本的邏輯伺服器上建立不同的登入,來支援每個具名複本的不同驗證。
如此一來,具名複本在唯讀工作負載方面提供比 HA 複本更多的優點:
- 如果主要復本進行擴充或縮減,則連線到具名復本的使用者不會中斷連線。
- 當任何命名複本進行增加或減少時,連線到主要複本的使用者不會受到影響。
具名複本的主要目標是啟用各種讀取擴展情境,並改善混合式交易和分析處理 (HTAP) 工作負載。 您可以在這裡找到如何建立這類解決方案的範例:
此外,具名復本提供靈活性和彈性,也滿足許多其他應用案例:
- 存取隔離:您可以將存取權授與特定具名複本,但不能授與主要複本或其他具名複本。
- 工作負載相依服務等級目標:由於具名複本可以有自己的服務等級目標,因此可以針對不同的工作負載和使用案例使用不同的具名複本。 例如,一個具名的複本可以用來處理 Power BI 要求,另一個則可以用來向 Apache Spark 提供數據以支援資料科學任務。 每個部分都可以有獨立的服務等級目標,並且可以獨立調整規模。
- 工作負載相依路由:最多可有 30 個具名複本,因此可以在群組中使用具名複本,以便將應用程式與另一個複本隔離。 例如,具有四個具名複本的群組,可提供來自行動應用程式的要求,而另一個具有兩個具名複本的群組,則可提供來自 Web 應用程式的要求。 此方法可讓您更精細地微調每個群組的效能和成本。
注意
如需超大規模資料庫具名複本的常見問題,請參閱Azure SQL Database Hyperscale 具名複本的常見問題。
超級規模具名複本的區域冗餘。
針對區域備援設定的超大規模資料庫具名複本會使用 Azure 可用性區域,將具名復本計算節點分散到 Azure 區域內的不同實體位置。 藉由為具名複本選擇區域備援,您可以增強超大規模資料庫所有層級的韌性,以應對更廣泛的故障,包括資料中心中斷,而不需要修改應用程式邏輯。 如需詳細資訊,請參閱<超大規模資料庫區域備援可用性>。
如需建立區域備援超大規模資料庫具名複本的教學課程,請參閱<建立超大規模資料庫具名複本>。
如需疑難排解和測試應用程式錯誤復原功能,請參閱<測試應用程式錯誤復原>。
地理複製
使用作用中異地複寫,您可以在相同或不同的 Azure 區域中,建立主要超大規模資料庫的可讀取次要複本。 必須在不同的邏輯伺服器上建立異地備份。 異地複本的資料庫名稱,一律符合主要複本的資料庫名稱。
當您建立異地複本時,所有數據都會從主要複本複製到不同的頁面伺服器集。 異地復本不會與主要複本共用頁面伺服器,即使它們位於相同的區域也一樣。 此架構提供異地容錯移轉所需的備援。
異地複本可透過非同步複寫,維護資料庫的交易一致性複本。 如果異地復本位於不同的 Azure 區域,則如果主要區域中發生災害或中斷,則可用於災害復原。 地理複寫可以用於擴充地理讀取能力的場景。 自 2022 年 10 月起,支援來自超大規模架構異地次要副本的資料庫副本。
超大規模資料庫的異地複寫具有下列目前限制:
- 只能建立一個地理複本(可在相同或不同區域)。
- 不支援地理複本的時間點還原。
- 不支援建立異地複本的異地複本(也稱為「異地複本鏈結」)。
疑難排解
針對區域冗餘超級規模具名複本進行疑難排解
如需疑難排解和測試應用程式錯誤復原功能,請參閱<測試應用程式錯誤復原>。
在 PowerShell 和 CLI 中建立區域備援具名複本時,請確定至少有指定一個高可用性複本。 如需範例,請參閱<建立超大規模資料庫命名複本>。
- 在 Azure CLI 中,您必須同時指定 參數
ha-replicas
和redundant
。 - 在 PowerShell 中,您必須指定 參數
HighAvailabilityReplicaCount
和ZoneRedundant
。 - 如果省略,您可能會收到錯誤訊息:
(ProvisioningDisabled) There is an insufficient number of high availability replicas to enable zone redundancy for a Hyperscale database.
- 在 Azure CLI 中,您必須同時指定 參數
超大規模資料庫應已啟用區域備援,這是啟用具名複本功能的必要條件。
- 即使主資料庫已啟用區域備援,仍然可以選擇為具名副本啟用區域備援。
- 如果未啟用,您會接收到錯誤訊息:
(DatabaseNamedReplicaSourceDatabaseNotZoneRedundant) Zone Redundancy cannot be enabled on this Named Replica since the primary Hyperscale Database is not zone redundant.
已知問題
從 sys.資料庫傳回部分不正確的資料
在 sys.databases
和 name
以外的資料行中針對具名複本從 database_id
所傳回的資料列值可能會不一致且不正確。 例如,即使對應至具名副本的主資料庫設定為相容性層級 150,具名副本的compatibility_level
欄也可以顯示為 140。 可能的話,因應措施是使用 DATABASEPROPERTYEX()
函式取得相同的數據,這會傳回正確的數據。
相關內容
如需有關設定和管理超大規模資料庫具名複本的教學課程,請參閱:
如需詳細資訊,請參閱