mysqldが落ちてた時の対応メモ
開発環境のmysqldが死んでいた。
その時に確認した内容と対応の備忘録。
エラーログを確認する
/usr/local/mysql/var/mysql.err
WE ROLL BACK TRANSACTION (1)
140306 08:25:16 mysqld_safe Number of processes running now: 0
140306 08:25:17 mysqld_safe mysqld restarted
140306 8:25:18 [Note] Plugin 'FEDERATED' is disabled.
140306 8:25:18 InnoDB: The InnoDB memory heap is disabled
140306 8:25:18 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140306 8:25:18 InnoDB: Compressed tables use zlib 1.2.3
140306 8:25:18 InnoDB: Initializing buffer pool, size = 2.0G
InnoDB: mmap(2197815296 bytes) failed; errno 12
140306 8:25:18 InnoDB: Completed initialization of buffer pool
140306 8:25:18 InnoDB: Fatal error: cannot allocate memory for the buffer pool
140306 8:25:18 [ERROR] Plugin 'InnoDB' init function returned error.
140306 8:25:18 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140306 8:25:18 [ERROR] Unknown/unsupported storage engine: InnoDB
140306 8:25:18 [ERROR] Aborting
140306 8:25:18 [Note] /usr/local/mysql55/sbin/mysqld: Shutdown complete
「innodb_buffer_pool_size」を2G割り当てようとしているけど、メモリ確保に失敗して
STORAGE ENGINEがUnknownと言っている。
対応
確保するメモリを減らした。
/etc/my.cnfの「innodb_buffer_pool_size」を1Gに設定
そして再起動。
/etc/init.d/mysqld stop /etc/init.d/mysqld start
その他
しかし何が原因でメモリ確保に失敗したのかは不明。。
レコードロックしている風なログがあったけど、それでメモリ食いつくすのかなぁ。
あとで確認する。