MySQL关于InnoDB的几个错误_MySQL
阿里云服务器上装有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的错误日志比较好,里面记录的一清二楚,逐个排除就好啦

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本站8月5日消息,阿里云宣布,2024云栖大会将于9月19日~21日在杭州云栖小镇举办,将设三日主论坛、400场分论坛与并行话题以及近四万平方米展区。云栖大会对公众免费开放,即日起公众可以通过云栖大会官网免费申请畅享票,另有5000元的全通票可购买,本站附门票网址:https://yunqi.aliyun.com/2024/ticket-list据介绍,云栖大会起源于2009年,最初命名为第一届中国网站发展论坛,2011年演变成阿里云开发者大会,2015年正式更名为“云栖大会”,至今已连续成功举

可以通过以下方式优化MySQL查询性能:建立索引,将查找时间从线性复杂度降至对数复杂度。使用PreparedStatements,防止SQL注入并提高查询性能。限制查询结果,减少服务器处理的数据量。优化连接查询,包括使用适当的连接类型、创建索引和考虑使用子查询。分析查询,识别瓶颈;使用缓存,减少数据库负载;优化PHP代码,尽量减少开销。

在PHP中备份和还原MySQL数据库可通过以下步骤实现:备份数据库:使用mysqldump命令转储数据库为SQL文件。还原数据库:使用mysql命令从SQL文件还原数据库。

如何将数据插入MySQL表中?连接到数据库:使用mysqli建立与数据库的连接。准备SQL查询:编写一个INSERT语句以指定要插入的列和值。执行查询:使用query()方法执行插入查询,如果成功,将输出一条确认消息。

MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的主要变化之一是默认情况下不再启用“MySQL 本机密码”插件。此外,MySQL 9.0完全删除了这个插件。 此更改会影响 PHP 和其他应用程序

要在PHP中使用MySQL存储过程:使用PDO或MySQLi扩展连接到MySQL数据库。准备调用存储过程的语句。执行存储过程。处理结果集(如果存储过程返回结果)。关闭数据库连接。

使用PHP创建MySQL表需要以下步骤:连接到数据库。创建数据库(如果不存在)。选择数据库。创建表。执行查询。关闭连接。

Oracle数据库和MySQL都是基于关系模型的数据库,但Oracle在兼容性、可扩展性、数据类型和安全性方面更胜一筹;而MySQL则侧重速度和灵活性,更适合小到中等规模的数据集。①Oracle提供广泛的数据类型,②提供高级安全功能,③适合企业级应用程序;①MySQL支持NoSQL数据类型,②安全性措施较少,③适合小型到中等规模应用程序。
