Backup mysql from docker container


Introduction

為了讓想要保存下來的資料可以不會因為容器停止就蒸發掉
都會使用資料卷掛載到本地檔案系統
像Mysql的資料存放位置在/var/lib/mysql
如果需要移植到其他主機時是不能夠直接cp -r
mysql儲存的資料是會辨認主機身份,之前也發現/var/lib/mysql是不能指定在NFS這類掛載網路硬碟的位置

其中一個解法是先用mysqldump指令將資料匯出成一個sql檔
然後再匯入到另一個mysql server

Backup

export sql file to local file system

docker exec CONTAINER /usr/bin/mysqldump -u username --password=yourpassword DBNAME > backup.sql

Import

import sql file to sql service in the running container

cat backup.sql | docker exec -i CONTAINER /user/bin/mysql -u username --password=yourpassword DBNAME

https://gist.github.com/spalladino/6d981f7b33f6e0afe6bb

無聊冷知識

官方或是mysql的Dockerfile在裡面都已經預設/var/lib/mysql
這位置是指定成資料卷
所以不管docker run時有沒有添加-v指定資料卷位置該目錄下的資料都會永久保存

VOLUME /var/lib/mysql

mysql dockerfile


Author: Hung-Lin, Chen
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Hung-Lin, Chen !
  TOC