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