背景
自從把我手上的任務(wù)全部轉(zhuǎn)換成docker運行和管理之后,遇到了一系列的坑,這次是mysql備份的問題。
原因是啟動mysql鏡像的時候沒有指定-v,導(dǎo)致一段時間之后docker很大,原來的磁盤不夠了,需要遷移到新磁盤。
在使用導(dǎo)入導(dǎo)出的時候出現(xiàn)了一些問題,浪費了很多時間去解決。
解決過程
定位mysql鏡像過大
查看容器占用的空間
![](http://img.jbzj.com/file_images/article/201908/201982990547697.jpg?20197299557)
查看詳細(xì)信息
Local Volumes space usage:
VOLUME
NAME LINKS SIZE
3e764b0633ea2c3f3dc5b0bf79dc753055d7c09451b477d3015650c66ea4a5fb 0 0B
598a592e1f9d90d2564c7c52f45f6f6a96784ad0426ec60682299fa1a1b93b96 0 0B
5eb12b3b0091810bbe3c94c5801ad2f2ff51d79b69b0ac01eb37cf00d37d89f6 0 0B
admin_logs 0 0B
f42e3ef90e4c7b3658a0fb4a877e90b298b12cb58cd63f38d9b4ad5c2ab41d73 0 0B
3361b9c615e09708170018dc7d170b8d4b498dd83cbcb155a3d41234d08e8119 1 9.3G
此時根據(jù)上面返回的信息,只有兩個容器有VOLUMES,一個是mysql,還一個是redis,所以使用docker inspect container_id命令查看具體容器具體的信息,發(fā)現(xiàn)確實是9.3G的那個Volume。
CONTAINER ID IMAGE COMMAND LOCAL VOLUMES SIZE
cb76bbc211e6 mysql "docker-entrypoint.s…" 1 7B
備份mysql到新掛的盤
```docker exec -it mysql mysqldump -u用戶名 -p密碼 數(shù)據(jù)庫 > /mnt/vdb/data/mysql/test_db.sql```
用戶名、密碼和數(shù)據(jù)庫自己修改
導(dǎo)入mysql
1. 為了保證之前的數(shù)據(jù)還在,所以另起一個mysql容器,并且使用-v映射到宿主機。
2. 然后執(zhí)行:docker exec -i mysqld mysql -uroot -proot federation /mnt/vdb/data/mysql/fed_db.sql
錯誤來了
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the
right syntax to use near 'mysqldump: [Warning] Using a password on the
command line interface can be insec' at line 1
我搜索了很多的資料,都沒有效果,于是決定使用圖形化工具直接備份,于是使用navicat,備份,在新的鏡像導(dǎo)入,并且導(dǎo)入成功。
![](http://img.jbzj.com/file_images/article/201908/201982990950722.jpg?20197299957)
- 這個里面的Rows,和我導(dǎo)入之后的顯示的不一樣
- 這個里面的Rows,和我導(dǎo)入之后的顯示的不一樣
- 這個里面的Rows,和我導(dǎo)入之后的顯示的不一樣
![](http://img.jbzj.com/file_images/article/201908/201982991027334.jpg?201972991036)
- WTF?總數(shù)1688,只顯示1480?
- 進入到docker容器里面,使用命令行查詢,確實是1688,確實是展示的Rows不對,So...
總結(jié)
使用docker時,要考慮好需不需要外掛卷,一般數(shù)據(jù)庫的最好都外掛,備份遷移都很方便
不要過分依賴數(shù)據(jù)庫的GUI,命令行才是最證實可靠的
實在不行,你狂加硬盤吧,反正都是在服務(wù)器上,但是要確保,服務(wù)器不會蹦,否則數(shù)據(jù)容易丟失。
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
您可能感興趣的文章:- MySQL中常見的八種SQL錯誤用法示例
- MySql 快速插入千萬級大數(shù)據(jù)的方法示例
- MySQL慢SQL語句常見誘因以及解決方法