數據庫不適合docker及容器化的原因

數據庫不適合docker及容器化的原因

數據庫不適合docker及容器化的幾大原因:

1、數據不安全

即使你要把 docker 數據放在主機來存儲 ,它依然不能保證不丟數據。 Docker volumes 的設計圍繞 Union FS 鏡像層提供持久存儲,但它仍然缺乏保證。

使用當前的存儲驅動程序,Docker 仍然存在不可靠的風險。 如果容器崩潰并數據庫未正確關閉,則可能會損壞數據。

2、運行數據庫的環境需求

??吹?DBMS 容器和其他服務運行在同一主機上。 然而這些服務對硬件要求是非常不同的。

數據庫(特別是關系型數據庫)對 IO 的要求較高。 一般數據庫引擎為了避免并發資源競爭而使用專用環境。如果將你的數據庫放在容器中,那么將浪費你的項目的資源。 因為你需要為該實例配置大量額外的資源。 在公有云,當你需要 34G 內存時,你啟動的實例卻必須開 64G 內存。在實踐中,這些資源并未完全使用。

怎么解決? 您可以分層設計,并使用固定資源來啟動不同層次的多個實例。 水平伸縮總是比垂直伸縮更好。?

3、網絡問題

要理解 Docker 網絡,您必須對網絡虛擬化有深入的了解。也必須準備應付好意外情況。你可能需要在沒有支持或沒有額外工具的情況下,進行 bug 修復。

4、狀態

在 Docker 中打包無狀態服務是很酷的,可以實現編排容器并解決單點故障問題。 但是數據庫呢? 將數據庫放在同一個環境中,它將會是有狀態的,并使系統故障的范圍更大。下次您的應用程序實例或應用程序崩潰,可能會影響數據庫。

5、額外的隔離對數據庫是不利的

其實我在第二點和第三點原因中提到了這一點。 但我把這個列為單獨的原因,因為我想再次強調這一事實。 我們擁有的隔離級別越多,我們獲得的資源開銷就越多。 相比專用環境而言,容易水平伸縮可以使我們得到更多的好處。 然而在 Docker 中水平伸縮只能用于無狀態計算服務,而不是數據庫。

我們沒有看到任何針對數據庫的隔離功能,那為什么我們應該把它放在容器中?

推薦教程:docker教程

以上就是數據庫不適合

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享