Ответ 1
TL;DR;
Mysql не может перезагрузиться из-за нехватки памяти, убедитесь, что у вас настроен соответствующий файл подкачки.
Не помогло? Если это не ваша проблема, более квалифицированные вопросы для продолжения исследований:
- Служба mysqld останавливается один раз в день на сервере ec2
- https://askubuntu.com/questions/422037/optimising-mysql-settings-mysqld-running-out-of-memory
Фон
У меня была именно эта проблема в самой первой системе, которую я установил на EC2, которая характеризуется тем местом, где размещается сайт wordpress, где иногда происходит "Ошибка установления соединения с базой данных".
Журналы показали ту же ошибку, что и OP. Мое чтение ошибки (удаленные временные метки):
- Ошибка памяти:
InnoDB: Fatal error: cannot allocate memory for the buffer pool
- InnoDB не может запускаться без достаточной памяти
[ERROR] Plugin 'InnoDB' init function returned error. [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. [ERROR] Unknown/unsupported storage engine: InnoDB [ERROR] Aborting
- mysqld отключается, что в этом контексте действительно означает отказ от перезапуска!
[Note] /usr/sbin/mysqld: Shutdown complete
Проверка /var/log/syslog
и поиск выходных данных mysql:
Out of memory: Kill process 15452 (mysqld) score 93 or sacrifice child
Killed process 15452 (mysqld) total-vm:888672kB, anon-rss:56252kB, file-rss:0kB
init: mysql main process (15452) killed by KILL signal
init: mysql main process ended, respawning
type=1400 audit(1443812767.391:30): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=21984 comm="apparmor_parser"
init: mysql main process (21996) terminated with status 1
init: mysql main process ended, respawning
init: mysql post-start process (21997) terminated with status 1
<repeated>
Примечание. Возможно, вам придется застревать и выполнить поиск в архивных журналах, если ошибка произошла до того, как журналы были повернуты cron.
Решение
В моем случае основная проблема заключалась в том, что я пренебрег настройкой файла подкачки.
Вы можете проверить, есть ли у вас одна конфигурация, запустив free -m
.
total used free shared buffers cached
Mem: 604340 587364 16976 0 29260 72280
-/+ buffers/cache: 485824 118516
Swap: 0 0 0
В приведенном выше примере Swap: 0 не указывает файл подкачки.
Учебники по настройке:
- https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04
- https://help.ubuntu.com/community/SwapFaq
Обратите внимание, что больше не обязательно лучше! Из руководство Ubuntu:
"Уменьшение возвращает" означает, что если вам нужно больше пространства подкачки, чем в два раза больше вашего размера RAM, вам лучше добавить больше ОЗУ, поскольку доступ к жесткому диску (HDD) примерно на 10 м медленнее, чем доступ к ОЗУ, поэтому что-то, что потребуется 1 секунда, внезапно требуется более 15 минут! И еще более минуты на быстром твердотельном накопителе (SSD)...
Что касается других ответов здесь...
The InnoDB memory heap is disabled
Это действительно не ошибка, просто указание, что InnoDB использует системный распределитель внутренней памяти вместо своих собственных. По умолчанию да /1 и приемлемо для производства.
В соответствии с документами эта команда устарела и будет удалена в версиях MySQL выше 5.6 (и я предполагаю MariaDB):
http://dev.mysql.com/doc/refman/5.6/en/innodb-performance-use_sys_malloc.html
Благодаря: Комментарий Рубина Шаде
[Note] Plugin 'FEDERATED' is disabled.
Сообщение об отключенном FEDERATED не является ошибкой. Это просто означало, что FEDERATED engine не включен для вашего сервера mysql. Он не используется по умолчанию. Если вам это не нужно, не волнуйте это сообщение.
Смотрите: fooobar.com/questions/219537/...