高可用性是適用於 MySQL 的 Azure 資料庫的關鍵功能,其設計目的是將停機時間降到最低,並確保您的應用程式即使在計劃性維護或非預期中斷期間仍可存取。 本文會解決高可用性 (HA) 選項、計費、容錯移轉程序、效能影響和最佳做法的常見問題,以協助您針對 Azure 上的 MySQL 工作負載做出明智的決策。
區內備援與跨區備援的高可用性 (HA) 彈性伺服器的服務水平協議 (SLA) 是什麼?
適用於 MySQL 的 Azure 資料庫彈性伺服器的 SLA 資訊,請參閱適用於 MySQL 的 Azure 資料庫所用的 SLA。
如何針對高可用性 (HA) 伺服器計費?
已啟用 HA 的伺服器具有主要和次要複本。 次要複本可以位於相同區域或區域備援中。 系統會針對主要和次要複本的已佈建計算和儲存體進行計費。 例如,如果您的主要複本具有 4 個虛擬核心的計算和 512 GB 的已佈建儲存體,則次要複本有 4 個虛擬核心和 512 GB 的已佈建儲存體。
您的區域備援 HA 伺服器會針對 8 個虛擬核心和 1,024 GB 的儲存體計費。 根據備份儲存體磁碟區,您可能也會支付備份儲存體的費用。
我是否可以使用待命複本來進行讀取或寫入作業?
待命伺服器不適用於讀取或寫入作業。 這是啟用快速容錯移轉的被動待命。
發生容錯移轉時,是否將會遺失資料?
即使主要伺服器無法使用,仍然可以存取 ZRS 中的記錄。 此可用性有助於確保不會遺失資料。 待命複本在啟動並套用二進位記錄之後,就會扮演主要伺服器的角色。
我是否需要在容錯移轉之後採取任何動作?
來自用戶端應用程式的容錯移轉完全透明。 您不需要採取任何動作。 應用程式應該只針對其連線使用重試邏輯。
當我未針對待命複本選擇特定區域時,會發生什麼事? 我是否可以稍後再變更區域?
如果您未選擇區域,則會隨機選取一個區域。 其會是用於主要伺服器的某個區域。 若要稍後變更區域,您可以將 [高可用性] 窗格上的 [高可用性] 設定為 [已停用],並將其設定回 [區域備援],然後選擇區域。
主要複本與待命複本之間的複寫是否同步?
主要與待命之間的複寫類似於 MySQL 中的半同步模式。 認可交易時,不需要認可至待命。 但是,主要複本無法使用時,待命會複寫主要複本中的所有資料變更,以確保不會遺失資料。
是否所有非計劃性失敗都會容錯移轉至待命複本?
如果資料庫損毀或節點失敗,則會在相同的節點上重新啟動彈性伺服器 VM。 同時會觸發自動容錯移轉。 如果在容錯移轉完成之前成功重新啟動彈性伺服器 VM,則會取消容錯移轉作業。 決定要將哪部伺服器用作主要複本,取決於先完成的程序。
當我使用 HA 時是否會影響效能?
對於區域備援 HA,雖然跨可用性區域讀取工作負載沒有重大效能影響,但寫入查詢延遲可能會降低最多 40%。 寫入延遲增加的原因是跨可用性區域進行同步複寫。 相較於相同的區域 HA,寫入延遲影響在區域備援 HA 中會是兩倍。 對於區域備援的高可用性(HA),由於主要複本和待命複本位於相同的區域,因此複寫延遲和同步寫入延遲較低。
總而言之,如果寫入延遲比可用性對您來說更重要,您可能想要選擇本地冗餘 HA;但如果您更重視資料的可用性和復原性,而代價是犧牲寫入延遲,那麼您必須選擇區域冗餘 HA。 若要測量 HA 設定中延遲下降的精確影響,建議您為工作負載執行效能測試,以做出明智的決策。
如何維護 HA 伺服器?
縮放計算和次要版本升級等計劃性事件會先在原始待命執行個體上發生,接著是觸發計劃性容錯移轉作業,然後在原始主要執行個體上運作。 您可以設定 HA 伺服器的排程維護時間範圍,就像針對彈性伺服器一樣。 停用 HA 時,停機時間長度會與適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體的停機時間相同。
我可以執行 HA 伺服器的時間點還原 (PITR) 嗎?
您可以將已啟用 HA 的適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體 PITR 至已停用 HA 的新適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體。 如果來源伺服器是使用區域備援 HA 建立的,您可以稍後在還原的伺服器上啟用區域備援 HA 或本機備援 HA。 如果來源伺服器是使用本機備援 HA 建立的,則只能在還原的伺服器上啟用本機備援 HA。
我是否可以在建立伺服器之後於伺服器上啟用 HA?
在建立伺服器期間必須啟用區域備援 HA。 您可以在建立伺服器之後啟用本機備援 HA,但請確定伺服器參數 enforce_gtid_consistency 和 gtid_mode 已設定為 ON 再繼續。
我是否可以在建立伺服器之後停用其 HA?
您可以在建立伺服器之後停用其上的 HA。 計費會立即停止。
如何減輕停機時間?
即使您未使用 HA,還是需要可以減輕應用程式的停機時間。 服務停機時間,例如排程的修補程式、次要版本升級或客戶起始的作業 (例如在排程的維護時間範圍期間執行計算的調整)。 若要減輕 Azure 起始維護工作的應用程式影響,您可以排程在一周的某一天和某個時間執行這些工作,以將對應用程式的影響降到最低。
我是否可以針對已啟用 HA 的伺服器使用讀取複本?
是,HA 伺服器不支援讀取複本。
我是否可以針對 HA 伺服器使用資料輸入複寫?
只有在透過 GTID 型複寫時,才會為已啟用高可用性 (HA) 的伺服器支援資料輸入複寫。
使用 GTID 的複寫預存程序可透過 mysql.az_replication_with_gtid 名稱在所有已啟用 HA 的伺服器上使用。
若要減少停機時間,我是否可以在伺服器重新開機期間或擴大或縮小時容錯移轉至待命伺服器?
適用於 MySQL 的 Azure 資料庫彈性伺服器目前已使用計劃性容錯移轉將包括擴大/縮小在內的 HA 作業最佳化,並已使用計劃性維護來協助減少停機時間。
當這類作業啟動時,其會先在原始待命執行個體上運作,接著是觸發計劃性容錯移轉作業,然後在原始主要執行個體上運作。
我們可以更改服務器的可用性模式(區域冗餘 HA/本地冗餘)嗎?
如果您建立已啟用區域備援 HA 模式的伺服器、則可以從區域備援 HA 變更為本地備援,反之亦然。
若要變更可用性模式,您可以在 [高可用性] 窗格中將 [高可用性] 設定為 [已停用],然後將其設定回 [區域備援] 或 [本機備援],然後選擇 [高可用性模式]。