1. 程式人生 > 其它 >匯入30G.sql檔案的一次經歷

匯入30G.sql檔案的一次經歷

事件背景,日常使用的測試庫資料太舊了。以前是同事換的,現在他已經跑路了,所以只能自己試著換,順便學習一下。簡單來說就是將正式庫的資料匯出來,在匯入測試庫。匯出的約30G。

正常匯入的過程

1、開啟cmd,登入MySQL。語句:mysql -uroot -ppassword。
登入成功如下:

2、然後執行語句:source .sql;(檔案位置)。

過程中遇到的問題:

匯入前期沒有什麼問題。在過了幾個小時之後出現瞭如下問題:

No connection. Trying to reconnect... ERROR 2005 (HY000): Unknown MySQL server host '02:18:13','6',NULL,0.0,0,0,0,0,142,0,-84,152,100000,141,140,143,NULL,0.0,142.2,0.0,-83.8,152.0,10000' (0) ERROR: Can't connect to the server


上網搜了一下,好像和字元編碼有關。
請教了一個朋友,給了我幾個建議:
1、在登入時指定編碼和IP:mysql -uroot -ppassword -h127.0.0.1 --default-character-set=utf8
2、關閉防火牆,禁止在匯入過程中別人訪問。

之後發現了別的問題,但是確實是有作用的,因為要比之前匯入的資料多。

新的問題:失去連線,資料庫服務自己關閉了。

這個問題在網上很容易找。說是因為資料庫中存在的兩個配置:可以用語句show VARIABLES like '%timeout%' 檢視。
wait_timeout — 指的是mysql在關閉一個非互動的連線之前所要等待的秒數,其取值範圍為1-2147483(Windows),1-31536000(linux),預設值28800。
interactive_time — 指的是mysql在關閉一個互動的連線之前所要等待的秒數(互動連線如mysql gui tool中的連線),其取值範圍隨wait_timeout變動,預設值28800。
在配置檔案my.ini中改到最大就不會有斷開連線和服務自動關閉的問題了。

最後遇見了一個磁碟空間不夠的問題:


在網上看了一下,目前MySQL使用的資料引擎innoDB,對錶的大小沒有限制。但可以人為設定表的大小。
之後就是清理空間了,由於本身磁碟空間就不多。資料庫再怎麼清也不夠,就把資料庫的日誌等不需要的東西都關掉,節省空間。

按照同事的語句執行發現,關閉多餘的設定後發現匯入的速度變快了很多,大概6個小時就匯入完成了,快了一倍不止的樣子。

好好學習,為了統治世界!!!啊嗚!