服务器上使用MySQL5.6的版本,在启动MySQL服务使用命令/etc/init.d/mysqld start时总会提示
Starting MySQL../usr/local/mysql/bin/mysqld_safe: line 183: 11305 Killed nohup /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=VM-0-3-centos.err --pid-file=/usr/local/mysql/data/VM-0-3-centos.pid --port=3306 < /dev/null > /dev/null 2>&1
ERROR! The server quit without updating PID file (/usr/local/mysql/data/VM-0-3-centos.pid).
在使用reboot命令重启服务器后mysql服务又能正常运行,但是过了一会儿发现mysql服务又死掉了,使用/etc/init.d/mysqld start命令也还是会一直出现ERROR! The server quit without updating PID file的报错,而且服务器的内存使用还超高。
在网上搜索相关问题,根据给出的解决办法(如权限、残余数据影响服务启动等)并不能解决问题。如果上述原因,在重启服务器后应该也启动不了mysql服务才对。
出现这样的情况是由于mysql默认缓存设置对于低内存的环境并不合理。
如果你是购买的阿里云或者腾讯云等入门级的云服务器,其给的内存一般是1G左右。在服务器上安装了MySQL5.6及以上的版本,就会比较容易出现内存占用过高的问题。MySQL5.6的升级初衷都是在高配服务器上面的,通过修改配置文件my.cnf中的performance_schema_max_table_instances参数,能够有效降低内存占用。
默认的配置是:
performance_schema_max_table_instances=12500
table_definition_cache=1400
table_open_cache=2000
修改参数:
performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
保存之后重新启动MySQL服务,其内存占用即可从400MB以上降低至40MB左右。