匯入大型 SQL 檔時出現:
ERROR 2013 (HY000): Lost connection to MySQL server during query ERROR 2006 (HY000): MySQL server has gone away ERROR 2002 (HY000): Can't connect to local MySQL server through socket ... (111)
經排查為單條 INSERT 包含過多 VALUES 列(mysqldump 預設 --extended-insert),導致封包超過 max_allowed_packet 或執行時間過長觸發斷線。
mysqldump -u root -p --skip-extended-insert db_name > db_name.sql
INSERT 語句,檔案體積略增但極度穩定。SET GLOBAL max_allowed_packet = 1073741824; (1GB) 並在 my.cnf 永久生效。SET GLOBAL net_read_timeout = 600; SET GLOBAL net_write_timeout = 600;。split 或編輯器將大 SQL 切分為多個小檔依序 SOURCE。gunzip < dump.sql.gz | mysql -u root -p db_name 避免客戶端緩衝整個檔案。mysql --version # mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64)
若頻繁遷移大庫,建議改用 mydumper/myloader 多執行緒並行匯出入,效能提升 5-10 倍。