[特殊字符] 从数据库无法访问到成功修复崩溃表:一次 MySQL 故障排查实录

一次典型的 MySQL 故障排查与修复全过程,涵盖登录失败、表崩溃、innodb_force_recovery 救援、坏表剔除与数据恢复等关键操作。


一、问题背景

某业务系统运行多年,数据库使用的是 MySQL 8.0.18,近期在一次服务器重启后,发现无法正常连接数据库,提示:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

尝试重启 MySQL,过程似乎正常:

sudo service mysql restart # 显示 SUCCESS

但用 mysql -u root -p 登录时依旧提示账号密码错误。开始怀疑是否数据损坏或权限配置有误。


二、排查思路

1. 登录失败:确认密码正确性

  • 使用其他账户尝试连接(如 test 用户)。

  • 发现部分用户仍可登录,说明 数据库服务本身是正常的,但 root 权限或数据可能损坏。

2. 可登录用户访问数据时报错

登录后,执行 SQL 删除某张表时报错:

DROP TABLE imp_index_warn_data; ERROR 1036 (HY000): Table 'tablespace_files' is read only

甚至强制设置参数后依旧失败:

SET GLOBAL innodb_fast_shutdown = 0; DROP TABLE imp_index_warn_data; # 报错 3604,存储引擎无法删除该表

结论:该表已严重崩溃,影响了 InnoDB 正常功能


三、制定解决策略

目标

  • 保住正常表的数据

  • 剔除坏表 imp_index_warn_data

  • 尽量避免数据损失与停机时间

解决方案路线图

  1. 使用 innodb_force_recovery 启动数据库。

  2. 导出除坏表以外的所有数据。

  3. 停止数据库服务,物理删除坏表相关文件。

  4. 启动数据库,删除坏表元数据。

  5. 恢复数据库服务到正常模式。


四、操作步骤详解

步骤 1:修改 my.cnf,启用恢复模式

编辑 /etc/my.cnf

[mysqld] innodb_force_recovery = 6

含义:略过大部分恢复步骤并只读启动。仅用于应急,不可长期开启。

保存后重启数据库:

sudo service mysql restart


步骤 2:导出正常表数据

使用 mysqldump 排除坏表:

mysqldump -u root -p --skip-lock-tables i18n_demo > i18n_demo.sql

确保 imp_index_warn_data 未导出。


步骤 3:停止数据库服务,删除坏表文件

sudo service mysql stop

进入数据目录(示例路径如下,具体看你的配置):

cd /usr/local/mysql/mysql-8.0.18/data/i18n_demo

备份坏表相关文件:

mkdir ~/bad_table_backup mv imp_index_warn_data.* ~/bad_table_backup/


步骤 4:重启数据库,清除元数据

重启服务:

sudo service mysql start

登录数据库,清理元数据:

DROP TABLE imp_index_warn_data;

此时应该不会再报错。


步骤 5:导入数据并恢复服务正常

取消 innodb_force_recovery

# /etc/my.cnf 中移除或注释: # innodb_force_recovery = 6

重启服务:

sudo service mysql restart

导入之前备份的数据:

mysql -u root -p i18n_demo < i18n_demo.sql

至此,数据库恢复完成!


五、总结与经验教训

✅ 收获

  • 理解 innodb_force_recovery 各个级别的作用。

  • 掌握 MySQL 启动失败或崩溃时的应急处理手段。

  • 明确了“逻辑删除表”与“物理删除文件”的边界和使用时机。

❌ 教训

  • 未开启 binlog、没有定期全量备份,是很大风险。

  • 某些老旧系统的数据表结构混乱、未做分区或冷热分离,极易出现单表崩溃。


六、附录:常用命令速查

操作命令
查看服务状态sudo systemctl status mysql
停止 MySQLsudo service mysql stop
启动 MySQLsudo service mysql start
数据导出mysqldump -u root -p db_name > backup.sql
数据导入mysql -u root -p db_name < backup.sql


如果你也遇到类似问题,记得第一时间备份,并小心操作 innodb_force_recovery 的等级!任何强制操作都要以“可恢复”为前提。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92792.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Agent】API Reference Manual(API 参考手册)

https://github.com/Intelligent-Internet/CommonGround/blob/main/docs/framework/03-api-reference.md 以下是这份 API Reference Manual(API 参考手册) 的完整中文翻译: API 参考手册 版本:0.1 目录 概览 1.1 API 目的 1.2 通信协议与核心概念 HTTP API 2.1 POST /se…

LeetCode Hot 100 全排列

给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1&#xff1a;输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2&#xff1a;输入&#xff1a;nums [0,1]…

AI大模型如何有效识别和纠正数据中的偏见?

当下&#xff0c;人工智能大模型已成为推动各行业发展的关键力量&#xff0c;广泛应用于自然语言处理、图像识别、医疗诊断、金融风控等领域&#xff0c;为人们的生活和工作带来了诸多便利。然而&#xff0c;随着其应用的不断深入&#xff0c;数据偏见问题逐渐浮出水面&#xf…

如何通过内网穿透,访问公司内部服务器?

“凌晨2点&#xff0c;销售总监王姐在机场候机时突然接到客户电话——对方要求立即查看产品库存数据。她慌忙翻出笔记本电脑&#xff0c;却发现公司内网数据库没有公网IP&#xff0c;VPN连接又卡在验证环节……这样的场景&#xff0c;是否让你想起某个手忙脚乱的时刻&#xff1…

12. isaacsim4.2教程-ROS 导航

1. Teleport 示例 ROS 服务的作用&#xff1a; 提供了一种同步、请求-响应的通信方式&#xff0c;用于执行那些需要即时获取结果或状态反馈的一次性操作或查询。 Teleport 服务在 ROS 仿真&#xff08;尤其是 Gazebo&#xff09;和某些简单机器人控制中扮演着瞬移机器人或对象…

DeepSpeed-FastGen:通过 MII 和 DeepSpeed-Inference 实现大语言模型的高吞吐文本生成

温馨提示&#xff1a; 本篇文章已同步至"AI专题精讲" DeepSpeed-FastGen&#xff1a;通过 MII 和 DeepSpeed-Inference 实现大语言模型的高吞吐文本生成 摘要 随着大语言模型&#xff08;LLM&#xff09;被广泛应用&#xff0c;其部署与扩展变得至关重要&#xff0…

操作系统:操作系统的结构(Structures of Operating System)

目录 简单结构&#xff08;Simple Structure&#xff09; 整体式结构&#xff08;Monolithic Structure&#xff09; 什么是 Kernel&#xff08;内核&#xff09;&#xff1f; 层次结构&#xff08;Layered Structure&#xff09; 微内核结构&#xff08;Microkernel&#x…

Python柱状图

1.各国GDP柱状图2.各国GDP时间线柱状图

FastGPT:企业级智能问答系统,让知识库触手可及

在信息爆炸的时代&#xff0c;企业如何高效管理和利用海量知识&#xff1f;传统搜索和文档库已难以满足需求。FastGPT正成为企业构建智能知识核心的首选。一、FastGPT&#xff1a;不止于问答的智能知识引擎FastGPT 颠覆了传统知识库的局限&#xff0c;其核心优势在于&#xff1…

探索 MyBatis-Plus

引言在当今的 Java 开发领域&#xff0c;数据库操作是一个至关重要的环节。MyBatis 作为一款优秀的持久层框架&#xff0c;已经被广泛应用。而 MyBatis-Plus 则是在 MyBatis 基础上进行增强的工具&#xff0c;它简化了开发流程&#xff0c;提高了开发效率。本文将详细介绍 MyBa…

Hive【安装 01】hive-3.1.2版本安装配置(含 mysql-connector-java-5.1.47.jar 网盘资源)

我使用的安装文件是 apache-hive-3.1.2-bin.tar.gz &#xff0c;以下内容均以此版本进行说明。 以下环境测试安装成功&#xff1a; openEuler 22.03 (LTS-SP1)系统 MySQL-8.0.40 1.前置条件 MySQL数据库 我安装的是 mysql-5.7.28 版本的&#xff0c;安装方法可参考《Linux环境…

璞致 PZSDR-P101:ZYNQ7100+AD9361 架构软件无线电平台,重塑宽频信号处理范式

璞致电子 PZSDR-P101 软件无线电平台以 "异构计算 宽频射频 工业级可靠性" 为核心设计理念&#xff0c;基于 Xilinx ZYNQ7100 处理器与 ADI AD9361 射频芯片构建&#xff0c;为工程师提供从 70MHz 到 6GHz 的全频段信号处理解决方案。无论是频谱监测、无线通信原型…

【基础】go基础学习笔记

基础及关键字if for switch都支持使用隐形声明&#xff08;:&#xff09;来快速声明一个变量&#xff0c;无需在上面一行额外声明&#xff0c;这可以增加代码简洁性&#xff0c;但不太符合其他常规语言的写法&#xff0c;需要习惯一下if for switch都不需要使用&#xff08;&am…

AI驱动的企业知识管理革新

Baklib&#xff1a;人工智能引领的知识管理平台Baklib 是领先的 AI 驱动知识管理系统&#xff0c;专为企业打造智能化、模块化的知识共享平台。功能覆盖在线帮助中心、内联网、CMS 网站、客户支持系统、视频中心、活动教学平台和客户社区&#xff0c;全面提升组织在知识管理、员…

使用 FFmpeg 实现 RTP 音频传输与播放

&#x1f50a; 使用 FFmpeg 实现 RTP 音频传输与播放&#xff08;Ubuntu&#xff09; 在音视频开发或远程通信场景中&#xff0c;RTP&#xff08;Real-time Transport Protocol&#xff09; 是一种常用的实时音频传输协议。本文将介绍如何使用 FFmpeg 在 Ubuntu 上实现从一台主…

Android 导出联系人为 vCard(.vcf)

有时需要将联系人数据导出为可共享的标准格式&#xff1a;vCard&#xff08;.vcf&#xff09;格式&#xff0c;可被系统直接导入通讯录一、导出联系人为 vCard&#xff08;.vcf&#xff09;✅ 支持字段我们支持导出的字段包括&#xff1a;姓名个人电话家庭电话工作电话邮箱备注…

大模型-bacth之chunked prefills

一、chunked prefills 1.1 chunked prefills核心思想 ORCA虽然很优秀&#xff0c;但是依然存在两个问题&#xff1a;GPU利用率不高&#xff0c;流水线依然可能导致气泡问题。 我们来看sarathi-serve做的一个实验。左右两图分别刻画了在不同的batch size下&#xff0c;prefil…

multiprocessing模块使用方法(一)

结合Python代码示例说明multiprocessing模块的使用方法、Linux启动命令、服务部署及真实应用场景&#xff1a;一、multiprocessing基础用法 Python的multiprocessing模块通过创建子进程实现并行计算&#xff0c;核心步骤如下&#xff08;引用&#xff09;&#xff1a;创建进程对…

vector如何判断应该扩容?

std::vector 的扩容机制是 C 容器性能优化的一个核心点。它的判断标准、行为特征和实现细节如下所示&#xff1a;✅ 一、vector 的核心结构 std::vector 内部维护三个指针&#xff1a; begin -> 指向数据起始位置 end -> 指向当前已使用的元素末尾&#xff08;size…