溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何解決Mysql導(dǎo)入導(dǎo)出時(shí)遇到的問題

發(fā)布時(shí)間:2021-07-28 11:28:07 來源:億速云 閱讀:190 作者:小新 欄目:MySQL數(shù)據(jù)庫

這篇文章給大家分享的是有關(guān)如何解決Mysql導(dǎo)入導(dǎo)出時(shí)遇到的問題的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

背景

自從把我手上的任務(wù)全部轉(zhuǎn)換成docker運(yùn)行和管理之后,遇到了一系列的坑,這次是mysql備份的問題。

原因是啟動(dòng)mysql鏡像的時(shí)候沒有指定-v,導(dǎo)致一段時(shí)間之后docker很大,原來的磁盤不夠了,需要遷移到新磁盤。

在使用導(dǎo)入導(dǎo)出的時(shí)候出現(xiàn)了一些問題,浪費(fèi)了很多時(shí)間去解決。

解決過程

定位mysql鏡像過大

查看容器占用的空間

```docker system df```

如何解決Mysql導(dǎo)入導(dǎo)出時(shí)遇到的問題

查看詳細(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

此時(shí)根據(jù)上面返回的信息,只有兩個(gè)容器有VOLUMES,一個(gè)是mysql,還一個(gè)是redis,所以使用docker inspect container_id命令查看具體容器具體的信息,發(fā)現(xiàn)確實(shí)是9.3G的那個(gè)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ù)還在,所以另起一個(gè)mysql容器,并且使用-v映射到宿主機(jī)。

2. 然后執(zhí)行:docker exec -i mysqld mysql -uroot -proot federation < /mnt/vdb/data/mysql/fed_db.sql

錯(cuò)誤來了

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)入成功。

如何解決Mysql導(dǎo)入導(dǎo)出時(shí)遇到的問題

  • 這個(gè)里面的Rows,和我導(dǎo)入之后的顯示的不一樣

  • 這個(gè)里面的Rows,和我導(dǎo)入之后的顯示的不一樣

  • 這個(gè)里面的Rows,和我導(dǎo)入之后的顯示的不一樣

如何解決Mysql導(dǎo)入導(dǎo)出時(shí)遇到的問題

  • WTF?總數(shù)1688,只顯示1480?

  • 進(jìn)入到docker容器里面,使用命令行查詢,確實(shí)是1688,確實(shí)是展示的Rows不對(duì),So...

總結(jié)

使用docker時(shí),要考慮好需不需要外掛卷,一般數(shù)據(jù)庫的最好都外掛,備份遷移都很方便

不要過分依賴數(shù)據(jù)庫的GUI,命令行才是最證實(shí)可靠的

實(shí)在不行,你狂加硬盤吧,反正都是在服務(wù)器上,但是要確保,服務(wù)器不會(huì)蹦,否則數(shù)據(jù)容易丟失。

感謝各位的閱讀!關(guān)于“如何解決Mysql導(dǎo)入導(dǎo)出時(shí)遇到的問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI