Memo

メモ > サーバ > 各論: トラブル対応例 > MySQLに接続しようとすると Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' と表示される

■MySQLに接続しようとすると Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' と表示される
エラーが発生したままなら、MySQLの再起動を試す
$ sudo service mysqld restart $ sudo /etc/init.d/mysqld restart
それでも駄目なら、手動で mysql.sock を作るといいらしい(未検証)
$ sudo touch /var/lib/mysql/mysql.sock $ sudo chown mysql:mysql /var/lib/mysql/mysql.sock
MySqlのソケットエラーを解決する - Qiita https://qiita.com/kanohisa/items/564035efd74d9c75bdcb mysqlが起動できない(Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)) - Qiita https://qiita.com/carotene4035/items/e00076fe3990b9178cc0 ただし稼働中のサーバで、常にではなく時々発生しているものがある(すぐに自動で回復する) メモリ不足や同時接続数の問題で、たまたま mysql.sock を読み込めなかった…とかかも PHP - 【Mysql、PHP】mysql.sockが消えてしまう(105500)|teratail https://teratail.com/questions/105500 正しい接続をしなかった場合にも発生することがあるらしい MySQLがクラッシュした場合にもソケットファイルは削除されるらしい ディスク使用率が100%になった場合にも、この現象が発生することがある その場合、「ディスク容量が残り少ない」を参考に不要なデータを削除する ■エラーになってMySQLを再起動するまで回復されなかったときに調査した内容
# cat /var/log/command/uptime/20180817/1530.log 15:30:02 up 102 days, 3:08, 0 users, load average: 5.44, 3.00, 1.33
15:28前後にロードアベレージが急激に上がっている (シングルコアのサーバなのに、瞬間的に6近くまで上がっている / 過去のロードアベレージを記録する仕組みはあらかじめ構築してある)
# vi /var/log/messages Aug 17 15:28:12 aws-terraport kernel: [8824004.377690] Out of memory: Kill process 2908 (mysqld) score 146 or sacrifice child Aug 17 15:28:12 aws-terraport kernel: [8824004.381107] Killed process 2908 (mysqld) total-vm:1491044kB, anon-rss:12028kB, file-rss:0kB
メモリ不足になったようで、OOM Killer によりMySQLが強制終了させられている
# vi /var/log/mysqld.log 180817 15:28:13 mysqld_safe Number of processes running now: 0 180817 15:28:13 mysqld_safe mysqld restarted 180817 15:28:13 [Note] /usr/libexec/mysql55/mysqld (mysqld 5.5.52) starting as process 32053 ... 180817 15:28:13 [Note] Plugin 'FEDERATED' is disabled. 180817 15:28:13 InnoDB: The InnoDB memory heap is disabled 180817 15:28:13 InnoDB: Mutexes and rw_locks use GCC atomic builtins 180817 15:28:13 InnoDB: Compressed tables use zlib 1.2.8 180817 15:28:13 InnoDB: Using Linux native AIO 180817 15:28:13 InnoDB: Initializing buffer pool, size = 512.0MInnoDB: mmap(549453824 bytes) failed; errno 12 180817 15:28:13 InnoDB: Compressed tables use zlib 1.2.8 180817 15:28:13 InnoDB: Using Linux native AIO 180817 15:28:13 InnoDB: Initializing buffer pool, size = 512.0MInnoDB: mmap(549453824 bytes) failed; errno 12 180817 15:28:13 InnoDB: Completed initialization of buffer pool 180817 15:28:13 InnoDB: Fatal error: cannot allocate memory for the buffer pool 180817 15:28:13 [ERROR] Plugin 'InnoDB' init function returned error. 180817 15:28:13 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 180817 15:28:13 [ERROR] Unknown/unsupported storage engine: InnoDB 180817 15:28:13 [ERROR] Aborting 180817 15:28:13 [Note] /usr/libexec/mysql56/mysqld: Shutdown complete 180817 15:28:13 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
直後に、mysqld_safeがMySQLを再起動しようとしている が、「Fatal error: cannot allocate memory for the buffer pool」などがあるので、 メモリ不足で再起動に失敗し、そのままになっている 発生したサーバはAWSのEC2のmicroなので、単純に性能不足なのかもしれない PHPプログラムやMySQLのチューニングでいくらか改善できるかもしれない mysqldが落ちてた時の対応メモ - itochin2の日記(仮) http://itochin2.hatenablog.com/entry/2014/03/06/142225 mysqldとmysqld_safeの関係 | OpenGroove https://open-groove.net/mysql/mysqld-mysqldsafe/

Advertisement