MySQL

託管 MySQL 資料庫的 5 種方式

分享於

簡介

有許多方法可以讓您的專案啟動並執行 MySQL 伺服器。您可以自行安裝和管理伺服器實例,也可以利用眾多提供受管理 MySQL 存取的供應商之一。

本文將介紹一些最常見的 MySQL 伺服器選項,並比較它們的優點和挑戰。透過了解您的專案和團隊的優先事項,您可以找到適合您需求的解決方案。

自行管理的 MySQL

最彈性且最容易描述的選項是自行託管您的 MySQL 伺服器。自行託管 MySQL 表示您在自己控制的電腦上安裝和設定資料庫,就像任何其他軟體一樣。

自行託管讓您可以自由選擇要在哪裡安裝和執行資料庫。如果您選擇本節中的選項之一,您可以參考本指南以了解如何在您的系統上安裝 MySQL

在本機開發電腦上安裝 MySQL

對於早期開發、測試和概念驗證,在本機開發機器上安裝 MySQL 可以提供可靠、易於管理的資料庫存取。

託管選項本機開發機器
專案階段開發
成本無額外成本
效能
擴展性
管理複雜度
其他注意事項不需要網路設定。適用於
本機開發。

成本

在本機開發機器上設定 MySQL 是免費的。您是從已經在開發時啟用的電腦上執行資料庫。您只需要考慮 MySQL 在啟動並執行時將消耗的資源量。

效能

在本機開發機器上安裝 MySQL 是一個低效能的選項。

您的資料庫將不容易或可靠地其他使用者使用。您自己對資料庫的使用將受到您的硬體以及您可以為 MySQL 預留的資源量的限制。這些考量通常在本地測試或開發時不是問題,但對於任何更複雜的情況都完全不足。

擴展性

在本機開發機器上託管幾乎不提供擴展性。您可以變更分配給 MySQL 的資源量,但僅此而已。您可以升級您的開發機器,但從長遠來看,這既不實際也沒什麼用。

管理複雜度

就複雜度而言,在本機機器上託管 MySQL 通常相當簡單。大多數作業系統的安裝過程都經過深思熟慮,並且可以輕鬆啟動或停止產生的資料庫。但是,考慮到資源限制和消費者網路不穩定性,通常不值得費力設定本機 MySQL 實例以進行外部存取。

雖然在本機設定 MySQL 並不複雜,但您仍然需要管理資料庫並在必要時執行任何升級。這些升級可能偶爾需要用於安全性修補,如果您關心您的資料,您有責任追蹤這些實例。

其他注意事項

在本機安裝表示即使網路斷線,您也可以從開發電腦存取資料庫。這在旅行時尤其有幫助。在本機存取您的資料消除了網路複雜性,讓您可以專注於開發而不是資料庫存取。

在本機開發電腦上安裝 MySQL 很有用,但有一些非常明顯的限制。您無法輕鬆設定多使用者存取,並且您的資料庫正常執行時間直接與電腦的可用性和網路穩定性相關。由於這些原因,在本機機器上安裝幾乎總是作為補充選項,旨在提高您的生產力和彈性,絕不是唯一的資料庫安裝方式。

在獨立伺服器上安裝 MySQL

另一個自行託管選項是在獨立電腦上安裝和管理 MySQL。一些常見的實作包括

  • 在專用伺服器上安裝:MySQL 設定為在專用電腦上執行的唯一服務。它可以存取機器所有資源。
  • 與相關應用程式一起安裝:MySQL 與需要它的應用程式一起安裝。對於小型部署來說,這是一個常見的選擇,因為所有組件都可以在單一機器上管理。電腦的資源必須在 MySQL 和其他正在執行的應用程式之間共享。

在獨立伺服器上安裝 MySQL 與在本機機器上安裝看起來非常不同

託管選項獨立伺服器
專案階段開發、預備、生產
成本可變。購買或租用額外
伺服器加上額外的管理成本。
效能高潛力
擴展性高潛力
管理複雜度
其他注意事項最彈性的選項。也需要最多的
實際操作管理。如果您
內部有硬體或資料庫專業知識,可以投入管理,這是一個不錯的選擇。
您可以投入管理。

一個需要進一步強調的考量是,當您自行管理 MySQL 時,安全性是您的責任。如果您已經處理基礎架構,軟體和網路安全性是您組織的其他部分,這可能不是問題。但是,如果您不太熟悉,保護您的 MySQL 實例及其持有的資料可能是一個重大挑戰。在決定走這條路之前,請務必將其納入您的規劃。

成本

在專用或共享機器上執行 MySQL 需要您購買或租用將使用的伺服器空間。實際伺服器可能位於您組織的內部部署、資料中心託管,或是由雲端供應商託管的虛擬機器(也稱為虛擬私有伺服器或 VPS)。

伺服器的成本可能差異很大。低功耗的 VPS 可能相當便宜,而多個專用伺服器將很快變得昂貴。但是,伺服器的成本並不是唯一的考量。您還必須考慮額外的管理成本。根據您的部署環境,這可能包括管理資料庫層、伺服器軟體和硬體的人事成本。這些成本將取決於您的可用性需求、託管環境和營運規模。

效能

在獨立伺服器上部署 MySQL 具有非常高效能的潛力。由於執行 MySQL 的機器的規格由您控制,因此您可以完全彈性地選擇符合您需求的硬體。如果您將來需要擴展,您可以升級硬體或購買額外的伺服器來擴展您的工作負載。

您還可以微調資料庫設定以獲得額外的效能優勢。您可以調整與記憶體管理、快取、開啟檔案處理、用戶端連線等相關的設定。雖然這為您提供了很大的能力,但利用這些選項需要時間、專業知識和實驗。與執行您自己的伺服器的其他方面一樣,好處受到您可以分配給專案這方面的時間和金錢的限制。

擴展性

如上所述,在專用伺服器上執行可讓您應對資料庫系統不斷變化的需求。您可以透過向資料庫伺服器新增額外資源和硬體來向上擴展,或者您可以透過在 MySQL 伺服器池之間平衡請求來向外擴展。這兩個選項都是應對不同類型壓力的合理回應。

管理複雜度

一般來說,擴展具有與效能調整相同的優點和限制:您擁有令人難以置信的彈性和能力,但您有責任管理成本和設定。任何需要額外硬體的變更(例如需求增加)都必須與主動監控相結合,以便您的組織有時間採購硬體、設定軟體並平衡您的工作負載。

其他注意事項

總之,管理您自己的 MySQL 可能非常有效率、強大且彈性,但可能需要大量的專用時間和資源。此選項最適合具有內部基礎架構和伺服器專業知識的組織,這些組織希望控制資料庫的執行階段環境、設定和架構拓撲。

搭配 Docker 的 MySQL

另一個自行託管選項是使用 Docker 將 MySQL 作為容器執行。Docker 可讓您在本機或遠端機器上的隔離環境中執行 MySQL。

託管選項Docker 容器
專案階段開發、預備、生產
成本可變。購買或租用額外
伺服器加上額外的管理成本。
效能中高
擴展性
管理複雜度中高
其他注意事項容器化基礎架構在複雜性方面可能差異很大
。雖然容器使
許多事情變得更容易,尤其是在開發期間
和預備環境,它們也需要經驗和
複雜的協調才能在生產環境中良好運行。
對於生產工作負載,容器很可能
只有在您已經投入
Kubernetes 等容器協調時,才是好的選擇。

與傳統本機安裝相比,使用 Docker 的一些優點包括

  • 與安裝 MySQL 相比,使用官方 MySQL Docker 映像執行 MySQL 需要較少的精力。
  • Docker 可讓您在多個環境中重現完全相同的資料庫設定,這對於團隊協作處理需要相同 MySQL 設定的專案非常有用。
  • 您可以使用 Docker 控制分配給 MySQL 的 CPU、記憶體和儲存資源。
  • Docker 降低了 MySQL 與機器上執行的其他軟體之間不相容的可能性。

在本機或遠端機器上使用 Docker 安裝 MySQL 是相似的,儘管根據您是否將 MySQL 用於生產工作負載,還有一些額外的考量。

雖然 Docker 簡化了執行 MySQL 的某些方面,但仍有一些權衡需要注意

  • 根據您的設定,使用 Docker 執行可能會增加網路設定的複雜性。
  • Docker 新增了一個額外的抽象層,這需要額外的安全性考量,並且有可能使疑難排解變得較不直接。

容器和 Kubernetes

透過 Kubernetes,您可以在由多個伺服器組成的叢集上執行 Docker 容器。如果叢集中的一台伺服器需要停機維護,只要底層資料分割區可存取,Kubernetes 就會將 MySQL 容器移至另一台伺服器。您也可以在 Kubernetes 上執行使用 MySQL 的應用程式,這可以減少應用程式和 MySQL 之間的網路延遲。

受管理服務

在您自己執行 MySQL 之外的另一種選擇是從供應商租用或購買 MySQL 資料庫。受管理服務可讓您輕鬆地將資料庫作為服務或 API 使用,而無需擔心幕後 MySQL 軟體或底層伺服器的管理。

存在不同類型的受管理服務以滿足不同的需求。本節將介紹由託管或雲端供應商、第三方受管理資料庫和應用程式平台提供的資料庫提供的服務。

由雲端供應商管理的資料庫

雲端或託管供應商提供的受管理 MySQL 託管可能是最常見的類型。這些範例包括 Amazon Web Service 的 RDS(關聯式資料庫服務)、Google Cloud Platform 的 Cloud SQL 和 Azure Database。

託管選項雲端供應商管理
專案階段開發、預備、生產
成本高度可變,取決於您的選擇
和使用量。
效能高度可變
擴展性
管理複雜度
其他注意事項通常由提供的
可以執行您的
應用程式的同一雲端供應商提供的高度可擴展解決方案。這允許額外的控制
網路和效能,而無需
執行您自己的伺服器的繁重工作。

雲端供應商提供各種微調的 MySQL 資料庫,以在其資料中心執行,並與其其他服務無縫協作。

雲端供應商

以下雲端供應商提供受管理的 MySQL 資料庫,您可以根據需要購買、設定和擴展

伺服器和大部分 MySQL 將由託管供應商管理,而您將能夠設定擴展選項、調整設定和管理存取。您可以將資料庫設定為可從網際網路連線,或將它們直接連線到由同一供應商管理的應用程式。

成本

由雲端供應商管理的 MySQL 資料庫可能具有廣泛的成本。在低端,一些供應商提供免費層級,但效能和正常執行時間最低。在高端,如果您的流量意外激增,自動擴展以滿足任何需求可能會讓您在一夜之間花費數千美元。與雲端中的大多數事物一樣,您的實際使用量將影響您每個月的帳單。許多雲端都提供成本警報,甚至在使用量/成本超過一定點時自動關閉。監控您的使用量並設定截止值以管理資料庫系統的營運成本非常重要。

擴展性

雖然有時很難預測成本,但好消息是雲端中的擴展非常容易。分配給資料庫的資源可以隨時設定。這表示您可以僅透過變更帳戶中的設定來增加儲存容量、記憶體和運算能力,或管理資料的複本數量。動態擴展資料庫資源以符合目前需求的能力是一項強大的功能,但如果未仔細設定,可能會導致高成本。這讓您始終有能力滿足您的需求,前提是您可以負擔得起成本。

效能

與擴展性相關,效能是雲端中另一個非常靈活的領域。您通常可以根據您的使用模式微調對資料庫效能影響最大的設定。如果目前的設定效能不足,您也可以分配額外資源。將資料庫與使用它們的應用程式並置也有助於在資料庫和應用程式之間提供良好的網路效能。

管理複雜度

以管理複雜度而言,雲端託管資料庫相當簡單。您付費請供應商為您承擔大部分的管理負擔。雖然您仍然需要控制您的帳戶以及影響資料庫的設定,但硬體、作業系統和大部分的 MySQL 設定都將由供應商處理。這對於減少使用資料庫的管理成本有很大的影響,但在某些特殊情況下,您可能無法存取您想要的調整層級。

補充說明

一般而言,付費使用由雲端供應商管理的 MySQL 資料庫通常是一個很有吸引力的選擇。它在擴展性和效能方面提供了極大的彈性,同時管理工作量較小。選擇雲端供應商的資料庫產品的缺點是,在某些情況下,您最終可能會支付比其他方式更多的費用。此外,如果您的工具開始過度依賴供應商特定的功能,則存在被當前供應商綁架的風險。

第三方託管資料庫

除了直接從雲端供應商購買資料庫之外,您還可以選擇透過第三方供應商來管理資料庫。在大多數情況下,此選項會將資料庫部署和管理到您選擇的雲端或多個雲端上,從而將資料庫管理與底層資源供應商分離。

託管選項第三方託管
專案階段開發、預備、生產
成本差異很大,取決於您的選擇
和使用量。
效能高度可變
擴展性
管理複雜度
其他注意事項第三方託管資料庫具有許多
與雲端供應資料庫相同的優點。
然而,透過第三方管理您的資料庫
第三方,您可以將資料庫
管理與底層雲端供應商分離。
這可以讓未來遷移到不同的
主機更容易,有時還可以提供
更強大的管理選項。

由第三方供應商管理的資料庫通常使用與雲端供應商本身提供的資料庫相同的基本組件。然而,第三方供應商通常與多個雲端合作,在您的帳戶中啟動資源,並且通常在您需要時提供更低層級的存取權限。該服務不會使用雲端供應商提供的資料庫,而是在供應商上啟動虛擬伺服器,並使用這些伺服器安裝和設定 MySQL。他們可以調整作業系統上的設定,並讓您存取託管您執行個體的伺服器。第三方 MySQL 供應商的一個例子是 ScaleGrid,它目前可以在四個不同的雲端中管理執行個體。

第三方產品

以下第三方供應商提供託管的 MySQL 資料庫,您可以根據需求購買、設定和擴展

伺服器和大部分的 MySQL 將由供應商管理,而您將能夠設定資料庫運行的雲端平台、擴展選項、調整設定和管理存取權限。您可以將資料庫設定為可從網際網路連線,或將其直接連線到由同一供應商管理的應用程式。

成本

就成本而言,第三方解決方案通常也具有高度的可變性。作為使用者,您將必須支付部署到的雲端中的運算資源費用,以及資料庫管理服務收取的管理費用。由於您是向雲端供應商支付更基本的資源費用,而不是託管資料庫的費用,因此這方面的成本可能會較低。然而,與管理服務相關的成本可能會在某些價格點使其累積成本更高。您將必須弄清楚每一方在不同層級的擴展方式,以確定您的總成本是多少。

效能

資料庫的效能特性也可能差異很大。由於您的管理服務安裝在雲端中的運算執行個體上,因此您的供應商除了 MySQL 設定外,還可以調整伺服器組態。這表示他們可能能夠調整某些設定,以更合理地符合您的需求。

另一方面,他們可能無法存取虛擬化和硬體組件的底層,而這些底層是進行充分調整所必需的。強烈建議您針對雲端供應商提供的原生資料庫測試效能。

擴展性

第三方託管資料庫的擴展性通常非常好。由於這些供應商可以部署在任何具有足夠資源的運算執行個體上,因此他們有時可以為您提供比雲端供應商公開的更廣泛的擴展選項。如果您的擴展原因之一是提高可用性,那麼許多第三方服務都有能力跨越多個可用性區域甚至供應商。

管理複雜度

用於管理資料庫的第三方服務具有不同的複雜度。由於此選項需要在兩個不同的供應商(託管運算執行個體的雲端和資料庫管理服務)之間進行協調,因此與使用雲端供應商提供的原生資料庫服務相比,複雜性必然會增加。

一些管理服務將自己定位為簡化的選項,以與共用網頁託管非常相似的方式隱藏複雜性。其他解決方案則利用作業系統可存取的事實,向使用者公開各種組態選項。許多服務同時提供這兩種體驗,讓使用者可以找到自己偏好的複雜程度。

補充說明

將資料庫管理與底層資源供應商分離既有優點也有缺點。

如果您的資料庫管理服務抽象化了底層,您在遷移到不同的雲端供應商時可能會擁有更大的彈性。這種抽象化也讓您可以選擇您感到舒適的複雜程度。您可以使用資料庫管理服務提供的完整抽象化和介面,但由於您也可以存取為您佈建的資料庫伺服器,因此您可以登入並根據需要修改資料庫伺服器。資料庫管理服務也可能提供一個簡單的介面來管理這些作業系統層級的調整。

這種設定的缺點來自於您將依賴多方來確保資料庫的正確運作。這可能會增加服務中斷的機會。您也可能會錯失雲端供應商提供的資料庫服務可用的任何底層最佳化。您的資料庫管理服務只能存取您的雲端供應商向他們公開的內容,並且他們將無法最佳化底層虛擬化或硬體層。

總體而言,使用第三方管理服務取決於偏好和測試。您將需要測試效能並了解定價結構如何在不同使用層級影響您。

總結

以下概述了此處討論的各種選項彼此之間的比較

託管選項本機開發機器獨立伺服器雲端供應商管理第三方託管應用程式平台託管
專案階段開發開發、預備、生產開發、預備、生產開發、預備、生產開發、預備、生產
成本無額外成本可變。購買或租用額外
伺服器加上額外的管理成本。
高度可變,取決於您的選擇
和使用量。
差異很大,取決於您的選擇
和使用量。
高度可變
效能高潛力高度可變高度可變高度可變
擴展性高潛力
管理複雜度
其他注意事項不需要網路設定。適用於
本機開發。
最彈性的選項。也需要最多的
實際操作管理。如果您
內部有硬體或資料庫專業知識,可以投入管理,這是一個不錯的選擇。
您可以投入管理。
通常由提供的
可以執行您的
應用程式的同一雲端供應商提供的高度可擴展解決方案。這允許額外的控制
網路和效能,而無需
執行您自己的伺服器的繁重工作。
第三方託管資料庫具有許多
與雲端供應資料庫相同的優點。
然而,透過第三方管理您的資料庫
第三方,您可以將資料庫
管理與底層雲端供應商分離。
這可以讓未來遷移到不同的
主機更容易,有時還可以提供
更強大的管理選項。
應用程式提供的資料庫服務
平台通常著重於簡單的
管理和存取,優先於大多數其他
因素。成本可能會大幅波動
取決於您的使用情況,因此重要的是
密切關注擴展和使用情況如何
影響您的付款。

託管資料庫的正確選擇很大程度上取決於您的應用程式需求、開發階段以及您自行管理 MySQL 的能力。不同的選擇在這些因素之間提供權衡,使其在特定時間或對於特定組織更為合適。

關於作者
Justin Ellingwood

Justin Ellingwood

Justin 自 2013 年以來一直撰寫關於資料庫、Linux、基礎架構和開發人員工具的文章。他目前與妻子和兩隻兔子住在柏林。他通常不必以第三人稱寫作,這對所有相關方來說都是一種解脫。