阿里云服务器上装有MySQL 5.6,这几天MySQL服务经常死掉,启动MySQL服务(service mysql start),却报如下错误

Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

简单的去搜索一下关于此错误的解决方法,找到一个说删除InnoDB表的日志文件即可,于是就尝试了一下(删除操作首先别忘了备份)

不知道mysql数据存放位置的可以这样子查看,找到my.cnf,里面的datadir=/var/lib/mysql既是了

cat /etc/my.cnf 找到mysql数据存放位置

来到这里面有三个文件ibdata1,ib_logfile0,ib_logfile1

其中ibdata1是InnoDB表的共享表空间,切忌不可以删除这个文件,部分InnoDB表的数据就在里面呢

ib_logfile0,ib_logfile1,这两个文件不同配置下名字会不同,是InnoDB表的日志文件(别忘记了InnoDB表示事务安全的,当数据库奔溃时,重启数据库服务,会根据这些日志文件重做一些事务

删除了这两个日志文件,然后启动mysql(service mysql start)这次启动成功了!

--------------------------------------------------------------------------------------------------------

可是过了不久,真的不久,才十几分钟,数据库又挂了,启动数据库(service mysql start),又报下面这个错误

Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

然后再次删除日志文件,再启动,可以了,再过了不久……又挂了,所以明白,问题不出于这里

这些问题,每个人出错的都不一样,网上别人的出错原因也许和你不一样呢,要不人家可以解决,你怎么就不可以解决,故去查看msyql错误记录文件自己瞧个明白

msyql错误记录文件不知道在哪里,可以这样子来找:同样查看my.cnf文件,其中mysqld-safe下的log-error就是mysql错误日志

[mysqld_safe]
log-error=/var/log/mysqld.log

打开它看看,发现一堆错误,用这个命令简单看一下出错重点

cat /var/log/mysqld.log | grep 'ERROR' | less

发现了服务启动时,为何会跑错了

2013-08-04 13:48:22 760 [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace em/temp uses space ID: 2 at filepath: .\em\temp.ibd. Cannot open tablespace mysql/innodb_index_stats which uses space ID: 2 at filepath: .\mysql\innodb_index_stats.ibd 

打开表空间出错!!出这个错的原因是以前有次操作把ibdata1给删除掉了!(ibdata1文件刚才说了,共享表空间!!删除掉了后mysql虽然会重新生成,但是已经损坏了所有的InnoDB数据库了。ps:为什么会删除掉这个文件,我也不知道是什么时候删除了,是通过history看到的)

找到原因了,但是ibdata1这个文件没有备份,恢复不了,还在我这个服务上的数据库都是测试数据,可以drop掉重新导入以前备份的版本,故drop掉损坏的数据库,在mysql命令中是drop不掉的,只能在文件系统里直接删除其文件(第一步已经知道了数据存储位置了,直接删(ps记得先备份))

然后再重建了数据库,导入数据,重启mysql,正常启动,过了一天还没有挂掉!修复成功!第二天再去看一下mysql错误日志,又有了新发现

--------------------------------------------------------------------------------------------------------------

tail -n 200 /var/log/mysqld.log

文件里都在报这样的错误

Error: Table "mysql"."innodb_table_stats" not found.

2013-04-02 09:07:35 7fc53f5e4700 InnoDB: Recalculation of persistent statistics requested for table "mydatabase"."mytable" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead.

但是目前有没察觉到对项目和数据库使用的明显影响,但是还要解决的,这篇博客说的很明白,果断推荐

http://hi.baidu.com/life_to_you/item/d35894c0058a993098b498ee

最后,都没发现什么问题了。MySQL遇到什么问题,第一下还是看下mysql的错误日志比较好,里面记录的一清二楚,逐个排除就好啦

装载注明出处:http://www.cnblogs.com/iamsupercp/p/3675108.html

MySQL关于InnoDB的几个错误的更多相关文章

  1. 黄聪:Mysql开启InnoDB引擎出现1067错误的解决办法

    在my.ini文件添加下面这行: innodb_force_recovery = 1 可以解决:InnoDB: Attempted to open a previously opened tables ...

  2. MySQL Plugin 'InnoDB' init function returned error

    . . 在MySQL的配置文件中,设定default-table-type=InnoDB,发现MySQL无法正常的启动,错误日志中给出了如下的信息: 150210 18:11:19 mysqld_sa ...

  3. 【MySQL】InnoDB: Error: checksum mismatch in data file 报错

    参考:http://www.jb51.net/article/66951.htm 用5.7版本启动原5.5实例后,再用5.5启动出现以下报错 InnoDB: Error: checksum misma ...

  4. MySQL数据库InnoDB存储引擎中的锁机制

    MySQL数据库InnoDB存储引擎中的锁机制    http://www.uml.org.cn/sjjm/201205302.asp   00 – 基本概念 当并发事务同时访问一个资源的时候,有可能 ...

  5. Linux启用MySQL的InnoDB引擎

    前几天公司的一个项目组的同事反应说公司内部的一台Linux服务器上的MySQL没有InnoDB这个引擎,我当时想应该不可能啊,MySQL默认应该 就已经安装了这个引擎的吧,于是上服务器去看了看,发现还 ...

  6. MySQL里创建外键时错误的解决

    --MySQL里创建外键时错误的解决 --------------------------------2014/04/30 在MySQL里创建外键时(Alter table xxx add const ...

  7. Mysql 的InnoDB事务方面的 多版本并发控制如何实现 MVCC

    Mysql的MVCC不能解决幻读的问题,但是Mysql还有间隙锁功能,Mysql的间隙锁工作在Repeatable Read隔离级别下面,可以防止幻读, 参考:Mysql 间隙锁原理,以及Repeat ...

  8. mysql中InnoDB存储引擎的行锁和表锁

    Mysql的InnoDB存储引擎支持事务,默认是行锁.因为这个特性,所以数据库支持高并发,但是如果InnoDB更新数据的时候不是行锁,而是表锁的话,那么其并发性会大打折扣,而且也可能导致你的程序出错. ...

  9. 重新学习MySQL数据库2:『浅入浅出』MySQL 和 InnoDB

    重新学习Mysql数据库2:『浅入浅出』MySQL 和 InnoDB 作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL.P ...

随机推荐

  1. oracle学习 一 (持续更新中)

    首先你需要创建一个表空间,然后,再创建一个用户名,用户名要给他指定一个表空间,并且给这个用户赋予权限, DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构. RESOURCE:拥有 ...

  2. 【Cocos2d-X开发学习笔记】第18期:动作类之改变动作对象、函数回调动作以及过程动作的使用

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.改变动作执行对象 CCTargetedAct ...

  3. c++/java/c# 几种编程语言的指针、引用比较

    前一段时间,我在 cnblogs 别人的博客中,谈到: java 中的引用/指针,与 c++/C# 中的引用/指针不是一个概念. Java 引用,相当于 c++ 指针(fun3).Java 引用可以赋 ...

  4. [Java线程] Java线程池ExecutorService

    示例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.u ...

  5. ELF学习--可执行文件

    承接上一篇.我们来看看可执行文件和重定位文件的不同点. readelf -h test 相比较重定位文件,可执行文件的ELF header中入口地址是0x8048320.而且除了section hea ...

  6. Objc基础学习记录3

    在学习Objective-c中, 数组 1.NSArray, 这是一个不可变的数组,不能修改和删除其中的对象,可以存储任意objective的对象指针. 不能存储int,char类型的,,需要转换为需 ...

  7. 全世界最短IE判定if(!+[1,])的解释(转)

    全世界最短IE判定if(!+[1,])的解释   虽然从司徒先生的博客上看到 全世界最短的IE判定 很长时间了,却一直对于原理没怎么去细看,今天同事(也是一后台程序员,并非前端)又问到这个问题,于是我 ...

  8. C++学习之const整理总结

    1什么是const? (const类型)常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的.(但可以偷梁换柱进行更新) 2为什么引入const? const 推出的初始 ...

  9. 电子图书的编目和OPAC揭示

    摘  要  步入数字图书馆时代,电子资源日益增多,尤其在高校图书馆更加迅猛,怎样将图书馆的电子资源尽可能地整合在OPAC系统的检索功能里,以便更加简便.直观地利用,电子图书的编目已成为重要研究课题.本 ...

  10. STUN: NAT 类型检测方法

    STUN(Simple Transversal of UDP through NATs)[21]是RFC3489 规定的一种NAT 穿透方式,它采用辅助的方法探测NAT 的IP 和端口. STUN 的 ...