У меня есть экземпляр t2.small в AWS , который работает в течение большей части 10 месяцев без перезапуска экземпляра EC2 / сервера apache / сервера mysqld и внезапно, несколько минут назад, он не может подключиться к базе данных.
Мне не удалось получить доступ к страницам, которые подключаются к базе данных, и попытка войти в phpmyadmin возвращает ошибку mysqli_real_connect(): (HY000/2002): No such file or directory
Итак, во время паники я сделал следующее:
- Попытка перезапустить сервер mysql с помощью
sudo service mysqld restart
, но он просто продолжал выдавать STOPPED
- Перезапустил экземпляр EC2
- Он живет (пока, пока снова не рухнет)
Поскольку он разбился, я хотел бы знать, почему он разбился и как предотвратить его повторное падение.
Я покопался в mysqld.log и нашел ниже информацию:
Version: '5.6.39' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL)
2019-06-17 14:08:19 15623 [Warning] Buffered warning: Performance schema disabled (reason: init fa
iled).
2019-06-17 14:08:19 15623 [Note] Plugin 'FEDERATED' is disabled.
2019-06-17 14:08:19 15623 [Note] InnoDB: Using atomics to ref count buffer pool pages
2019-06-17 14:08:19 15623 [Note] InnoDB: The InnoDB memory heap is disabled
2019-06-17 14:08:19 15623 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2019-06-17 14:08:19 15623 [Note] InnoDB: Memory barrier is not used
2019-06-17 14:08:19 15623 [Note] InnoDB: Compressed tables use zlib 1.2.8
2019-06-17 14:08:19 15623 [Note] InnoDB: Using Linux native AIO
2019-06-17 14:08:19 15623 [Note] InnoDB: Using CPU crc32 instructions
2019-06-17 14:08:19 15623 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2019-06-17 14:08:19 15623 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2019-06-17 14:08:19 15623 [ERROR] Plugin 'InnoDB' init function returned error.
2019-06-17 14:08:19 15623 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-06-17 14:08:19 15623 [ERROR] Unknown/unsupported storage engine: InnoDB
2019-06-17 14:08:19 15623 [ERROR] Aborting
...
...(shutdown a bunch of plugins)
...
2019-06-17 14:08:19 15623 [Note] /usr/libexec/mysql56/mysqld: Shutdown complete
Я искал вокруг и нашел Несоответствующий размер пула буферов InnoDB
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html
В частности, он детализирует решение для несовместимого размера пула буферов, выполнив:
innodb_buffer_pool_chunk_size = 536870912
innodb_buffer_pool_instances = 4
innodb_buffer_pool_size = (536870912 * 4) * 8 = 17179869184
Вопросы:
- Кто-нибудь из вас сталкивался с этим? Как вы решили это?
- Что на самом деле происходит с сервером? Действительно ли мне не хватает памяти для mysqld, поскольку в журналах говорится, что не может выделить память для пула буферов ? (Я всегда проверяю время от времени
top
, и всегда есть хотя бы половина его бесплатной.)
- Откуда вышеприведенный пример от AWS получил число
536870912
? И куда мне поставить линии? (/etc/my.cnf)?
Спасибо за чтение и любые комментарии или предложения.