`

MySQL数据库INNODB 表损坏修复处理过程

阅读更多
最近mysql数据库经常死掉,用命令net stop mysql命令也无法停掉,关闭Tomcat的时候,出现Waiting for N instance(s) to be deallocated 信息。查了下,大概就是程序没有对数据库连接释放,导致Connection泄露了。因为用的是开元集成的平台,内部程序也不可能一下子给改掉的,就验证一下咯。启动Tomcat,用户登录系统,用netstat -ano|findstr 8000命令来查看tomcat端口占用情况,可以看到8000端口会被用户的IP地址占用,而对应的PID是0,PID=0是什么呢,是叫System Idel Process的一个进程,这个进程是一个空闲的进程。Tomcat一直被这个进程占用,没有释放,时间长了用户多了,mysql就死掉了,至于是不是程序没有释放连接,这个应该是没可能,因为系统已经用了2年,这种情况出现的太少了。
看一下mysql中表的情况,表的数据长度到达了几个G了,这种是BLOB类型的,存储的数据过多,这样的话是不是因为数据量太大,用户在用的时候对数据库进行操作,空间又不够,互相等待,造成死锁的问题呢?
     这年头,一定要注意备份啊,mysql要备份的东西比较多,
     (1)表结构文件,MySQL\MySQL Server 5.1\data目录下存放的就是数据库结构,会看到相应的数据库目录,数据库目录下面有.frm文件,.myd文件,.myi文件,这些文件都是表结构的文件。
     (2)表数据文件,MySQL Datafiles/ibdata1文件
     (3)日志文件,MySQL\MySQL Server 5.1\data目录下面ib_logfile0文件和ib_logfile1文件。二进制日志文件,如果你想要重新处理日志止的语句,这很有用。
     你的数据库结构没有问题的情况下,想恢复数据,如果有(2)、(3)应该是没有问题的,当时我只有(2),把ibdata1文件copy过去,恢复数据还是出了很多状况,启动系统还是不能用的,mysql日志一直提示Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB log files.说多了都是泪,谁让咱是IT呢,系统坏掉了电话都要被用户打爆的节奏,hold不住,无所不用其极的,各种搜索资料啊,最后尝试一下大多数人的办法,设置innodb_force_recovery参数。
    innodb_force_recovery影响整个InnoDB存储引擎的恢复状况。默认为0,表示当需要恢复时执行所有的

innodb_force_recovery可以设置为1-6,大的数字包含前面所有数字的影响。当设置参数值大于0后,可以对表进行select,create,drop操作,但insert,update或者delete这类操作是不允许的。

1(SRV_FORCE_IGNORE_CORRUPT):忽略检查到的corrupt页。
2(SRV_FORCE_NO_BACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash。
3(SRV_FORCE_NO_TRX_UNDO):不执行事务回滚操作。
4(SRV_FORCE_NO_IBUF_MERGE):不执行插入缓冲的合并操作。
5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交。
6(SRV_FORCE_NO_LOG_REDO):不执行前滚的操作。
    设置innodb_force_recovery=4重启msql,再恢复成默认值(即不需要再my.ini文件时设置innodb_force_recovery参数),重启mysql,重启Tomcat,OK了,太惊喜了。
    菜鸟一个,其中原理讲的都不太清楚,经验之谈,仅供参考。
分享到:
评论

相关推荐

    MySQL数据库INNODB表损坏修复处理过程分享

    下面将详细介绍处理MySQL数据库InnoDB表损坏的步骤,以及如何从备份中恢复。 1. **识别问题**: 错误日志中的信息是诊断问题的关键。在示例中,错误日志显示了数据库页面的腐败,具体为页号30506。错误日志还提供...

    MYSQL数据库修复程序

    MySQL数据库修复程序是一种技术密集型的过程,主要用于解决数据库在运行过程中遇到的各种问题,如数据丢失、表损坏、系统崩溃等。在本场景中,我们关注的是如何通过特定工具,如Navicat,来管理和修复MySQL数据库中...

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

    MySQL数据库在运行过程中可能会遇到各种异常情况,例如意外崩溃,这可能导致表数据文件损坏,进而使得数据库服务无法正常启动。当这种情况发生时,数据库的日志会显示出错信息,帮助我们定位问题。在本案例中,MySQL...

    MYSQL数据库修复大师

    MySQL数据库修复大师是一款专业的数据库恢复工具,专为MySQL用户提供服务,旨在帮助用户在遇到数据库损坏、数据丢失等问题时,能够高效、准确地恢复重要的数据库信息。这款软件通过深入解析MySQL的数据存储格式,...

    MYSQL数据库修复工具

    但在没有备份的情况下,就需要借助专业的修复工具,比如这款"MYSQL数据库修复工具",对损坏的数据库进行分析和修复。 "Backup For MySQL.exe"可能是该工具提供的数据库备份功能,允许用户定期备份数据库,以防不测...

    MYSQL数据库表的修复教程

    本教程将深入探讨MySQL数据库表的修复方法,帮助你理解可能导致数据损坏的原因,并提供有效的解决策略。 首先,数据库表损坏可能由多种原因引起。最常见的原因之一是数据库服务器的非正常关机或强制重启,这在电源...

    怎么恢复mysql数据库/数据库丢失怎么处理

    然而,数据库的意外丢失或损坏可能带来严重的后果,因此掌握如何恢复MySQL数据库至关重要。本篇将详细介绍面对数据库丢失或损坏时的处理方法。 首先,了解MySQL数据库丢失或损坏的原因是关键。这可能源自硬件故障、...

    MySQL数据库innodb启动失败无法重启的解决方法

    MySQL数据库的InnoDB存储引擎是其核心特性之一,它提供了事务处理、行级锁定以及数据恢复等高级功能。然而,当遇到InnoDB启动失败并导致MySQL数据库无法重启时,这通常意味着存在一些严重的问题,可能涉及到数据损坏...

    mysql数据库修复专家

    "mysql数据库修复专家"就是针对这种需求的专业工具,它覆盖了MySQL 3到6版本的错误修复,能够处理多种类型的数据库文件,包括MYD、IBD和ibdata1。 MYD、IBD和ibdata1是MySQL数据库中不同类型的数据文件: 1. MYD...

    完美解决mysql启动后随即关闭的问题(ibdata1文件损坏导致)

    在MySQL数据库系统中,"ibdata1" 文件是InnoDB存储引擎的核心文件,它存储了表数据、索引以及InnoDB的系统表空间信息。当MySQL服务启动后立即关闭,通常意味着在数据库运行过程中遇到了严重问题,这可能是由于数据...

    mysql数据库备份和恢复工具

    MySQL数据库是世界上最受欢迎的开源关系型数据库管理系统之一,其稳定性和高效性使其在各种规模的企业中得到广泛应用。在日常操作中,对数据库进行备份和恢复是保障数据安全、防止意外丢失的重要环节。本文将深入...

    MYSQL数据表损坏的原因分析和修复方法小结(推荐)

    MySQL数据库中的数据表损坏是一个严重的问题,可能导致数据丢失或服务中断。本文主要分析了MySQL数据表损坏的原因,并提供了相应的预防措施和修复方法。 1. **数据表损坏的原因**: - 服务器突然断电:电源中断...

    Mysql数据库误删恢复方法.docx

    本文将详细介绍如何通过`.frm`和`.ibd`文件来恢复已删除的MySQL数据库,主要包括三个关键步骤:恢复数据库文件、恢复表结构和恢复表数据。 1. **恢复 mas2020 数据库文件** 当数据库被误删时,首先要通过文件恢复...

    mysql表修复的实用命令

    在MySQL数据库管理与维护的过程中,表修复是一项非常重要的工作,特别是在使用MyISAM存储引擎时。当遇到诸如数据损坏、表结构错误等问题时,能够快速有效地进行表修复至关重要。本文将详细探讨“mysql表修复的实用...

Global site tag (gtag.js) - Google Analytics