MySQL容器化后,數(shù)據(jù)的存儲(chǔ)方式發(fā)生了改變。傳統(tǒng)的數(shù)據(jù)庫(kù)部署方式是在服務(wù)器上直接安裝MySQL,并將數(shù)據(jù)文件存儲(chǔ)在磁盤中。而在容器化部署中,數(shù)據(jù)文件存儲(chǔ)在容器內(nèi)部,需要通過(guò)掛載方式將數(shù)據(jù)存儲(chǔ)到宿主機(jī)上,以避免容器重建或遷移時(shí)數(shù)據(jù)丟失的問(wèn)題。
以下是一個(gè)簡(jiǎn)單的MySQL容器啟動(dòng)命令,其中指定了數(shù)據(jù)卷掛載和端口映射:
docker run -d \ --name mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -v /srv/mysql:/var/lib/mysql \ -p 3306:3306 \ mysql:latest
其中,-v /srv/mysql:/var/lib/mysql
表示將宿主機(jī)的/srv/mysql
目錄掛載到MySQL容器內(nèi)的/var/lib/mysql
目錄下,以實(shí)現(xiàn)數(shù)據(jù)卷的共享。
在容器內(nèi)使用MySQL命令行工具導(dǎo)出數(shù)據(jù)時(shí),需要將導(dǎo)出的數(shù)據(jù)文件存儲(chǔ)到數(shù)據(jù)卷掛載的目錄下。例如:
mysql -uroot -p123456 -e "SELECT * FROM mydb.mytable" >/var/lib/mysql/mytable.sql
當(dāng)容器重建或遷移時(shí),可以使用相同的掛載目錄啟動(dòng)新的MySQL容器,并導(dǎo)入之前導(dǎo)出的數(shù)據(jù)文件:
docker run -d \ --name mysql2 \ -e MYSQL_ROOT_PASSWORD=123456 \ -v /srv/mysql:/var/lib/mysql \ -p 3307:3306 \ mysql:latest mysql -uroot -p123456 mydb< /var/lib/mysql/mydb.sql
以上是MySQL容器化后數(shù)據(jù)存儲(chǔ)的相關(guān)內(nèi)容,希望對(duì)讀者有所幫助。