操作系统版本:Ubuntu 13.04

mysql 版本:mysql-server-5.5

现象:突然之前接到报告说数据库启不来了。第一时间查看硬盘空间,看是否硬盘满了。发现空间使用正常。

root@ns-xxzx-svr:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 19G 16G .3G % /
none .0K .0K % /sys/fs/cgroup
udev 494M .0K 494M % /dev
tmpfs 101M 820K 100M % /run
none 5.0M 5.0M % /run/lock
none 502M 72K 502M % /run/shm
none 100M 276K 100M % /run/user
/dev/sdb1 197G 59G 129G % /hos_media
/dev/sdc1 197G 42G 146G % /root/sdc1

然后查看mysql的出错日志。

root@ns-xxzx-svr:/var/log/mysql# cat error.log
:: [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
:: [Note] Plugin 'FEDERATED' is disabled.
:: InnoDB: The InnoDB memory heap is disabled
:: InnoDB: Mutexes and rw_locks use GCC atomic builtins
:: InnoDB: Compressed tables use zlib 1.2.
:: InnoDB: Using Linux native AIO
:: InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap( bytes) failed; errno
:: InnoDB: Completed initialization of buffer pool
:: InnoDB: Fatal error: cannot allocate memory for the buffer pool
:: [ERROR] Plugin 'InnoDB' init function returned error.
:: [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
:: [ERROR] Unknown/unsupported storage engine: InnoDB
:: [ERROR] Aborting :: [Note] /usr/sbin/mysqld: Shutdown complete

从报错上查看有点像 InnoDB的数据引擎的问题,顺着这个方向会越走越远。通过关键字搜索也都是搜的无关的内容。一时没有头绪。

将报错信息一条条的在google里搜索。当以”InnoDB: mmap(135987200 bytes) failed“为关键字搜索时出现一条有用信息。

会不会也是因为内存过低?这台服务器内存只有1G,有可能造成mysql服务启动不了或宕机。

root@ns-xxzx-svr:/var/log/mysql# free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:

有人建议多加点swap空间。

我查了下服务器中swap空间使用情况:

root@ns-xxzx-svr:/var/log/mysql# sudo swapon -s
Filename Type Size Used Priority
/dev/sda5 partition -

果真,swap分区已用完。这可能就是导致mysql崩溃的原因。内存不够,虚拟内存也不够。不崩才怪。

果断加swap空间。

root@ns-xxzx-svr:/var/log/mysql# parted /dev/sdd
(parted) print
Model: HUAWEI XSG1 (scsi)
Disk /dev/sdd: 1100GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt Number Start End Size File system Name Flags (parted) mkpart primary 4G
(parted) print
Model: HUAWEI XSG1 (scsi)
Disk /dev/sdd: 1100GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt Number Start End Size File system Name Flags
1024MB 4000MB 2976MB primary (parted) mkpart primary 4G 500G
(parted) mkpart primary 500G -
(parted) print
Model: HUAWEI XSG1 (scsi)
Disk /dev/sdd: 1100GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt Number Start End Size File system Name Flags
1024MB 4000MB 2976MB primary
4000MB 500GB 496GB primary
500GB 1100GB 600GB primary (parted) quit
root@ns-xxzx-svr:/var/log/mysql# mkswap /dev/sdd1
Setting up swapspace version , size = KiB
no label, UUID=-bcda-471f-8a17-7d4f150752d6
root@ns-xxzx-svr:/var/log/mysql# sudo swapon /dev/sdd1
root@ns-xxzx-svr:/var/log/mysql# sudo swapon -s
Filename Type Size Used Priority
/dev/sda5 partition -
/dev/sdd1 partition -

加好了之后,查看swap分区使用情况,还有剩余。下面开始尝试启动mysql服务,看能否启动。

root@ns-xxzx-svr:/var/log/mysql# /etc/init.d/mysql start
Rather than invoking init scripts through /etc/init.d, use the service()
utility, e.g. service mysql start Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start() utility, e.g. start mysql
mysql start/running, process

终于活过来了。

参考:

【1】MySQL InnoDB: mmap(137363456 bytes) failed; errno 12

【2】Issue with mysql

【3】How To Add Swap on Ubuntu 12.04

mysql启动失败一例的更多相关文章

  1. MySQL安装过程net start mysql 启动失败 报“错误2,系统找不到文件”的解决办法

    MySQL安装过程net start mysql 启动失败 报“错误2,系统找不到文件”的解决办法 错误2,系统找不到文件. 开始...运行... regedit  注册表项: HKEY_LOCAL_ ...

  2. mysql 启动失败,数据恢复

    mysql 启动失败,数据恢复 2017年02月13日 16:46:36 阅读数:621 Forcing InnoDB Recovery提供了6个等级的修复模式,需要注意的是值大于3的时候,会对数据文 ...

  3. Mysql启动失败解决方案 - 个人经验可能不适合所有场景

    以前一直用的Mysql5.5,安装程序是一个exe程序,安装完了相应的服务也给我注册好了,然后直接启动连接即可. 最近升级到了8.0.15,发现和以前不一样了. 8.0.15下载地址 安装解压之后目录 ...

  4. XAMPP中Apache和Mysql启动失败问题总结

    一.Apache启动失败 xampp启动时显示的错误为: 9:52:41  [Apache]  Attempting to start Apache app... 9:52:41  [Apache]  ...

  5. Linux下mysql启动失败

    原因:强制重启服务器之后,发现mysql启动 失败 解决方法:强制清空 报错路径下的tmp文件,清空之后在tmp下面新建一个文件夹,文件夹的名字在你清空tmp之后启动mysql系统会给你提示 欧克,完 ...

  6. win10 MySQL启动失败问题

    系统升级到win10之后,本地装的MySQL却突然不能启动,系统显示明明就有,可是总是启动失败.在这里解决一下: 解决win10  mysql服务消失,连接不上的问题,注意:以管理员身份运行DOS命令 ...

  7. mysql 启动失败

    1 mysql 启动时报:MySQL Daemon failed to start.并且启动失败 2 查看mysql log日志  less /var/log/mysqld.log 3 从两行erro ...

  8. Mysql启动失败 MYSQL:The server quit without updating PID file

    MySQL5.6启动时出错 提示MYSQL:The server quit without updating PID file 首先执行 /bin/mysqld_safe --user=mysql & ...

  9. mysql启动失败问题记录

    net start mysql 启动mysql服务,启动失败: 手动启动服务,又失败 命令查看日志:mysqld --console 在网上找了解决办法如下: 找到mysql目录,进去bin目录,找到 ...

随机推荐

  1. spring载入外部配置文件的方法

    <bean class=“org.springframework.beans.factory.config.PropertyPlaceholderConfigurer“> <prop ...

  2. Android并发编程 原子类与并发容器

    在Android开发的漫漫长途上的一点感想和记录,如果能给各位看官带来一丝启发或者帮助,那真是极好的. 前言 上一篇博文中,主要说了些线程以及锁的东西,我们大多数的并发开发需求,基本上可以用synch ...

  3. GC频繁抖动的主要原因

    内存抖动 内存抖动是因为大量的对象被创建又在短时间内马上被释放,如循环中分配对象,很容易引起GC,特别是在较大的循环次数或者一个循环中分配较多的临时对象时. 瞬间产生大量的对象 瞬间产生大量的对象,即 ...

  4. kafka集群管理

    1.启动kafka集群 kafka 没有提供同时启动集群中所有节点的执行脚本,这里自定义一个脚本 名称为 kafka-cluster-start.sh 2.关闭节点 kafka自带关闭脚本 kafka ...

  5. centos6.10搭建ELK之elasticsearch6.5.4

    1.环境准备 1.1.安装java环境版本不要低于java8 # java -version java version "1.8.0_191" Java(TM) SE Runtim ...

  6. Tomcat8源码笔记(一)Lifecycle接口

    第一次阅读Tomcat8源码,就以Lifecycle作为笔记阅读的开篇吧,一千个读者就有一千个哈姆雷特,每个人都Tomcat的理解都不同,如果不记录一次Tomcat源码可能忘了就忘了. 断断DEBUG ...

  7. JavaWeb学习(二十二)———EL表达式

    一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数 ...

  8. FFmpeg封装格式处理

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10506636.html FFmpeg封装格式处理相关内容分为如下几篇文章: [1]. F ...

  9. Apollo 5 教你怎么把自己的配置放到 Spring 环境中

    目录: 前言 处理方案 简单例子 前言 有的时候,你可能需要在 Spring 环境中放入一些配置,但这些配置无法写死在配置文件中,只能运行时放入.那么,这个时候该怎么办呢? Apollo 就是搞配置的 ...

  10. [转]Angular CLI 安装和使用

    本文转自:https://www.jianshu.com/p/327d88284abb 一. 背景介绍: 两个概念: 关于Angular版本,Angular官方已经统一命名Angular 1.x统称为 ...