我有一个 EC2 实例,其中 Mysql 服务器运行良好。我从此创建了一个 AMI,并从该 AMI 启动了一个新实例。现在Mysql服务器根本无法在这个新的AMI上启动。
以下是 o/p:
ubuntu@ip-172-31-66-160:~$ sudo service mysql status
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: activating (start-post) (Result: exit-code) since Sun 2019-07-21 20:59:25 IST; 28s ago
Process: 1870 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
Process: 1862 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 1870 (code=exited, status=1/FAILURE); : 1871 (mysql-systemd-s)
Tasks: 2
Memory: 3.2M
CPU: 247ms
CGroup: /system.slice/mysql.service
└─control
├─1871 /bin/bash /usr/share/mysql/mysql-systemd-start post
└─2529 sleep 1
Jul 21 20:59:25 ip-172-31-66-160 systemd[1]: mysql.service: Service hold-off time over, scheduling restart.
Jul 21 20:59:25 ip-172-31-66-160 systemd[1]: Stopped MySQL Community Server.
Jul 21 20:59:25 ip-172-31-66-160 systemd[1]: Starting MySQL Community Server...
Jul 21 20:59:26 ip-172-31-66-160 systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
ubuntu@ip-172-31-66-160:~$ sudo service mysql restart
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
我尝试了所有方法,但无法开始。
我遇到并遵循的最接近的线程没有任何运气:
- https://askubuntu.com/questions/916009/mysql-wont-start-because-of-apparmor
- https://support.plesk.com/hc/en-us/articles/360004185293-Unable-to-start-MySQL-on-Ubuntu-AVC-apparmor-DENIED-operation-open-
请帮忙,我对此一无所知。
最后,我能够使服务器在我的新实例上运行。我缺少的是mysql也有许多配置选项,这些选项会在适当的时候发生变化,并且它们还取决于EC2实例配置。
就我而言,我的新实例的 RAM 非常有限,并且 mysql.cnf 文件试图分配比机器更多的 RAM,因此它失败了。不知何故
期刊CTL -XE
正在给出一个不同的错误,迫使我朝着错误的方向思考。我应该查看 mysql 日志文件,它很快将我指向正确的问题。
我在错误日志文件中找到了以下内容,这有助于我隔离/解决问题:
2019-07-21T16:00:55.658985Z 0 [ERROR] InnoDB: mmap(137428992 bytes) failed; errno 12 2019-07-21T16:00:55.658993Z 0 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2019-07-21T16:00:55.658998Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2019-07-21T16:00:55.659003Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2019-07-21T16:00:55.659620Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-07-21T16:00:55.659628Z 0 [ERROR] Failed to initialize builtin plugins.
2019-07-21T16:00:55.659632Z 0 [ERROR] Aborting
因此,mysql 无法启动,因为系统中不存在请求的内存量。我注释了my.cnf文件中的所有内存分配行(依赖于默认设置),然后它起作用了。
innodb_buffer_pool_size = 16G
key_buffer_size = 2G
max_allowed_packet = 128M
group_concat_max_len = 50000
query_cache_size = 2147483648
query_cache_limit =67108864
希望有人会发现这些信息有用。