跳至

自行管理的 MySQL 與 MySQL 適用的 Cloud SQL

MySQL 是全球最熱門的開放原始碼關聯資料庫之一。其受歡迎的原因之一,就是能夠依據使用者的工作負載需求,以多種方式託管及管理資料庫。使用者可以選擇將資料庫設為自行管理的地端部署環境、在雲端的虛擬機器中自行管理,或是使用雲端供應商的全代管產品。本文將著重說明自行管理的 MySQL 選項和由 Google Cloud 提供的全代管解決方案,MySQL 適用的 Cloud SQL。每個選項的優缺點都會涵蓋在內。

自行管理的 MySQL

自行管理的 MySQL 選項代表使用者在大多數情況下會由資料庫管理員負責設定、安裝及維護資料庫、作業系統 (OS)、網路、儲存空間、虛擬機器 (VM) 執行個體,以及託管資料庫執行個體和伺服器的硬體。使用硬體、VM 執行個體、儲存空間、網路及作業系統工作等一些工作,則可透過 Google Cloud 等雲端服務供應商輕鬆完成。無論使用者是自行管理地端部署的資料庫,還是在雲端自行管理,他們都需負責一些必要的資料庫管理工作,以便讓系統順利執行。以下列出這些工作。

  • 可用性:硬體和軟體元件肯定會失敗。然而,使用者必須負責在設計系統時,以容許硬體和軟體故障的方式運作,並確保能夠持續提供資料庫、伺服器和應用程式。 
  • 資料庫維護:在自行管理的 MySQL 選項中,使用者需要透過最新版本的軟體,更新應用程式堆疊中的各個層,以決定支援服務硬體、作業系統和其他軟體的停產、不支援的版本或舊版服務。此外,使用者需要定期安裝軟體、OS 和 MySQL 修補程式,同時讓資料庫持續運作,而不會發生重大中斷情形。
  • 擴充性:隨著應用程式用量的增長,改善資料庫效能的需求也越高。同樣地,如要支援大型工作負載或客戶群,硬體資源必須向上擴充或向外擴充。在自行管理的 MySQL 中,使用者自行負責這項工作在地端部署環境中調整硬體資源,不僅耗費大量時間,也相當複雜,有時會導致系統停機。
  • 安全性最近,安全性已成為重要的環節,橫跨多層資料庫系統,從硬體的實體安全措施到設定網路防火牆和保護資料庫連線等。像自行管理設定這類複雜作業,需要費心管理和專業知識。
  • 監控除了 MySQL 的設定和設定之外,使用者也必須擔心跨越堆疊的所有層來監控多個元件,例如在硬體層級、OS 和 MySQL 進行監控,以及在故障時採取修正措施。

下圖顯示使用者選擇自行管理設定時應負的責任。雖然 Google Cloud 的自我管理功能可以減少與硬體、運算、網路和儲存空間相關的部分工作,但使用者仍要負責管理堆疊的其餘層。資料庫管理員和應用程式開發人員仍須花費足夠的時間、能源和資源來管理 MySQL。

圖片顯示資料庫管理員的所有責任是自行管理資料庫託管

什麼是 MySQL 適用的 Cloud SQL?

Cloud SQL 是一套全代管資料庫服務,可讓您在 Google Cloud 上輕鬆設定、維護、管理 MySQL、PostgreSQL 和 SQL Server 資料庫。Cloud SQL 可以管理 MySQL 資料庫的硬體、網路、OS、安全性、監控、維護、可用性和資源調度等各方面。使用者不必負責處理這些工作,可以專注於開發應用程式,並為客戶帶來價值。

下圖的圖表類似於上圖,其中顯示管理 MySQL 資料庫不同層所涉及的工作,唯一的差別在於 Cloud SQL 代表使用者管理的所有工作 (以藍色表示)。

全代管資料庫託管的圖片

除了管理上述提到的多項工作外,Cloud SQL 還提供多種功能和解決方案,而且自行管理環境中並未以原生方式提供這些功能和解決方案。以下列出 Cloud SQL 提供的幾項主要功能。

穩定性:備份與復原是資料庫管理中最重要的活動。Cloud SQL 提供自動備份隨選備份,可在發生毀損、災害或無意間修改資料時,用來將資料庫還原到某個時間點

可用性:Cloud SQL 可運用自動容錯移轉功能,跨多個可用區將託管資料庫的多個伺服器執行個體化,藉此在 VM 或資料中心發生錯誤時提供高可用性Cloud SQL 保證全球 99.95% 以上的可用性。

除了高可用性功能外,Cloud SQL 也提供 24 小時全年無休的網站穩定性工程 (SRE) 團隊,負責確保 Google Cloud 上的 MySQL 資料庫執行個體適用的 Cloud SQL 穩定度。

跨地區唯讀備用資源是另一項功能,可在任何失敗時做為災難復原機制使用。這個 API 可讓使用者在減少對業務的影響下,將受到影響的資料庫快速發布到另一個網站 (區域)。

擴充性:Cloud SQL 可在相同地區或區域內建立 MySQL 唯讀備用資源,例如位於相同區域或遠端區域的額外 MySQL 唯讀執行個體,允許來自備用資源和主要執行個體的提供服務要求,從而提供更好的讀取效能。唯讀備用資源也可用來製作報表,也可以在滿足業務需求後刪除。

Cloud SQL 可以在極少的停機時間內,向上擴充資源 (CPU、記憶體和儲存空間) 並縮減 MySQL 執行個體上的資源。然而,如果是自行管理的設定,這類複雜的活動需要大量的工作、專業知識和規劃。

安全性:MySQL 適用的 Cloud SQL 資料庫伺服器位於 Google Cloud 安全的資料中心,以確保最高等級的安全性。此外,Google Cloud 提供可連結虛擬私有雲的私人連線,以及由使用者控管的網路存取權 (包括防火牆防護),可確保使用者資料庫伺服器免於惡意人士的侵擾。

安全性的其他層面就是符合安全性法規。Cloud SQL 符合許多業界認可的法規,例如 SSAE 16、ISO 27001、PCI DSS 及《健康保險流通與責任法案》。

Cloud SQL 可讓您透過身分與存取權管理整合功能,管理使用者和管理其資料庫的存取權。這項整合功能可管理 Google Cloud 使用者的授權和驗證作業,並針對特定 Google Cloud 資源提供精細的存取方式,防止他人未經授權存取資料庫。另外,Cloud SQL 提供預先定義的角色,方便您控管 Cloud SQL 資源的存取權,藉此輕鬆管理身分與存取權管理。

Cloud SQL 的另一項安全性功能是將靜態資料和傳輸中的資料加密,確保未經授權的使用者無法存取使用者資料。

Cloud SQL 為資料庫使用者提供密碼驗證功能,方便客戶在執行個體層級定義密碼複雜度、密碼長度下限、密碼變更間隔和在密碼中使用使用者名稱等密碼政策。客戶也可以針對個別使用者設定密碼有效期限、嘗試失敗次數和舊有密碼變更規定的政策。Cloud SQL 的這些功能提供了安全性法規遵循的最佳做法,並降低未經授權存取重要資料的風險。

Cloud SQL 也可讓您使用稽核記錄外掛程式稽核 MySQL 資料庫中的動作和作業。稽核記錄提供深入分析結果,讓您瞭解執行者、執行何種操作、對哪些物件執行動作以及何時執行。資料庫稽核功能可讓您追蹤資料庫中的特定使用者動作,例如資料表更新、讀取查詢、使用者授權等。

觀測能力:Cloud SQL 提供多種監控解決方案,並有越來越多的現成指標清單,提供資料庫狀態的深入分析資訊。使用者可以使用這些指標建立快訊,藉此讓管理員掌握資料庫的健康狀態。 

Cloud SQL 還提供查詢洞察建議工具等功能,讓使用者能進行疑難排解,以及找出查詢或工作負載的效能瓶頸。這些功能在自行管理的 MySQL 環境中難以複製。

整合Cloud SQL 可讓您輕鬆建立網路連線,並與 Google Cloud 中的其他服務整合,例如 Google Kubernetes EngineCompute EngineCloud Run,可讓您輕鬆開發深度整合的解決方案。Cloud SQL 也提供與 BigQueryLooker 的原生整合,可用來分析 Cloud SQL 中呈現的資料的處理作業。

修補Cloud SQL 這項代管服務會自動更新執行個體,確保基礎硬體和作業系統穩定、高效能、安全無虞和更新為最新版本。這類更新大多是在 Cloud SQL 執行個體啟動並運作時執行。不過,某些系統更新可能需要短暫的服務中斷,使用者可以自行定義維護期間的升級活動。

版本升級:Cloud SQL 也提供自動化的升級資料庫 (MySQL) 版本的程序。使用者也可以將資料遷移至更高版本的執行個體,藉此升級主要版本。  

如何在 MySQL 適用的 Cloud SQL 中建立 MySQL 資料庫執行個體?

自行管理 MySQL 的優缺點

優點

  1. 可使用任何 MySQL 分支MySQL 生態系統 (例如 MariaDB 或 Percona) 來設定 MySQL。
  2. 使用者可以完全掌控執行個體、資源和作業系統,因此您可以靈活設定 MySQL。此外,使用者可以使用自己偏好的 OS、依照喜好設定 OS,以及依據需求設定 MySQL,而不受任何限制。
  3. 使用者不受 Cloud SQL 的限制,例如儲存空間上限為 64 TB。使用者可以超過 64 TB 的儲存空間限制,並使用較高的運算基礎架構託管 MySQL。
  4. 使用者具備 MySQL 執行個體的完整存取權 (包括 SUPER 權限),以及作業系統的完整存取權 (包括 sudo 權限)。
  5. 即使 Cloud SQL 不支援其服務,使用者也能按照自己的需求設定高可用性和備用資源拓撲。  

缺點

  1. 使用者負責於地端部署環境中管理複雜的硬體基礎架構、網路和資料中心作業。即便是在雲端自行管理 MySQL,使用者仍須處理複雜的設定、永久磁碟與執行個體的設定,以及處理高可用性叢集、安全性、災難復原和擴充性的設計和管理。
  2. 使用最新的修補程式將資料庫版本、作業系統版本和硬體系統保持在最新狀態,以避免錯誤和安全漏洞可能會產生的高昂成本、資源、複雜度和停機時間。
  3. 除了資料庫設定之外,使用者也必須設定和管理所有層的安全性,而非只有資料庫本身。例如,使用安全資料傳輸層 (SSL) 確保連線在傳輸過程中經過加密,並持續更新憑證、對靜態資料加密,以及管理使用者和服務帳戶對資料庫的登入存取權。
  4. 為確保執行個體的可用性,您必須針對資料庫系統的所有層監控是否發生故障。使用者必須花額外資源來進行監控工具的配置和設定。您必須定義快訊,以便在發生錯誤時接收通知,並採取必要行動來修正任何錯誤。
  5. 使用者需要花費大量的時間、資源和心力來設定及管理資料庫,而難以專注於應用程式開發。

MySQL 適用的 Cloud SQL 優缺點

優點

  1. MySQL 適用的 Cloud SQL 提供容易使用的介面,即使沒有資料庫專業知識,開發人員和工程師也能建立、管理、存取及監控 MySQL 資料庫。想要快速上手,Cloud SQL 也可讓您輕鬆將現有的 MySQL 資料庫從地端部署系統或其他雲端環境遷移至 Google Cloud 的 MySQL 適用的 Cloud SQL
  2. MySQL 適用的 Cloud SQL 提供各式各樣的功能,讓您為各種應用程式來託管 MySQL 資料庫,從微型網站資料庫到重要的大型業務應用程式、遊戲應用程式到分析用途資料。透過這些豐富的功能,使用者可以建構高度穩定且可擴充的應用程式。
  3. Cloud SQL 會與使用者共同負責安全性。Cloud SQL 可確保低層級基礎架構和網路的安全性,可讓使用者專心設定及開發較高層級的應用程式。
  4. Cloud SQL 提供多項安全性功能,例如密碼驗證外掛程式稽核記錄無法在社群版本中取得,而且難以在自行管理的環境中實作。Cloud SQL 能夠簡化相關功能,讓使用者輕鬆使用這些功能。
  5. Cloud SQL 提供多種與資料庫互動的方式。使用者可以運用 GUI、CLI 和 API 來根據自身需求自訂作業,而且幾乎不費吹灰之力。
  6. Cloud SQL 可輕鬆整合其他解決方案和 BigQuery 等產品,讓您以最輕鬆的方式開發數據分析解決方案。
  7. Cloud SQL 採用高可用性基礎架構、自我修復解決方案,以及最重要的全年無休 SRE 團隊,致力確保資料庫執行個體的穩定性。
  8. 使用者減少資料庫處理作業的時間和精力,可以專心處理應用程式開發,從而有效率地提供符合業務需求的解決方案。
  9. 除了協助管理資料庫之外,Cloud SQL 也提供各項提示和建議,可使用查詢洞察最佳化建議等功能提高資料庫的效能。這些功能可讓您在雲端中託管及管理資料庫,不僅簡單、安全且符合成本效益。
  10. Cloud SQL 提供客戶服務,可簡化與資料庫相關的問題或要求所需的支援。

缺點

  1. Cloud SQL 不支援 MariaDB 和 Percona 等 MySQL 生態系統的 MySQL 分支。
  2. 不支援部分 MySQL 功能。進一步瞭解不受支援的功能
  3. Cloud SQL 支援高達 624 GB RAM 和 96 個 CPU 的機器類型。系統支援高達 64 TB 的儲存空間。如果資料庫需要更高的容量,目前僅提供自行管理的選項。

Google Cloud 提供代管的 MySQL 資料庫,可滿足您的業務需求,包括淘汰地端部署資料中心、執行軟體式服務 (SaaS) 應用程式,以及遷移核心業務系統等。