1. 程式人生 > 資料庫 >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

即可

總結

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