GDC 實體隔離方案的 MySQL 資料庫參考架構

本參考架構提供概念架構,說明如何在 Google Distributed Cloud (GDC) 實體隔離方案中,部署及操作高可用性的客戶代管 MySQL 8.4 資料庫。企業和搶先體驗客戶可透過強大的多可用區虛擬機器 (VM) 設定,可靠地維護重要資料庫工作負載。

由於 GDC 實體隔離方案不支援跨可用區 Kubernetes 延伸叢集,因此這個架構嚴格仰賴部署於三個可用性網域的專用 VM,確保作業不中斷,並在整個可用區故障時避免資料遺失。

特點與功能

  • 多可用區韌性:在三個不同的可用區部署高韌性的 3 節點設定,防範單一基礎架構可用區故障。
  • 自動化高可用性和共識:使用群組複製功能,建立以 Paxos 為基礎的共識叢集,提供自動故障偵測、節點協議和全域資料同步,避免腦裂情況。
  • 智慧型流量轉送:共置的 MySQL Router 執行個體會管理連線轉送。路由器會將寫入作業 (例如通訊埠 6446) 嚴格導向至執行中的主要節點,並在同步副本之間平衡讀取作業 (例如通訊埠 6447) 的負載。
  • 全域負載平衡:與內建的 GDC 全域 L4 負載平衡器整合,為用戶端應用程式提供單一穩定的虛擬 IP (VIP),並抽象化基礎節點拓撲。

架構原則

  • 以法定人數為基礎的共識:優先考量嚴格的資料一致性。群組複製功能會強制執行 Paxos 模型,需要多數同意,因此可消除網路失聯期間資料遺失或腦裂的風險。
  • 分離關注點:將資料庫引擎和共識層 (Group Replication) 與用戶端流量轉送層 (MySQL Router) 分離,同時使用 MySQL Shell 簡化叢集生命週期管理。
  • 基礎架構最佳化:專為實體隔離環境設計,利用強大的 VM 繞過目前的 Kubernetes 網路限制。

架構

執行共置服務堆疊的三 VM 架構。

概念和技術

本節將詳細說明多可用區架構中的功能元件及其特定職責。

基礎架構和平台

  • 虛擬機器 (VM):三個專屬運算執行個體,分別部署至不同的可用區,形成故障域邊界。
  • GDC 全球 L4 負載平衡器:由平台管理的網路建構,可公開穩定的內部 VIP,自動評估 MySQL Router 健康狀態檢查,重新導向傳入流量。

服務和邏輯

  • MySQL 8.4:核心關聯式資料庫引擎。
  • 群組複製/InnoDB 叢集:內建叢集架構,負責多主節點複製,並使用 Paxos 驗證節點仲裁。
  • MySQL Shell:專門用於設定、佈建及管理 InnoDB 叢集執行個體的統一指令列介面。
  • MySQL Router:在每個 VM 上做為流量路由器。動態設定為監聽叢集中繼資料並轉送流量:寫入時採用主動/備份模式,讀取時採用輪詢模式。

資料流程和介面

  1. 應用程式會將資料庫要求傳送至 GDC 全球 L4 負載平衡器 VIP。
  2. 負載平衡器會將連線代理至其中一個 VM 上健康狀態良好的 MySQL Router 執行個體。
  3. MySQL Router 會根據要求的通訊埠,動態轉送流量:通訊埠 6446 嚴格指定寫入作業的運作中節點,而通訊埠 6447 則在叢集內循環讀取。

注意事項

  • 成效與一致性之間的取捨:由於群組複製會強制執行共識,因此交易需要叢集對等點的確認。效能與 GDC 環境中的可用區間網路延遲時間直接相關。
  • 資源管理:直接在資料庫 VM 上部署 MySQL Router,可最佳化硬體使用率,但需要仔細調整資源,以免連線集區負擔過重,導致核心 MySQL 程序資源不足。

設計決策

  • Kubernetes 上的虛擬機器:GDC 實體隔離方案不支援跨多個實體可用區的 Kubernetes 叢集。之所以嚴格選擇以 VM 為基礎的方法,是因為在不同可用區部署專用 VM,是實現真正的多可用區高可用性,並在整個可用區故障時存活的唯一可行方法。
  • InnoDB 叢集與 Orchestrator 和 ProxySQL 的比較:我們評估了傳統的主要/次要架構搭配 ProxySQL 和 Orchestrator 的可行性。不過,我們最終選擇內建的 InnoDB Cluster (Group Replication + MySQL Router + MySQL Shell),因為這項服務可消除對第三方轉送疊加層的依賴,並直接在 MySQL 內保持共識,大幅簡化容錯移轉的作業複雜度。
  • 平台內建全域負載平衡:運用內建的 GDC 全域 L4 負載平衡器,確保 VIP 由 GDC 控制層控管,維持進入點的彈性,並簡化跨可用區流量傳遞。

假設和限制

假設

  • 基礎架構可用性:客戶有足夠的專案配額,可佈建專用且大小適中的 VM 和全域負載平衡器,並平均分配至三個可用區。
  • 安全網路:建立金鑰存取權和適當的 ProjectNetworkPolicies (PNP),允許叢集內群組複製同步和 MySQL Router 流量。

限制

  • 不支援 Kubernetes:如果客戶只尋求容器化/Kubernetes 解決方案,則必須等到平台完全支援延展叢集,才能實現多可用區高可用性。
  • 需要手動升級:與代管服務不同,這項解決方案會將例行 OS 層級修補和資料庫子版本升級的責任完全交給客戶。
  • 網路延遲敏感度:複製作業需要高品質且穩定的網路。實體隔離可用區之間的網路抖動或延遲時間高峰,會按比例延遲 MySQL 叢集的寫入作業。

其他資料