[特殊字符] 從數據庫無法訪問到成功修復崩潰表:一次 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
英文地址,請注明出處:http://en.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…