linux设置虚拟内存(swap)解决mysql因内存不足挂掉的故障

mysql错误日志显示:

InnoDB: mmap(137363456 bytes) failed; errno 12
2016-03-01 01:38:42 13064 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2016-03-01 01:38:42 13064 [ERROR] Plugin ‘InnoDB‘ init function returned error.
2016-03-01 01:38:42 13064 [ERROR] Plugin ‘InnoDB‘ registration as a STORAGE ENGINE failed.
2016-03-01 01:38:42 13064 [ERROR] Unknown/unsupported storage engine: InnoDB
2016-03-01 01:38:42 13064 [ERROR] Aborting

出现这种原因一般是系统内存不足造成的,解决方法是升级系统内存或者添加swap;

解决方法:
1) 在 /etc/mysql/my.cnf 的 mysqld 下增加下面一句:

innodb_buffer_pool_size = 64M

还要设置一下swap分区,因为我的vps是没有swap分区的,通过fdisk -l 和 1mount 看不到swap的信息,需要手动添加一下。

2) 添加swap分区的步骤:

2.1) dd if=/dev/zero of=/swapfile bs=1M count=1024
2.2) mkswap /swapfile
2.3) swapon /swapfile
2.4) 添加这行: /swapfile swap swap defaults 0 0 到 /etc/fstab

目前已经设置了swap分区,并重启了mysql,后续观察一下看看还会不会出现吧。

时间: 2024-08-07 08:38:53

linux设置虚拟内存(swap)解决mysql因内存不足挂掉的故障的相关文章

linux 如何初始化密码(解决mysql root用户登录不了的问题)

这是我遇到的问题 然后就想这可能是mysql安全模式的问题,解决思路:首先改变mysql的安全模式及密码校验问题,jinrumysql后在更改用户名密码. 1.首先将my.ini中加入在[mysqld]节点上加skip-grant-tables 也可能是my.cnf 主要作用是:跳过表中的验证,可以无密码登陆. 2.登录之后查询plugin字段值: mysql> select plugin from user where user = 'root'; 执行结果plugin字段如下. 3.更新pl

解决mysql提示错误:1045 access denied for user 'root'@'localhost' using password yes

少年,请看下图. 1. 开一个dos 2. 再开一个dos 3.即可.补充一个linux下的: 解决mysql提示错误:1045 access denied for user 'root'@'localhost' using password yes

MySQL将内存用在了哪里

本片文章参考官网讲述MySQL是如何分配内部内存,同时涉及到如何合适设的置内存分配以及如何监控内存的使用情况 官方文档 MySQL在启动时默认被分配给512MB RAM,可以通过设置相关内存参数对其进行设置,下面时MySQL使用内存的地方 1.InnoDB buffer pool 用于缓存表数据.索引及其他的一些辅助缓冲池,为了高效进行缓存管理,buffer pool 应用多种LRU(least recently used)算法,将相邻的page串成链,管理冷热数据 innodb_buffer_

linux系统添加swap虚拟内存与删除配置方法

兄弟连Linux培训教程 linux系统添加swap虚拟内存与删除配置(www.lampbrother.net) 1.swap概述 Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中.这样,系统总是在物理内存不够时,才进行Swap交换. 其实

《linux 内核完全剖析》chapter 13 内存管理 (不含swap.c)

内存管理(memory.c 和swap.s 部分) "倒着看" 先看memory management,很明显,前面各种阻力,都是因为涉及内存管理.不先看这个,我估计前面看了也是白看 我估算着理论打基础砸了差不多一个星期的时间在memory management上面了...感觉很有收获,是时候用实践(code)印证理论了! <modern operating system>讲内存管理那一章 http://blog.csdn.net/cinmyheart/article/de

linux 设置mysql 数据库编码utf8

转载地址 http://www.linuxidc.com/Linux/2015-08/121676.htm 在MySQL数据库中, 当插入数据无法支持中文时, 可将该数据库的编码集设置为utf8, 故在创建数据库时, 将数据库编码集及其他字符编码设置为utf8. 如果之前创建的数据库的数据库编码集不为utf8, 可以进行如下设置: mysql> alter database 数据库名 character set utf8; 或删除原有旧的数据库, 1117.www.qixoo.qixoo.com

linux设置并开启vpn,解决800错误

Linux设置并开启vpn 很多朋友一般在Windows服务版的操作系统下架设VPN服务,或者是路由器上开启VPN.今天笔者就在讲下在Linux操作系统下如何开启VPN服务. 首先介绍一下这次的拓扑,本实验由于是模拟网络环境,所以使用的是一台xp.一台linux服务器和一台windows server2003,分别作为客户端.pptp服务器和路由.在以上拓扑中,Internet使用一台win2003作为路由来替代. 准备安装实验包 [[email protected] Desktop]# ls 

Linux 使用yum install安装mysql登陆不上解决办法

CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/ CentOS Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ 如果仅仅只yum 安装了mysql这个包,启动mysql时就会提示:ERROR 2002 (HY000): Can’t connect to local MySQL

重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)

一般这个错误是由密码错误引起,解决的办法自然就是重置密码. 假设我们使用的是root账户. 1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下: #vim /etc/my.cnf(注:windows下修改的是my.ini) 在文档内搜索mysqld定位到[mysqld]文本段:/mysqld(在vim编辑状态下直接输入该命令可搜索文本内容) 在[mysqld]后面任意一行添加"skip-grant-tables"用来跳过密码验证的过程,如下图所示: 保存文档并退出: #:w