记一次血淋淋的MySQL崩溃修复案例

第一种方法1. 建立一张新表,导入数据,删除原表,重启MySQL,重命名数据库,最后改回存储引擎。第二种方法1. 使用mysqldump将表格导出,再导入到InnoDB表中。备份导出数据脚本,并在需要时导入。第三种方法1. 配置my.cnf,设置`innodb_force_recovery`值,重启MySQL。2. 导出数据脚本,备份数据库。3...
记一次血淋淋的MySQL崩溃修复案例
本文提供了一次MySQL数据库崩溃后的修复案例,旨在帮助读者在遇到类似问题时能够迅速且有效地解决问题,无需担心“删库跑路”的风险。
首先,问题描述指出,研究MySQL源代码、调试时,MySQL出现崩溃,并且损坏了InnoDB文件。幸运的是,此情况发生在调试环境下。通过查看日志,可以发现是innodb引擎出现问题。进一步分析日志,找到强制恢复的方法。在my.cnf配置文件中,需要添加`innodb_force_recovery=1`,然后重启MySQL。若该设置无效,可以尝试其他值,例如2-6。重启后,使用mysqldump或pma导出数据,执行修复操作,最后将`innodb_force_recovery`参数恢复默认值0。
配置文件中的`innodb_force_recovery`参数负责影响整个InnoDB存储引擎的恢复状况。默认值为0,表示执行所有恢复操作,可能导致无法启动MySQL并记录错误日志。而设置值为1-6则允许执行更多操作,如对表进行select、create、drop操作,但不允许执行insert、update或delete操作。
本文提供了三种修复MySQL崩溃的方案:
第一种方法1. 建立一张新表,导入数据,删除原表,重启MySQL,重命名数据库,最后改回存储引擎。
第二种方法1. 使用mysqldump将表格导出,再导入到InnoDB表中。备份导出数据脚本,并在需要时导入。
第三种方法1. 配置my.cnf,设置`innodb_force_recovery`值,重启MySQL。
2. 导出数据脚本,备份数据库。
3. 删除关键文件(ib_logfile0、ib_logfile1、ibdata1),备份后删除。
4. 重新配置my.cnf,删除或修改`innodb_force_recovery`值,重启MySQL。
5. 将数据导入MySQL数据库。
在执行任何操作时,请确保数据备份成功,并注意处理过程中可能出现的特定注意事项。通过本文提供的步骤和方法,读者可以更直观地了解如何处理MySQL崩溃问题,确保数据库的稳定运行。
2024-10-08
mengvlog 阅读 81 次 更新于 2025-10-31 06:04:53 我来答关注问题0
  •  爱可生云数据库 MySQL恢复中的几个问题解决方法

    一、Can’t connect to MySQL server on ‘localhost’ (10061)翻译:不能连接到 localhost 上的mysql 分析:这说明“localhost”计算机是存在的,但在这台机器上却没提供MySQL服务。需要启动这台机器上的MySQL服务,如果机子负载太高没空相应请求也会产生这个错误。解决:既然没有启动那就去启动这台机子...

  •  翡希信息咨询 故障分析 | 记一次 MySQL 复制故障 -Error_code:1317

    答案:MySQL 从库出现的复制故障,错误代码为 1317,通常指示在复制过程中遇到了问题,导致复制线程停止。针对此问题,我们可以按照以下步骤进行详细分析和解决。一、问题背景 MySQL 从库报错信息指出,复制协调器因为工作线程中的错误而停止。具体的错误信息提示我们查看主库的二进制日志文件以及从库的错误日...

  •  誉祥祥知识 记一次mysql迁移的方案与遇到的坑

    记一次MySQL迁移的方案与遇到的坑背景由于历史业务数据采用MySQL来存储,其中有一张操作记录表video_log,每当用户创建、更新或审核人员审核时,对应的video_log就会增加一条日志。这个log表只有插入操作,因此,一个video对应多条log。假设一天有10万个video,平均每个video对应5条log,那么一天就会产生50万...

  •  赛玖百科小窍门 记一次centos下mysql的database disk image malformed

    初次尝试重启MySQL服务,但操作失败,出现timeout,状态为failed。尝试使用stop命令停止MySQL服务,同样失败。检查MySQL状态:使用service mysqld status命令检查MySQL服务状态,发现服务仍在运行(running)。强制终止MySQL进程:由于服务已不可用,决定直接终止MySQL进程。通过cat /var/run/mysqld/mysqld.pid找到...

  •  薯条de番茄酱 怎样修复mysql表

    当mysql服务在运行时,也可以用mysql内建命令mysqlcheck来修复。语法:mysqlcheck -r 数据库名 表名 -uuser -ppass mysqlcheck -r sports_results mytable -uuser -ppass sports_results.mytable OK 利用mysqlcheck可以一次性修复多个表。只要在数据库名后列出相应表名即可(用空格隔开)。或者数据库名...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部