Docker容器中Mysql數(shù)據(jù)的導入/導出詳解
Mysql數(shù)據(jù)的導入導出我們都知道一個mysqldump命令就能夠解決,但如果是運行在docker環(huán)境下的mysql呢?
解決辦法其實還是用mysqldump命令,但是我們需要進入docker的mysql容器內(nèi)去執(zhí)行它,并且通過配置volumes讓導出的數(shù)據(jù)文件可以拷貝到宿主機的磁盤上
所以操作步驟就可以分為:
- 配置docker的volumes
- 進入docker的mysql容器,導出數(shù)據(jù)文件
至于數(shù)據(jù)導入,太過簡單,就不說了
先來看看mysqldump命令常見選項:
- --all-databases, -A: 備份所有數(shù)據(jù)庫
- --databases, -B: 用于備份多個數(shù)據(jù)庫,如果沒有該選項,mysqldump把第一個名字參數(shù)作為數(shù)據(jù)庫名,后面的作為表名。使用該選項,mysqldum把每個名字都當作為數(shù)據(jù)庫名。
- --force, -f:即使發(fā)現(xiàn)sql錯誤,仍然繼續(xù)備份
- --host=host_name, -h host_name:備份主機名,默認為localhost
- --no-data, -d:只導出表結(jié)構(gòu)
- --password[=password], -p[password]:密碼
- --port=port_num, -P port_num:制定TCP/IP連接時的端口號
- --quick, -q:快速導出
- --tables:覆蓋 --databases or -B選項,后面所跟參數(shù)被視作表名
- --user=user_name, -u user_name:用戶名
- --xml, -X:導出為xml文件
配置volumes
首先我是利用docker-compose進行docker容器的編排,完整的配置代碼請看這個項目: liumapp/rabbitmq-mysql-redis-in-docker
請注意這個項目的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
我對mysql容器配置的volumes,是把項目的mysql/data目錄和docker容器內(nèi)的/var/lib/mysql建立映射關(guān)系
所以下面我進入docker的mysql容器內(nèi)執(zhí)行導出命令的時候,只需要把數(shù)據(jù)導出在/var/lib/mysql/目錄下,就可以在宿主機的./mysql/data/目錄下找到對應的數(shù)據(jù)文件
進入容器導出數(shù)據(jù)
首先執(zhí)行
docker ps
找到mysql容器的name
然后執(zhí)行
docker exec -it mysql /bin/bash
進入容器
執(zhí)行命令
whereis mysql
找到mysql的運行路徑,我這里是:/usr/local/mysql/bin,用cd進入
cd /usr/local/mysql/bin
請注意,這里的路徑是指docker容器內(nèi)的路徑,跟您的宿主機路徑?jīng)]有關(guān)系
執(zhí)行導出命令
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 > 保存文件.sql
輸入密碼后基本導出成功,請注意,保存文件的路徑要設(shè)置在volumes下面,即/var/lib/mysql/下
隨后輸入
exit
退出容器內(nèi)部,回到宿主機上,我們就能夠找到導出的數(shù)據(jù)文件了
如果您要導出csv格式的話,將mysqldump的那句命令改為:
mysql -u 用戶名 --password=密碼 --database=數(shù)據(jù)庫名 --execute='SELECT `FIELD`, `FIELD` FROM `TABLE` LIMIT 0, 10000 ' -X > 保存文件.sql
即可
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對本站的支持。
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信