Mysql匯入資料相當慢

awen7916發表於2015-12-08

匯入資料的方法

匯出(備份):mysqldump -u 使用者名稱 -p databasename >exportfilename

匯入(還原):方法一 mysql -u 使用者名稱 -p databasename

方法二 進入MySQL資料庫控制檯 use 資料庫名,之後:source importfilename

匯入資料非常慢
將JQ1中的方案匯出,然後匯入到JQ2的中(匯出的資料檔案有90M)。上面兩種方法都使用了,但是沒有成功,或者說是十分慢(估計1,2天才能完成)。

解決辦法(十幾分鍾可以導完):

檢視JQ2的mysql引數:
show variables like 'max_allowed_packet';
show variables like 'net_buffer_length';
兩個結果分別是:1047552 和 16384

從JQ1上匯出資料:
mysqldump -uroot -pXXX 方案名 --skip-opt --create-option --set-charset --default-character-set=gbk -e
--max_allowed_packet=1047552 --net_buffer_length=16384 > 匯出的檔案路徑和檔名

注意:max_allowed_packet和net_buffer_length不能比目標資料庫的設定數值大,否則可能出錯。

-e 使用包括幾個VALUES列表的多行INSERT語法;
--max_allowed_packet=XXX 客戶端/伺服器之間通訊的快取區的最大大小;
--net_buffer_length=XXX TCP/IP和套接字通訊緩衝區大小,建立長度達net_buffer_length的行。

也就是此引數指定了一個快取區的大小,用來存放使用者傳送的SQL語句。若接收的SQL語句大於這個快取區,則自動增加大小,直到max_allowed_packet

將匯出的資料匯入至JQ2中
./mysql -uroot -pXXX --default-character-set=gbk 方案名<匯出的檔案路徑和檔名
這樣匯入相當於每次執行多條sql語句,快了很多

 

demo

mysqldump -h192.168.7.3 -uroot -p shb -e --max_allowed_packet=1048576 --net_buffer_length=16384 >F:\shb20151208.sql
mysql -uroot -p123456 shb10 <F:\shb20151208.sql

相關文章