用阿里云的vps mysql今天突然挂掉,登录服务器查看日志信息如下:
150714 10:39:33 [Note] Plugin 'FEDERATED' is disabled. 150714 10:39:33 InnoDB: The InnoDB memory heap is disabled 150714 10:39:33 InnoDB: Mutexes and rw_locks use GCC atomic builtins 150714 10:39:33 InnoDB: Compressed tables use zlib 1.2.3 150714 10:39:33 InnoDB: Using Linux native AIO 150714 10:39:33 InnoDB: Initializing buffer pool, size = 128.0M InnoDB: mmap(137363456 bytes) failed; errno 12 150714 10:39:33 InnoDB: Completed initialization of buffer pool 150714 10:39:33 InnoDB: Fatal error: cannot allocate memory for the buffer pool 150714 10:39:33 [ERROR] Plugin 'InnoDB' init function returned error. 150714 10:39:33 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 150714 10:39:33 [ERROR] Unknown/unsupported storage engine: InnoDB 150714 10:39:33 [ERROR] Aborting
解决方法:
1) 在 /etc/mysql/my.cnf 的 mysqld 下增加下面一句:
innodb_buffer_pool_size = 64M
还要设置一下swap分区,因为我的vps是没有swap分区的,通过fdisk -l 和 1mount 看不到swap的信息,需要手动添加一下。
2) 添加swap分区的步骤:
//1.停止swap分区 swapoff -a //2.进入目录 cd /var //3.获取要增加的SWAP文件块 512M的swap文件(1024 * 512MB = 524288) dd if=/dev/zero of=swapfile bs=1024 count=524288 //4.创建SWAP文件 /sbin/mkswap swapfile //5.激活SWAP文件 /sbin/swapon swapfile //6.查看SWAP信息是否正确 /sbin/swapon -s //7.添加到fstab文件中让系统引导时自动启动 echo "/var/swapfile swap swap defaults 0 0" >>/etc/fstab
目前已经设置了swap分区,并重启了mysql,后续观察一下看看还会不会出现吧。