iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mysql数据库意外崩溃导致表数据文件损坏无法启动的问题解决
  • 771
分享到

Mysql数据库意外崩溃导致表数据文件损坏无法启动的问题解决

摘要

问题故障:Mysql数据库意外崩溃,一直无法启动数据库。报错日志: 启动报错:service mysqld restartERROR! MySQL server PID file could not be found!Starti

Mysql数据库意外崩溃导致表数据文件损坏无法启动的问题解决

问题故障:
Mysql数据库意外崩溃,一直无法启动数据库
报错日志

启动报错:service mysqld restart
ERROR! MySQL server PID file could not be found!
Starting MySQL. ERROR! The server quit without updating PID file (/www/wdlinux/mysql/var/iZ2358oz5deZ.pid).

数据库error日志:
200719 22:07:43 InnoDB: Database was not shut down nORMally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Error: trying to add tablespace 840 of name "./ob_wp/ob_termmeta.ibd"
InnoDB: to the tablespace memory cache, but tablespace
InnoDB: 840 of name "./dev_nss/dg_queue.ibd" already exists in the tablespace
InnoDB: memory cache!
200719 22:07:43 mysqld_safe mysqld from pid file /www/wdlinux/mysql/var/iZ2358oz5deZ.pid ended

提示:数据库启动时读取表空间信息时,ob-wp库中的表ob_users.ibd表数据文件已存在于表空间中。

拓展:
存储引擎是myisam, 在数据库目录下会看到3类文件:.frm、.myi、.myd
      (a) *.frm--表定义,是描述表结构的文件。
      (b) *.MYD--"D"数据信息文件,是表的数据文件。
      (c) *.MYI--"I"索引信息文件,是表数据文件中任何索引的数据树
存储引擎是InnoDB, 在data目录下会看到2类文件:.frm、.ibd
     (a) *.frm--表结构的文件。
     (b) *.ibd--表数据文件

出处:https://www.cnblogs.com/liucx/

方法一:
根据提示信息判定该InnoDB表损坏,于是尝试将dev_nss库目录中的表结构和表数据文件备份
mv ob_termmeta.ibd ob_termmeta.ibd,bak
mv ob_termmeta.frm ob_termmeta.frm.bak
然后重启了下mysql,发现还是无法启动,提示其他表数据文件已存在,连续3次将已损坏的文件备份,还是无法启动。故放弃此方法。


方法二:
1.查阅官网文档,在mysql配置文件中/etc/my.cnf添加配置,成功启动
[mysqld]
innodb_force_recovery = 1

备份数据库
mysqldump -h172.168.2.100 -uroot -p -A > mysql_all_bak.sql
如遇报表不存在,mysqldump可以添加参数:--force ,跳过错误

删除数据库
drop database hxdb; 或者将数据库数据库目录 mv hxdb hxdb_bak (保险)

去掉参数 innodb_force_recovery
将之前设置的参数去掉后,重新启动数据库

导入数据
mysql -uroot -p < mysql_all_bak.sql
Warning: Using a passWord on the command line interface can be insecure.
ERROR 1050 (42S01) at line 25: Table "`hxdb`.`tb_info`" already exists

如果提示表已经存在,这是因为将innodb_force_recovery参数去掉后,数据库会进行回滚操作,会生成相应的ibd文件,所以需要将该文件删除掉,删除后重新导入
mysql -uroot -p < mysql_all_bak.sql


注:
innodb_force_recovery参数解释:崩溃恢复模式,通常只有在严重故障排除情况下才会改变。可以的值是从0到6。

只有在紧急情况下才将这个变量设置为大于0的值,这样你才能启动InnoDB并转储你的表。作为一种安全措施,当innodb_force_recovery大于0时,InnoDB可以防止插入、更新或删除操作。
在5.6.15,innodb_force_recovery设置为4或更大,将InnoDB设置为只读模式。由于relay_log_info_repository=TABLE和master_info_repository=TABLE在InnoDB表中存储信息,这些限制可能导致复制管理命令失败并出现错误。

innodb_force_recovery默认情况下为0(正常启动而不强制恢复)。允许的非零值 innodb_force_recovery是1到6。较大的值包括较小值的功能。例如,值3包含值1和2的所有功能。
如果能够转储 innodb_force_recovery值为3或更小的表,则相对安全的是,仅丢失损坏的单个页面上的某些数据。4或更大的值被认为是危险的,因为数据文件可能会永久损坏。值6被认为是过分的,因为数据库页面处于过时状态,这反过来可能会使B树 和其他数据库结构遭受更多破坏。

为了安全起见,请InnoDB防止 INSERT, UPDATE或 DELETE在innodb_force_recovery大于0 时进行操作 。从MySQL 5.6.15开始, 在只读模式下innodb_force_recovery设置4个或更多位置InnoDB。
1 (SRV_FORCE_IGNORE_CORRUPT)
让服务器运行,即使它检测到一个损坏的页面。尝试让SELECT * FROM tbl_name跳过损坏的索引记录和页面,这有助于转储表。
2 (SRV_FORCE_NO_BACKGROUND)
阻止主线程和任何清除线程运行。如果在清除操作期间发生崩溃,则此恢复值将防止崩溃。
3 (SRV_FORCE_NO_TRX_UNDO)
在崩溃恢复后不运行事务回滚。
4 (SRV_FORCE_NO_IBUF_MERGE)
防止插入缓冲区合并操作。如果它们会导致崩溃,就不要做。不计算表统计信息。此值可能永久损坏数据文件。使用此值后,准备删除并重新创建所有二级索引。在MySQL 5.6.15中,将InnoDB设置为只读。
5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
启动数据库时不要查看撤销日志:InnoDB甚至会将未完成的事务视为已提交。此值可能永久损坏数据文件。在MySQL 5.6.15中,将InnoDB设置为只读。
6 (SRV_FORCE_NO_LOG_REDO)
在恢复时不执行重做日志前滚。此值可能永久损坏数据文件。使数据库页面处于过时状态,这反过来可能会给b -树和其他数据库结构带来更多损坏。在MySQL 5.6.15中,将InnoDB设置为只读。

出处:Https://www.cnblogs.com/liucx/

参阅官网:
https://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_force_load_corrupted

希望能帮到你

您可能感兴趣的文档:

--结束END--

本文标题: Mysql数据库意外崩溃导致表数据文件损坏无法启动的问题解决

本文链接: https://www.lsjlt.com/news/7329.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于mysql数据文件损坏导致的mysql无法启动的问题
    环境 rocky linux 9 (跟centos几乎一模一样) myqsl 8.0, 存储引擎使用innodb 问题描述 服务器异常关机,重启启动后发现mysql无法连接,使用命令查看mysql状态: systemctl status ...
    99+
    2023-10-21
    mysql 数据库
  • 数据库软件被注入恶意代码,导致数据库无法启动,ORA-600_16703
            最近,同事负责的项目,机房断电,恢复后需要重新启动数据库,就找到了我,都是常规操作,登录数据库后直接start...
    99+
    2024-04-02
  • MySQL磁盘空间满导致表空间相关数据文件损坏的处理方法
    这篇文章主要讲解了“MySQL磁盘空间满导致表空间相关数据文件损坏的处理方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL磁盘空间满导致表空间相关...
    99+
    2024-04-02
  • mysql修改数据库默认路径无法启动问题的解决
    前言 mysql 修改数据库默认路径时出现服务无法启动,检查日志发现报文件权限的错误。 对于更改后的目录已经设置mysql为目录的owner啦呀!且命令行下直接启动数据库就一切正常。 祭出万能的Google...
    99+
    2024-04-02
  • 如何解决mysql导入数据库文件太大的问题
    这篇文章给大家分享的是有关如何解决mysql导入数据库文件太大的问题的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。mysql导入数据库的文件太大的解决办法:首先打开【php.in...
    99+
    2024-04-02
  • 解决PHPstudy的mysql数据库启动不了的问题
    PHPstudy_pro的默认端口号是3306,我们将其更改为3305或者3307即可解决 PHPstudy_pro的默认端口号是3306,我们将其更改为3305或者3307即可解决。 来源...
    99+
    2023-09-12
    php
  • phpmyadmin中无法导入数据库文件的解决方法
    这篇文章主要介绍了phpmyadmin中无法导入数据库文件的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。phpmyadmin中无法...
    99+
    2024-04-02
  • phpMyAdmin无法导入大的数据库文件的解决方法
    这篇文章给大家分享的是有关phpMyAdmin无法导入大的数据库文件的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。phpMyAdmin无法导入大的数据库文件的解决办法:...
    99+
    2024-04-02
  • 服务器异常断电导致数据库挂掉后参数文件损坏及控制文件丢失的解决方案是什么
    服务器异常断电导致数据库挂掉后参数文件损坏及控制文件丢失的解决方案是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 解决...
    99+
    2024-04-02
  • 怎么解决Oracle 12.2应用PSU后数据库无法启动问题
    这篇文章主要介绍“怎么解决Oracle 12.2应用PSU后数据库无法启动问题”,在日常操作中,相信很多人在怎么解决Oracle 12.2应用PSU后数据库无法启动问题问题上存在疑惑,小编查阅了各式资料,整...
    99+
    2024-04-02
  • mysql数据库导入中文乱码的问题如何解决
    这篇文章给大家分享的是有关mysql数据库导入中文乱码的问题如何解决的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。 mysql数据库汉字乱码怎么办?如何解决mysql数...
    99+
    2024-04-02
  • 怎么解决Oracle RAC数据库个别资源无法自动启动问题
    本篇内容主要讲解“怎么解决Oracle RAC数据库个别资源无法自动启动问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决Oracle RAC数据库个别...
    99+
    2024-04-02
  • MySQL数据库安装后服务无法启动的解决办法
    目录背景:1.配置环境变量2、修改my-default.ini(如果没有就新增.ini文件)3、以管理员身份运行cmd4、输入net start mysql,启动服务5、输入mysq...
    99+
    2024-04-02
  • 如何解决MySQL导入数据库文件最大限制2048KB的问题
    这篇文章将为大家详细讲解有关如何解决MySQL导入数据库文件最大限制2048KB的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。引子:今天为进行服务器空间的转移~~~...
    99+
    2024-04-02
  • 外部navicat无法连接mysql数据库的问题原因及解决方案
    问题起因是这样:在linux操作中的docker中部署了一个数据库,数据库启动之后,端口也映射了(创建容器时用 -p 30036:3306进行的映射),但是在外不想使用navicat连接时,怎么都连不上,本人遇到的问题如下 一、端口虽然映射...
    99+
    2023-09-22
    数据库 linux 服务器
  • 阿里云服务器无法启动sql数据库怎么解决问题
    简介 在使用阿里云服务器时,有时候可能会遇到无法启动SQL数据库的问题。本文将介绍一些常见的解决方法,帮助您快速解决这个问题。解决方法1. 检查网络连接首先,确保您的服务器能够正常访问互联网。可以通过ping命令或者telnet命令来测试网...
    99+
    2024-01-20
    阿里 解决问题 无法启动
  • 如何解决无法远程登入MySQL数据库的问题
    本篇内容介绍了“如何解决无法远程登入MySQL数据库的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!无...
    99+
    2024-04-02
  • rac下修改内存配置后数据库无法启动问题怎么解决
    这篇文章主要介绍“rac下修改内存配置后数据库无法启动问题怎么解决”,在日常操作中,相信很多人在rac下修改内存配置后数据库无法启动问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • 存储cache问题产生大量的log file导致数据库慢的解决办法
    存储cache问题产生大量的log file导致数据库慢的解决办法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。某日接到一个case,具体...
    99+
    2024-04-02
  • mysql中插入表数据中文乱码问题的解决方法
    一、问题 开发中遇到将其它数据库数据插入到mysql数据库表中一直会报类似如下错误: Incorrect string value: '\xE6\x88\x91' for column 'name' at...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作