天天看點

docker導出MySQL容器_Docker容器中Mysql資料的導入/導出詳解

前言

Mysql資料的導入導出我們都知道一個mysqldump指令就能夠解決,但如果是運作在docker環境下的mysql呢?

解決辦法其實還是用mysqldump指令,但是我們需要進入docker的mysql容器内去執行它,并且通過配置volumes讓導出的資料檔案可以拷貝到主控端的磁盤上

是以操作步驟就可以分為:

配置docker的volumes

進入docker的mysql容器,導出資料檔案

至于資料導入,太過簡單,就不說了

先來看看mysqldump指令常見選項:

--all-databases, -A: 備份所有資料庫

--databases, -B: 用于備份多個資料庫,如果沒有該選項,mysqldump把第一個名字參數作為資料庫名,後面的作為表名。使用該選項,mysqldum把每個名字都當作為資料庫名。

--force, -f:即使發現sql錯誤,仍然繼續備份

--host=host_name, -h host_name:備份主機名,預設為localhost

--no-data, -d:隻導出表結構

--password[=password], -p[password]:密碼

--port=port_num, -P port_num:制定TCP/IP連接配接時的端口号

--quick, -q:快速導出

--tables:覆寫 --databases or -B選項,後面所跟參數被視作表名

--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容器内的/var/lib/mysql建立映射關系

是以下面我進入docker的mysql容器内執行導出指令的時候,隻需要把資料導出在/var/lib/mysql/目錄下,就可以在主控端的./mysql/data/目錄下找到對應的資料檔案

進入容器導出資料

首先執行

docker ps

找到mysql容器的name

然後執行

docker exec -it mysql /bin/bash

進入容器

執行指令

whereis mysql

找到mysql的運作路徑,我這裡是:/usr/local/mysql/bin,用cd進入

cd /usr/local/mysql/bin

請注意,這裡的路徑是指docker容器内的路徑,跟您的主控端路徑沒有關系

執行導出指令

mysqldump -u 使用者名 -p 資料庫名 > 儲存檔案.sql

輸入密碼後基本導出成功,請注意,儲存檔案的路徑要設定在volumes下面,即/var/lib/mysql/下

随後輸入

exit

退出容器内部,回到主控端上,我們就能夠找到導出的資料檔案了

如果您要導出csv格式的話,将mysqldump的那句指令改為:

mysql -u 使用者名 --password=密碼 --database=資料庫名 --execute='SELECT `FIELD`, `FIELD` FROM `TABLE` LIMIT 0, 10000 ' -X > 儲存檔案.sql

即可

總結

以上就是這篇文章的全部内容了,希望本文的内容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支援。