日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 镜像数据_mysql官方镜像数据存储问题

發布時間:2025/3/15 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 镜像数据_mysql官方镜像数据存储问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mysql官方鏡像的Dockerfile中,有這么一條設置,即用了VOLUME這個關鍵字,同時后面設置了一個路徑,/var/lib/mysql,這個路徑是用來存儲數據庫的各種表的數據的。

這一條設置會起到什么作用呢??

docker官方文檔對VOLUME這個關鍵詞做了解釋,這個路徑下的數據或者修改,再重新commit一個新的鏡像時,該路徑下的所有變化都會被discard,即所有的修改都會被拋棄,不會被保存到新鏡像中。(詳見官方文檔)

那我們如果想把一些基礎數據在docker run的時候,不用重新導入基礎數據就能直接使用呢??(docker run很快,但是導入數據需要時間,兩個表大概需要二十分鐘,太影響效率!)

有兩種方法:

1、在主機上創建不同的目錄(每個人建一個自己的目錄,拷貝一份基礎數據,這樣互不影響,各寫各的),在docker run的時候使用-v參數將宿主機上的目錄映射到容器里的/var/lib/mysql。

2、既然/var/lib/mysql這個目錄被VOLUME關鍵詞給限制了,我們就先把數據拷貝到容器里的其他目錄,比如根目錄,然后修改docker run的啟動文件(姑且稱為啟動文件,各種軟件的docker鏡像都會有一個啟動腳本,在docker run的時候執行,做一些初始配置、拉起服務的進程),增加這樣一個邏輯: 將我們拷貝到鏡像根目錄中的基礎數據拷貝或者移動到/var/lib/mysql目錄下,比如cp -r /mysql-basic-data /var/lib/mysql,這樣,我們的目的就達到了。

我們采用的第二種解決方法。

問題:

1、如何從宿主機拷貝數據到容器中?

有個命令叫docker cp? xxx? 容器id:xxx

當然也能從容器中拷貝到宿主機上:

docker cp 容器id:xxx? xxx

還有一種場景會用到——很多容器里不能使用vi或者vim編輯文件的,那么你可以先拷貝到宿主機上,編輯修改保存,再拷貝回去。

2、區分Dockerfile和docker run的啟動腳本

Dockerfile是在docker build的時候執行命的,而啟動腳本是在docker run的時候執行的,注意區分其執行場景和時機!!

3、mysql 5.6版本官方鏡像大小300+M,我們的數據大概300M,但是新的鏡像竟然達到了900+M大小,為什么??

具體要看docker存儲原理!!

docker使用的是聯合文件系統(AUFS,網上介紹很多),這個文件系統會把你的修改重新從底層拷貝一份到上層,即使你只有一份數據,AUFS也會把它搞成兩份數據。

同事說了一件事情,即使你在容器里執行一條chown命令,鏡像的大小增加200M都是可能的!!

4、docker進程自動重啟,導致所有容器掛掉

這時使用docker ps是查不出來了,需要使用docker ps -a,然后一個一個的docker start xxx 起來。

解決辦法: docker run的時候加個參數——autorestart,docker daemon重啟,容器也會自動拉起。

另外docker ps -l,是查看哪些容器有修改!!

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mysql 镜像数据_mysql官方镜像数据存储问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。