在mysqldump備份導出的時候類似用如下語句導出數據
mysqldump -uroot -p’passwd’ –opt –default-character-set=utf8 –triggers -R –hex-blob –single-transaction –no-autocommit –master-data=2 test_game mail >mail.sql
出現類似如下報錯:
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `mail` at row: 1754283
查詢資料
大概說是因為mysqldump來不及接受mysql server端發送過來的數據,Server端的數據就會積壓在內存中等待發送,這個等待不是無限期的,當Server的等待時間超過net_write_timeout(默認是60秒)時它就失去了耐心,mysqldump的連接會被斷開,同時拋出錯誤Got error: 2013: Lost connection。
增加net_write_timeout可以解決上述的問題的。在實踐中發現,在增大 net_write_timeout後,Server端會消耗更多的內存,有時甚至會導致swap的使用(並不確定是不是修改 net_write_timeout所至)。建議在mysqldump之前修改net_write_timeout為一個較大的值(如1800),在 mysqldump結束後,在將這個值修改到默認的60。
在sql命令行裡面設置臨時全局生效用類似如下命令:
SET GLOBAL net_write_timeout=1800;
修改了這個參數後再備份,不再報錯
注意,這個參數不是mysqldump選項,而是mysql的一個配置參數。
其它可能遇到error: 2013的解決方法:
在mysql選項文件(如my.cnf)中加入
[mysqld]
skip-name-resolve
禁止MySQL對外部連接進行DNS解析,使用這一選項可以消除MySQL進行DNS解析的時間