InnoDB: Fatal error: cannot allocate memory for the buffer pool

logo-mysql-110x57У одного моего клиента наметилась проблема с сервером на Amazon EC2. Сервер MySQL раз в неделю стабильно падает и всё.

Вот фрагмент из логов

131101  3:29:40 [Note] Plugin 'FEDERATED' is disabled.
131101  3:29:40 InnoDB: The InnoDB memory heap is disabled
131101  3:29:40 InnoDB: Mutexes and rw_locks use GCC atomic builtins
131101  3:29:40 InnoDB: Compressed tables use zlib 1.2.3.4
131101  3:29:40 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
131101  3:29:40 InnoDB: Completed initialization of buffer pool
131101  3:29:40 InnoDB: Fatal error: cannot allocate memory for the buffer pool
131101  3:29:40 [ERROR] Plugin 'InnoDB' init function returned error.
131101  3:29:40 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
131101  3:29:40 [ERROR] Unknown/unsupported storage engine: InnoDB
131101  3:29:40 [ERROR] Aborting

Оказалось, проблема частая, особенно на серверах с маленькой памятью.

Вообще в идеале , если используются InnoDB таблицы, то innodb_buffer_pool_size надо делать как можно больше. Но что делать, если сервер мелкий?

Вариант переезда на более мощный сервер понятен, но иногда клиент не считает это оправданным. Тогда просто устанавливаем innodb_buffer_pool_size по-меньше!

[mysqld]
innodb_buffer_pool_size = 10M

Отлично! Эти грабли обошли, и надеюсь не приобрели новых! =)