Docker容器中Mysql數(shù)據(jù)的導(dǎo)入/導(dǎo)出詳解
前言
Mysql數(shù)據(jù)的導(dǎo)入導(dǎo)出我們都知道一個(gè)mysqldump命令就能夠解決,但如果是運(yùn)行在docker環(huán)境下的mysql呢?
解決辦法其實(shí)還是用mysqldump命令,但是我們需要進(jìn)入docker的mysql容器內(nèi)去執(zhí)行它,并且通過(guò)配置volumes讓導(dǎo)出的數(shù)據(jù)文件可以拷貝到宿主機(jī)的磁盤(pán)上
所以操作步驟就可以分為:
- 配置docker的volumes
- 進(jìn)入docker的mysql容器,導(dǎo)出數(shù)據(jù)文件
至于數(shù)據(jù)導(dǎo)入,太過(guò)簡(jiǎn)單,就不說(shuō)了
先來(lái)看看mysqldump命令常見(jiàn)選項(xiàng):
- --all-databases, -A: 備份所有數(shù)據(jù)庫(kù)
- --databases, -B: 用于備份多個(gè)數(shù)據(jù)庫(kù),如果沒(méi)有該選項(xiàng),mysqldump把第一個(gè)名字參數(shù)作為數(shù)據(jù)庫(kù)名,后面的作為表名。使用該選項(xiàng),mysqldum把每個(gè)名字都當(dāng)作為數(shù)據(jù)庫(kù)名。
- --force, -f:即使發(fā)現(xiàn)sql錯(cuò)誤,仍然繼續(xù)備份
- --host=host_name, -h host_name:備份主機(jī)名,默認(rèn)為localhost
- --no-data, -d:只導(dǎo)出表結(jié)構(gòu)
- --password[=password], -p[password]:密碼
- --port=port_num, -P port_num:制定TCP/IP連接時(shí)的端口號(hào)
- --quick, -q:快速導(dǎo)出
- --tables:覆蓋 --databases or -B選項(xiàng),后面所跟參數(shù)被視作表名
- --user=user_name, -u user_name:用戶名
- --xml, -X:導(dǎo)出為xml文件
配置volumes
首先我是利用docker-compose進(jìn)行docker容器的編排,完整的配置代碼請(qǐng)看這個(gè)項(xiàng)目: liumapp/rabbitmq-mysql-redis-in-docker
請(qǐng)注意這個(gè)項(xiàng)目的docker-compose.yml配置文件中,有以下幾行:
mysql: container_name: mysql image: mysql:5.5.60 restart: always volumes: - ./mysql/data:/var/lib/mysql - ./mysql/conf/mysqld.conf:/etc/mysql/mysql.conf.d/mysqld.cnf
我對(duì)mysql容器配置的volumes,是把項(xiàng)目的mysql/data目錄和docker容器內(nèi)的/var/lib/mysql建立映射關(guān)系
所以下面我進(jìn)入docker的mysql容器內(nèi)執(zhí)行導(dǎo)出命令的時(shí)候,只需要把數(shù)據(jù)導(dǎo)出在/var/lib/mysql/目錄下,就可以在宿主機(jī)的./mysql/data/目錄下找到對(duì)應(yīng)的數(shù)據(jù)文件
進(jìn)入容器導(dǎo)出數(shù)據(jù)
首先執(zhí)行
docker ps
找到mysql容器的name
然后執(zhí)行
docker exec -it mysql /bin/bash
進(jìn)入容器
執(zhí)行命令
whereis mysql
找到mysql的運(yùn)行路徑,我這里是:/usr/local/mysql/bin,用cd進(jìn)入
cd /usr/local/mysql/bin
請(qǐng)注意,這里的路徑是指docker容器內(nèi)的路徑,跟您的宿主機(jī)路徑?jīng)]有關(guān)系
執(zhí)行導(dǎo)出命令
mysqldump -u 用戶名 -p 數(shù)據(jù)庫(kù)名 > 保存文件.sql
輸入密碼后基本導(dǎo)出成功,請(qǐng)注意,保存文件的路徑要設(shè)置在volumes下面,即/var/lib/mysql/下
隨后輸入
exit
退出容器內(nèi)部,回到宿主機(jī)上,我們就能夠找到導(dǎo)出的數(shù)據(jù)文件了
如果您要導(dǎo)出csv格式的話,將mysqldump的那句命令改為:
mysql -u 用戶名 --password=密碼 --database=數(shù)據(jù)庫(kù)名 --execute='SELECT `FIELD`, `FIELD` FROM `TABLE` LIMIT 0, 10000 ' -X > 保存文件.sql
即可
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- HeidiSQL工具導(dǎo)出導(dǎo)入MySQL數(shù)據(jù)
- MySQL數(shù)據(jù)庫(kù)遷移快速導(dǎo)出導(dǎo)入大量數(shù)據(jù)
- mysql如何利用Navicat導(dǎo)出和導(dǎo)入數(shù)據(jù)庫(kù)的方法
- mysql實(shí)現(xiàn)查詢(xún)結(jié)果導(dǎo)出csv文件及導(dǎo)入csv文件到數(shù)據(jù)庫(kù)操作
- Python之csv文件從MySQL數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出的方法
- mysql導(dǎo)入導(dǎo)出數(shù)據(jù)的示例詳解
相關(guān)文章
Docker中部署Mino并掛載配置文件的項(xiàng)目實(shí)踐
本文主要介紹了Docker中部署Mino并掛載配置文件的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06docker?compose部署mongodb?分片集群的操作方法
分片機(jī)制(Sharding)是MongoDB中用于處理大規(guī)模數(shù)據(jù)集和高負(fù)載應(yīng)用的一種數(shù)據(jù)分布策略,通過(guò)將數(shù)據(jù)均勻分布在多個(gè)服務(wù)器上,分片技術(shù)能夠提高應(yīng)用的可擴(kuò)展性和性能,本文給大家介紹docker?compose部署mongodb?分片集群的相關(guān)操作,感興趣的朋友一起看看吧2024-10-10解決docker容器重啟之后/etc下某些配置文件被重置的問(wèn)題
這篇文章主要介紹了解決docker容器重啟之后/etc下某些配置文件被重置的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03docker刷新配置、修改默認(rèn)驅(qū)動(dòng)方式
這篇文章主要介紹了docker刷新配置、修改默認(rèn)驅(qū)動(dòng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07docker 如何搭建私有倉(cāng)庫(kù)(ubuntu 14.04,Docker版本1.6.4)詳細(xì)介紹
這篇文章主要介紹了docker 如何搭建私有倉(cāng)庫(kù)(ubuntu 14.04,Docker版本1.6.4)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-01-01Docker安裝Nginx問(wèn)題及錯(cuò)誤分析
這篇文章主要介紹了Docker安裝Nginx的問(wèn)題及錯(cuò)誤分析正確的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12