评论

收藏

[MySQL] 【解决】MySql 5.6 运行崩溃错误

数据库 数据库 发布于:2021-07-03 21:45 | 阅读数:223 | 评论:0

  【解决】MySql 5.6 运行崩溃错误
  

  最近弄了一台云主机,配置是20G磁盘空间,1G运行内存的Linux服务器。在上面安装了LAMP(RHEL7.2+Apache2.4+MySql5.6+PHP5.6),然后搭建wordpress网站,可是网站运行没多久,就出现了连接不上数据库。到服务器上使用:ps -aux |grep mysql,发现MySql服务并没有运行,很纳闷怎么运行好好的,就自己停止了。查看了下日志有如下错误提示:
2016-02-20 00:11:03 2762 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2016-02-20 00:11:03 2762 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2016-02-20 00:11:03 2762 [ERROR] Plugin 'InnoDB' init function returned error.
2016-02-20 00:11:03 2762 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2016-02-20 00:11:03 2762 [ERROR] Unknown/unsupported storage engine: InnoDB
2016-02-20 00:11:03 2762 [ERROR] Aborting
  

  从日志的信息看,是说缓冲区的内存不足导致服务终止,我使用: free -m 查看了服务器的内存情况:
total    used    free    shared  buff/cache   available
Mem:   991       470     461     12   59     423
Swap:   0       0       0
  

  

  内存是足够的,尝试再次启动MySql服务 :/etc/init.d/mysqld start结果有如下的错误:
Starting MySQL.. ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).
  

  尝试了好几次,都无法启动,很纳闷。
  尝试调整:innodb_buffer_pool_size 参数的大小,可是还是启动不了。记得之前在虚拟机上也是同样的环境也没有出现过这样的问题,唯一不同的是,这台云主机上没有分配交换分区,是不是这个问题导致?那就增加2G的交换分区试一试。
dd if=/dev/zero of=/udata/men.swap bs=1k count=2048000
mkswap /udata/men.swap
swapon /udata/men.swap
  将交换分区加入的/etc/fstab
  

  vim /etc/fstab
UUID=24357e34-62a1-4645-b3c1-3305c61176e4   swap  swap  defaults    0 0
  

  一切都ok了,再次尝试启动MySQL服务。
/etc/init.d/mysqld start
  Starting MySQL.... SUCCESS!
  

  成功了。。。。难道还真是这样原因。。。。观察了一段时间,暂时未出现故障。
  

  MySQL 5.6还需要做优化。。。。还很吃内存啊。。。
free -m
     total    used    free    shared  buff/cache   available
Mem:   991     857      73       0   60      41
Swap:  1999     670    1329
  

  

  后来在国外的网站上找到了一篇解决同样问题的文章,方法都一样,地址如下:
  http://www.webtrafficexchange.com/solved-mysql-crash-fatal-error-cannot-allocate-memory-buffer-pool
  

  

  


  
关注下面的标签,发现更多相似文章