私が最近1GB近いMySQLのダンプファイルを用いてローカルの開発環境へDB復元を行う際に出現した
ERROR 2013 (HY000) at line : Lost connection to MySQL server during query
エラーの解決方法を記述します.
TL;DR
- wait_timeout
- max_allowed_paket
- innodb_buffer_pool_size
を大きめに設定してみよう.
/etc/my.cnf
[mysqld]
wait_timeout = 86400
max_allowed_packet = 1G
innodb_buffer_pool_size = 1G
ERROR 2013 (HY000) at line : Lost connection to MySQL server during query
が出現したら
ERROR 2013 (HY000) at line : Lost connection to MySQL server during query
が出現してしまったら,/etc/my.cnf
の[mysqld]
内にmax_allowed_packet
を設定してみましょう.
[mysqld]
max_allowed_packet = 16M
多くの方がこれで直るみたい.
これ設定して直った!!って記事をよく見た気がする.
私の場合はここの値を16Mにしても512Mにしても1Gにしても2Gにしてもエラーが出てくるので違うなって思った.
原因はmax_allowed_packet
ではないと思ったとき
復元,ものすごく時間もかかるのに毎回エラーで終わるんだよね.
なんて時は/etc/my.cnf
の[mysqld]
内にwait_timeout
とinnodb_buffer_pool_size
を設定してみましょう.
[mysqld]
wait_timeout = 86400
innodb_buffer_pool_size = 1G
私はこれで直りました.
max_allowed_packet
は原因ではないなと思いながらも1G(ダンプファイルがそれくらいだったので)にしておいたので,最終的に追記した設定は以下の通りになりました.
[mysqld]
wait_timeout = 86400
max_allowed_packet = 1G
innodb_buffer_pool_size = 1G
もしも同じような境遇で困っている方がいれば参考にどうぞ.
おまけ
ダンプファイルをガッツガツ復元させてるとログファイルが一杯になってしまったりしませんか?
このログファイルを真っ新にしたいと思った時,sudo cat /dev/null
がパーミッションエラーで弾かれて泣いたので一緒にメモとして記述しておきます.
$ sudo cat /dev/null | sudo tee mysql-query.log
以上.