導(dǎo)出數(shù)據(jù)庫的時候報如下錯誤
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table
mailat row: 2637433
查詢資料
大概說是因為mysqldump來不及接受mysql server端發(fā)送過來的數(shù)據(jù),Server端的數(shù)據(jù)就會積壓在內(nèi)存中等待發(fā)送,這個等待不是無限期的,當(dāng)Server的等待時間超過net_write_timeout(默認(rèn)是60秒)時它就失去了耐心,mysqldump的連接會被斷開,同時拋出錯誤Got error: 2013: Lost connection。
解決方案一
增加net_write_timeout可以解決上述的問題的。在實踐中發(fā)現(xiàn),在增大 net_write_timeout后,Server端會消耗更多的內(nèi)存,有時甚至?xí)?dǎo)致swap的使用(并不確定是不是修改 net_write_timeout所至)。建議在mysqldump之前修改net_write_timeout為一個較大的值(如1800),在 mysqldump結(jié)束后,在將這個值修改到默認(rèn)的60。
在sql命令行里面設(shè)置臨時全局生效用類似如下命令:
SET GLOBAL net_write_timeout=1800;
修改了這個參數(shù)后再備份,不再報錯
注意,這個參數(shù)不是mysqldump選項,而是mysql的一個配置參數(shù)
解決方案二
在執(zhí)行 mysqldump 的時候可以通過添加 --quick
的參數(shù)來避免出現(xiàn)這樣的問題
--quick,-q
該選項用于轉(zhuǎn)儲大的表。它強制mysqldump從服務(wù)器一次一行地檢索表中的行而不是檢索所有行并在輸出前將它緩存到內(nèi)存中。
參考文檔
http://www.linuxyw.com/linux/yunweiguzhang/20130609/566.html
http://www.cnblogs.com/haven/archive/2012/10/27/2742141.html