iT邦幫忙

1

mariadb匯入資料失敗

mariadb 10,將sql檔案放置在本機tmp匯入
mysql5移轉mariadb會跳出錯誤
ERROR 2013 (HY000) at line 849: Lost connection to MySQL server during query
查過一些方式沒辦法解決
這個資料庫比較大,在原機就佔了1.5G,就連sql檔也有500mb
有人遇過嗎?

0
bizpro
iT邦大師 1 級 ‧ 2018-05-18 12:52:07
最佳解答

這是因為timeout.

請修改相關參數. 例如:
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_net_read_timeout

改為6000秒.

看更多先前的回應...收起先前的回應...
bizpro iT邦大師 1 級 ‧ 2018-05-18 12:54:19 檢舉

沒注意到上面的連結.

hsiang11 iT邦研究生 5 級 ‧ 2018-05-18 13:45:28 檢舉

找到問題了 我把max_allowed_packet下在[mysqldump]
結果輸出輸入是不同的,變成沒有生效

但是很怪的是 整個DB在mariadb佔空間變少了
InnoDB latin1_swedish_ci 1.3 GB

mysql卻比較大
InnoDB utf8_general_ci 1.5 GB

bizpro iT邦大師 1 級 ‧ 2018-05-18 14:12:08 檢舉

latin1_swedish_ci 是單位元
utf8_general_ci 是1~4位元, 非ASCII語系至少會佔2位元.

語言編碼別弄錯了. 會損失資料的.

原table移轉前81萬筆id 移轉後73萬筆

看來是有錯誤,不過跟語言編碼無關. 應該要有錯誤訊息的.

試著執行:
mysql -u root -p dbname -f < xxx.sql

-f 表示force, 應該會把錯誤顯示在螢幕上.

要先清空資料庫

hsiang11 iT邦研究生 5 級 ‧ 2018-05-18 14:42:05 檢舉

加 -f參數並未出現任何錯誤
我試過預設latin1_swedish_ci 開新資料庫
跟utf8_general_ci開新資料庫
出來的結果最多匯入1.4G 還是感覺有少

查出來結果是這樣,移轉後少了將近100MB資料量
mysql 1495.80 MB
mariadb 1400.24 MB
不知道是不是mysql5移轉mariadb10差距太多了

bizpro iT邦大師 1 級 ‧ 2018-05-18 15:15:16 檢舉

用diff比較兩個mysqldump的結果看看

hsiang11 iT邦研究生 5 級 ‧ 2018-05-18 18:05:17 檢舉

測過備份--all-databases;已經相當接近原始數據了,少了大概15MB左右,但是只備份單一資料庫
再倒回mariadb就會發生資料上少了100多MB
而且跟我說的資料庫名稱問題看起來無關
mysql轉mariadb10問題真難解@@

bizpro iT邦大師 1 級 ‧ 2018-05-18 21:15:39 檢舉

分別對兩個資料庫做mysqldump, 再用diff比較. 參考指令:

$ mysqldump <dbname> -uroot -p --no-create-info --no-create-db --extended-insert=FALSE > backup01.sql
$ mysqldump <dbname> -uroot -p --no-create-info --no-create-db --extended-insert=FALSE > backup02.sql

其中extended-insert=FALSE是逐筆列出.
$diff backup01.sql backup02.sql
看看是那些資料不見.

之前我遇過的是因為中文字元出問題.

hsiang11 iT邦研究生 5 級 ‧ 2018-05-21 18:45:03 檢舉

目前測試的情況 mysql 5.5> mysql5.5 資料還原應該算正常
直接移除mysql裝mariadb5.5,觀察資料正常
但是mariadb5.5 不管怎麽mysqldump sql檔都會0K 指令很快執行結束但是沒有跳出錯誤

看來資料不太相容

hsiang11 iT邦研究生 5 級 ‧ 2018-05-22 11:00:30 檢舉

我看問題是有可能原始的資料庫table就有損毀的問題導致無法還原
MyISAM跟InnoDB併用,還有資料庫名稱的問題
導致還原不斷的出狀況,程式人的想法有些跟我不一樣
資訊庫預設InnoDB他們還是會去用MyISAM
不知道有沒有辦法直接對sql備份檔將所有引擎全部統一改Innodb

hsiang11 iT邦研究生 5 級 ‧ 2018-05-22 18:37:04 檢舉

基本上未必是少資料 因為備份還原的過程都未出錯
有可能是phpmyadmin新版設計邏輯不同導致有些資料看不到
比方說開一個table 4.8版的預設值是SELECT * FROM abc
在4.4不排序之下 SELECT * FROM abc ORDER BY created_time DESC
自動幫你加入排序了
而且資料列數4.4顯示全部列數
4.8卻顯示一個含糊的數字 ~4,929,783要每一個點開來才會慢慢累加顯示正確列數

導致一直覺得有少資料,這些大版本改變之後很多有什麼大變化阿

bizpro iT邦大師 1 級 ‧ 2018-05-22 22:40:12 檢舉
bizpro iT邦大師 1 級 ‧ 2018-05-22 22:49:28 檢舉

用MyISAM的工程師應該是來自2013年以前?

hsiang11 iT邦研究生 5 級 ‧ 2018-05-23 00:04:38 檢舉

沒辦法 我家的php仁兄還說用innodb是亂搞= =

bizpro iT邦大師 1 級 ‧ 2018-05-23 10:28:23 檢舉

MyISAM不支援Transaction和Foreign Key! 這是資料庫應用程式的基本.

hsiang11 iT邦研究生 5 級 ‧ 2018-05-23 10:39:43 檢舉

同一個庫包含Myisam跟innodb會不會有問題?

bizpro iT邦大師 1 級 ‧ 2018-05-23 11:11:03 檢舉

一般運作沒問題, 但MyISAM不支援同步備份. MyISAM像是早期的DBASE. 

hsiang11 iT邦研究生 5 級 ‧ 2018-05-23 14:01:31 檢舉

同步備份是指mysqldump嗎?

0
小魚
iT邦研究生 2 級 ‧ 2018-05-17 19:26:37

你是用什麼軟體移轉的?
還是怎麼移轉的?

hsiang11 iT邦研究生 5 級 ‧ 2018-05-18 09:54:49 檢舉

直接用mysql指令匯入本機sql檔

小魚 iT邦研究生 2 級 ‧ 2018-05-18 11:55:00 檢舉

使用linux的mysql登入嗎?

hsiang11 iT邦研究生 5 級 ‧ 2018-05-18 12:29:16 檢舉

mysql -u root -p dbname < xxx.sql的指令

0
kksugsay
iT邦新手 3 級 ‧ 2018-05-18 10:04:31

以下做法有試過嗎? 有問題再說~
/images/emoticon/emoticon10.gif
https://blog.csdn.net/lovemysea/article/details/79121154

我要發表回答

立即登入回答