Mysql為什么不推薦使用Docker部署
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
docker可以從遠程倉庫拉取鏡像然后通過鏡像快速的部署應用,非常的方便快捷,但是今天來聊聊為什么Mysql不推薦使用Docker部署這個問題。 1、數據庫擴容麻煩 Mysql是用來存儲的數據,docker部署Mysql之后數據不會存儲在容器上,因為容器關閉之后數據就丟失了,所以容器是需要掛載到宿主機器上,如下圖所示: 隨著業務的持續不斷的發展,Mysql難免會出現需要擴容的情況,但是擴容的時候就會出現一些困難,如下所示: 此時Mysql2是無法掛載到文件1上的,因為宿主機的數據文件是容器獨占的,無法實現兩個容器實例共享一份數據文件。 每個Mysql的容器都掛載了各自的文件上,如何實現文件1和文件2的數據共享呢?此時有如下的解決方案: 方案一:binlog同步 方案二:先全量dump,然后再使用binlog增量同步 方案一是不推薦使用,Mysql擴容是因為業務數據量達到瓶頸了,那么大數據量下使用binlog同步是不合適的。 方案二中全量dump數據的時候需要停機,目的是先讓數據同步到另一份文件上,因為數據需要同步進而讓業務在一段時間內無法使用,在某種情況下也是不合適的。 2、內存資源問題 我們都知道docker是通過應用來做隔離的,而不是通過資源做隔離的,如下圖所示: 假設Mysql應用、MQ應用以及Redis應用都是docker部署的,此時上圖區域的內存是三個應用共享的。這里就存在一個問題,如果MQ應用占用了80%的內存,那么Mysql和Redis就只能共用剩余20%的內存,假設這個剩余的內存不夠Mysql使用,這個時候就會出現Mysql無法提供正常的服務導致整個上層的應用崩潰。 總結: (1)從數據庫擴容角度來看,由于宿主機的數據文件是容器獨占的,所以多個容器就會掛載在多個宿主機文件上,盡管我們可以有方案解決宿主機文件數據共享的問題,但是數據同步方案中存在一定弊端。 (2)內存資源上來考慮,由于docker部署的應用是共享內存的,所以一旦某個應用占用內存過大就會導致其他應用因為內存不足而無法對外提供服務的問題。 (3)不是說不能使用docker部署Mysql,在某些情況下docker部署的Mysql還是比較合適的,如能夠利用中間件和容器化系統能夠自動伸縮、容災、切換、自帶多個節點等場景下是合適進行容器化。 該文章在 2024/11/13 14:37:42 編輯過 |
關鍵字查詢
相關文章
正在查詢... |