MySQL运行一段时间后自动停止问题的排查
在进入主题前,一定要先吐槽下自己,前段时间购买了一台阿里云服务器,最开始打算只是自己个人用的,就买了一台配置很寒碜的服务器:
- CPU: 1核
- 内存: 1 GB
- 操作系统: CentOS 7.2 64位
这个配置亮出来估计好多人都已经知道答案了,下面就说下问题排查的步骤:
- 使用Xshell远程连接上服务器,使用命令 service mysqld restart重启mysql,提示:
MySQL server PID file could not be found! [FAILED]
Starting MySQL.The server quit without updating PID file(/[FAILED]server/mysql/data/iZ2zeabsxnnfzh13g8yqxjZ.pid).
2. 去看mysql的错误日志,但是不知道错误日志在哪里,先去找找mysql的my.cnf文件,这里需要注意下,我在mysql的安装目录下的确找到了一个my.cnf文件,但是改了很多配置项发现没有任何作用,google后才知道这个并不是当前使用的配置文件my.cnf,参考这篇文章找到当前使用的配置文件https://my.oschina.net/manech/blog/861991,找到了配置文件(/etc/my.cnf),找到了错误日志的地方:
log-error=/alidata/log/mysql/error.log,
3. 去错误日志看看:
2017-09-03 17:38:21 20390 [Note] InnoDB: The InnoDB memory heap is disabled 2017-09-03 17:38:21 20390 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2017-09-03 17:38:21 20390 [Note] InnoDB: Memory barrier is not used 2017-09-03 17:38:21 20390 [Note] InnoDB: Compressed tables use zlib 1.2.3 2017-09-03 17:38:21 20390 [Note] InnoDB: Using Linux native AIO 2017-09-03 17:38:21 20390 [Note] InnoDB: Using CPU crc32 instructions 2017-09-03 17:38:21 20390 [Note] InnoDB: Initializing buffer pool, size = 128.0M InnoDB: mmap(137363456 bytes) failed; errno 12 2017-09-03 17:38:21 20390 [ERROR] InnoDB: Cannot allocate memory for the buffer pool 2017-09-03 17:38:21 20390 [ERROR] Plugin ‘InnoDB’ init function returned error. 2017-09-03 17:38:21 20390 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed. 2017-09-03 17:38:21 20390 [ERROR] Unknown/unsupported storage engine: InnoDB 2017-09-03 17:38:21 20390 [ERROR] Aborting 2017-09-03 17:38:21 20390 [Note] Binlog end 2017-09-03 17:38:21 20390 [Note] Shutting down plugin ‘partition’ 2017-09-03 17:38:21 20390 [Note] Shutting down plugin ‘PERFORMANCE_SCHEMA’
其中标为黄色的就比较重要了,百度Cannot allocate memory for the buffer pool都说是无法给innodb分配足够的内存,大多数给出的解决的方案是:修改innodb_buffer_pool_size,但是我这个my.cnf里面没有,那就加一个被呗,顺便将这个字段设置成200M,重启mysql发现一样的结果,还是启动不了,去看日志还是一样的问题,还是太大咯?
4.用free -m看下
total used free shared buff/cache available Mem: 992 574 159 0 258 260 Swap: 0 0 0
只有185M的内存了,只能再改小点咯,改成64.
5.service mysqld restart,终于
Starting MySQL. [ OK ]
买了一台废柴。。。