最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL?Innodb表空間損壞導(dǎo)致MySQL無(wú)法啟動(dòng)問(wèn)題修復(fù)解決

 更新時(shí)間:2026年07月29日 09:19:44   作者:奈-chann  
本文主要介紹了MySQL?Innodb表空間損壞導(dǎo)致MySQL無(wú)法啟動(dòng)問(wèn)題修復(fù)解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在日常服務(wù)器宕機(jī)后啟動(dòng)MySQL的時(shí)候,出現(xiàn)問(wèn)題

Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

一定一定要去查看MySQL的啟動(dòng)日志 tail -n 50 /var/log/mysqld.log日志,這里查看日之后里面包含一條很重要的信息

[ERROR] [MY-011971] [InnoDB] Tablespace 'innodb_undo_002' Page [page id: space=4294967278, 
page number=87] log sequence number 155750010430 is in the future!
 Current system log sequence number 155735821216.

說(shuō)明是innodb_undo_002表空間損壞導(dǎo)致MySQL無(wú)法啟動(dòng),錯(cuò)誤代碼涉及MY-011971(日志序列號(hào)未來(lái))和MY-012153(頁(yè)號(hào)越界),最終觸發(fā)MY-013183斷言失敗而退出。最安全、丟失數(shù)據(jù)最少的恢復(fù)方式是"刪除損壞的undo表空間,讓MySQL自動(dòng)重建"。

第一步:嘗試最簡(jiǎn)單修復(fù)

這是風(fēng)險(xiǎn)最小、成功率最高的方法,它不涉及數(shù)據(jù)導(dǎo)出導(dǎo)入,直接讓MySQL忽略損壞的undo日志。

# 1. 進(jìn)入MySQL數(shù)據(jù)目錄,找到undo_002文件
cd /var/lib/mysql/           # 替換為你的實(shí)際數(shù)據(jù)目錄
ls -la | grep undo           # 確認(rèn)存在undo_002文件
# 2. 停止MySQL服務(wù)
sudo systemctl stop mysql
# 3. 重命名損壞的文件(相當(dāng)于安全地刪除)
mv undo_002 undo_002.bak
# 4. 啟動(dòng)MySQL服務(wù)
sudo systemctl start mysql
# 5. 檢查服務(wù)狀態(tài)
sudo systemctl status mysql
# 6.如果啟動(dòng)失敗,繼續(xù)查看日志,查看具體原因
tail -n 50 /var/log/mysqld.log

如果啟動(dòng)成功,MySQL 會(huì)在數(shù)據(jù)目錄中自動(dòng)生成一個(gè)新的undo_002文件,數(shù)據(jù)庫(kù)恢復(fù)正常
我這里啟動(dòng)的時(shí)候還出現(xiàn)過(guò)一次undo_001的問(wèn)題,按照上述方法再執(zhí)行了一次。
注:如果自動(dòng)創(chuàng)建失敗,可以在配置文件中嘗試手動(dòng)指定

innodb_undo_tablespaces = 2
innodb_undo_directory = /var/lib/mysql

第二步:強(qiáng)制恢復(fù)模式

如果第一步無(wú)法啟動(dòng),可以嘗試此方法。其原理是通過(guò)參數(shù)innodb_force_recovery強(qiáng)制跳過(guò)一些檢查,但數(shù)據(jù)寫(xiě)入會(huì)被禁用,主要用于導(dǎo)出數(shù)據(jù)。隨后需要重建數(shù)據(jù)庫(kù),再將數(shù)據(jù)重新導(dǎo)入

1.修改MySQL配置文件 (/etc/my.cnf/etc/mysql/my.cnf,具體情況根據(jù)實(shí)際情況目錄來(lái)),在 [mysqld] 部分添加以下行:

[mysqld]
innodb_force_recovery = 1

具體參數(shù)解釋,可以查看文章詳細(xì)解析innodb_force_recovery 參數(shù)。
2. 逐級(jí)增加參數(shù)值:從1開(kāi)始嘗試啟動(dòng)MySQL。如果失敗,停止服務(wù),將值改為2,再嘗試,以此類推,直到能啟動(dòng)為止(通常1到4已足夠,不建議輕易嘗試5或6)
3. 導(dǎo)出所有數(shù)據(jù):一旦成功啟動(dòng),立即使用 mysqldump或者是可視化工具,導(dǎo)出所有數(shù)據(jù)庫(kù)。

mysqldump --all-databases --single-transaction --routines --triggers > /path/to/backup.sql

4.關(guān)閉服務(wù),清理環(huán)境:停止MySQL服務(wù),移除配置文件中的 innodb_force_recovery 設(shè)置。
5.徹底重建:清空MySQL數(shù)據(jù)目錄 (/var/lib/mysql/),然后重新初始化一個(gè)新的MySQL實(shí)例。

#1.先停服務(wù)
systemctl stop mysqld
#2.刪除數(shù)據(jù)目錄(/var/lib/mysql)這一步一定要小心謹(jǐn)慎別刪除錯(cuò)了,根據(jù)實(shí)際mysql目錄來(lái)
rm -rf /var/lib/mysql/*
#3.重新初始化數(shù)據(jù)庫(kù)
mysqld --initialize --console
#4.重新啟動(dòng)mysql
systemctl start mysqld
#5.查看臨時(shí)密碼
grep password /var/log/mysqld.log
#6.登錄mysql
mysql -uroot -p
#7.然后修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
#如果出現(xiàn)遠(yuǎn)程工具連接不上的報(bào)錯(cuò)情況
Host'gateway' is not allowed to connect to this MySQL server
#則需要登錄mysql然后執(zhí)行下面命令即可
USE mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;

如果重建數(shù)據(jù)庫(kù)的過(guò)程中仍然遇見(jiàn)

Job for mysqld.service failed because the control process exited with error code.
 See "systemctl status mysqld.service" and "journalctl -xe" for details.

則可以查看systemctl status mysqld.service
然后出現(xiàn):

● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 三 2026-06-17 11:17:03 CST; 16s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 17988 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
  Process: 17961 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 17988 (code=exited, status=1/FAILURE)
   Status: "Server startup in progress"
    Error: 13 (Permission denied)
6月 17 11:17:03 90648dbab6ca mysqld[17988]: 2026-06-17T03:17:03.134102Z 0 [Warning] [MY-010141] [Server] Changed limits: max_connections...d 10000)
6月 17 11:17:03 90648dbab6ca mysqld[17988]: 2026-06-17T03:17:03.134112Z 0 [Warning] [MY-010142] [Server] Changed limits: table_open_cach...ed 4000)
6月 17 11:17:03 90648dbab6ca mysqld[17988]: 2026-06-17T03:17:03.424987Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DAT...release.
6月 17 11:17:03 90648dbab6ca mysqld[17988]: 2026-06-17T03:17:03.425074Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib...wer-test
6月 17 11:17:03 90648dbab6ca mysqld[17988]: 2026-06-17T03:17:03.425184Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.27)...ss 17988
6月 17 11:17:03 90648dbab6ca mysqld[17988]: 2026-06-17T03:17:03.432231Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib...wer-test
6月 17 11:17:03 90648dbab6ca systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
6月 17 11:17:03 90648dbab6ca systemd[1]: Failed to start MySQL Server.
6月 17 11:17:03 90648dbab6ca systemd[1]: Unit mysqld.service entered failed state.
6月 17 11:17:03 90648dbab6ca systemd[1]: mysqld.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

MySQL 服務(wù)(默認(rèn)以 mysql 系統(tǒng)用戶的身份運(yùn)行)在嘗試往你的新數(shù)據(jù)目錄 /var/lib/mysql 寫(xiě)入測(cè)試文件時(shí)被系統(tǒng)拒絕了,因?yàn)闆](méi)有讀寫(xiě)權(quán)限。
這通常是因?yàn)樵谇懊嬷亟夸?、或者?zhí)行 mysqld --initialize 初始化的時(shí)候,是以 root 身份執(zhí)行的,導(dǎo)致該目錄下新生成的基礎(chǔ)數(shù)據(jù)文件歸屬成了 root,MySQL 自己反而寫(xiě)不進(jìn)去了。

解決辦法
只需要在終端執(zhí)行以下命令,將整個(gè)數(shù)據(jù)目錄的所有權(quán)遞歸地交還給 mysql 用戶即可:

# 1. 遞歸賦予屬主和屬組
chown -R mysql:mysql /var/lib/mysql
# 2. 順手修正一下基礎(chǔ)權(quán)限(MySQL 出于安全要求,數(shù)據(jù)目錄權(quán)限不能過(guò)于開(kāi)放)
chmod 750 /var/lib/mysql
# 3. 再次嘗試啟動(dòng)
systemctl start mysqld
執(zhí)行完之后,再用 systemctl status mysqld.service 看一下,這次你應(yīng)該能看到久違的綠色 active (running) 了。啟動(dòng)成功后,就可以使用初始密碼登錄

6.恢復(fù)數(shù)據(jù):將之前導(dǎo)出的備份SQL文件重新導(dǎo)入新實(shí)例。

總結(jié)

先按照第一步嘗試自動(dòng)修復(fù)。 如果失敗,再采用第二步的強(qiáng)制恢復(fù)模式來(lái)?yè)尵葦?shù)據(jù)。操作前千萬(wàn)記得先暫停MySQL服務(wù),可以備份整個(gè)數(shù)據(jù)目錄,以防操作失誤造成進(jìn)一步損失。

注:每個(gè)人遇到的情況可能都有所不同,這里僅提供我的解決方案

到此這篇關(guān)于MySQL Innodb表空間損壞導(dǎo)致MySQL無(wú)法啟動(dòng)問(wèn)題修復(fù)解決的文章就介紹到這了,更多相關(guān)MySQL Innodb表?yè)p壞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中報(bào)錯(cuò):Can’t find file: ‘./mysql/plugin.frm’的解決方法

    MySQL中報(bào)錯(cuò):Can’t find file: ‘./mysql/plugin.frm’的解決方法

    這篇文章主要給大家介紹了關(guān)于在MySQL中報(bào)錯(cuò):Can't find file: './mysql/plugin.frm'的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • 生產(chǎn)環(huán)境MySQL索引時(shí)效的排查過(guò)程

    生產(chǎn)環(huán)境MySQL索引時(shí)效的排查過(guò)程

    這篇文章主要介紹了生產(chǎn)環(huán)境MySQL索引時(shí)效的排查過(guò)程,文章根據(jù)SQL查詢耗時(shí)特別長(zhǎng),看了執(zhí)行計(jì)劃發(fā)現(xiàn)沒(méi)有走索引的問(wèn)題展開(kāi)詳細(xì)介紹,需要的朋友可以參考一下
    2022-04-04
  • MySQL從MyISAM轉(zhuǎn)換成InnoDB錯(cuò)誤與常用解決辦法

    MySQL從MyISAM轉(zhuǎn)換成InnoDB錯(cuò)誤與常用解決辦法

    由于一些程序的要求,需要MyISAM數(shù)據(jù)引擎或InnoDB,下面是具體的解決方法,經(jīng)測(cè)試偶爾會(huì)出現(xiàn)一些問(wèn)題。
    2011-05-05
  • linux mysql5.6版本的安裝配置過(guò)程

    linux mysql5.6版本的安裝配置過(guò)程

    mysql官網(wǎng)開(kāi)始發(fā)布相關(guān)的5.6系列的各個(gè)版本,對(duì)于mysql5.6系列的版本對(duì)一起的版本進(jìn)行了全局性的細(xì)節(jié)性加強(qiáng)
    2013-06-06
  • MySQL4 File ‘c:\mysql\share\charsets\?.conf’ not found (Errcode: 22)的解決方法

    MySQL4 File ‘c:\mysql\share\charsets\?.conf’ not found (Errc

    File ‘c:\mysql\share\charsets\?.conf’ not found (Errcode: 22) Character set ‘#33′ is not a compiled character set and is not specified in the ‘c:\mysql\share\charsets\Index’ file
    2013-08-08
  • MySQL定時(shí)任務(wù)EVENT事件的使用方法

    MySQL定時(shí)任務(wù)EVENT事件的使用方法

    本文主要介紹了MySQL定時(shí)任務(wù)EVENT事件的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • MySQL修煉之聯(lián)結(jié)與集合淺析

    MySQL修煉之聯(lián)結(jié)與集合淺析

    在mysql中,最重要的就是查詢了,下面這篇文章主要給大家介紹了關(guān)于MySQL修煉之聯(lián)結(jié)與集合的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • MySQL如何修改字段類型和字段長(zhǎng)度

    MySQL如何修改字段類型和字段長(zhǎng)度

    這篇文章主要介紹了MySQL如何修改字段類型和字段長(zhǎng)度,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • MySQL的MaxIdleConns不合理,會(huì)變成短連接的原因

    MySQL的MaxIdleConns不合理,會(huì)變成短連接的原因

    這篇文章主要介紹了MySQL的MaxIdleConns不合理,會(huì)變成短連接的原因,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2021-01-01
  • 使用LEFT?JOIN?統(tǒng)計(jì)左右存在的數(shù)據(jù)問(wèn)題

    使用LEFT?JOIN?統(tǒng)計(jì)左右存在的數(shù)據(jù)問(wèn)題

    最近做了一個(gè)數(shù)據(jù)模塊的統(tǒng)計(jì),統(tǒng)計(jì)企業(yè)收款、發(fā)票相關(guān)的數(shù)據(jù),開(kāi)始統(tǒng)計(jì)是比較簡(jiǎn)單,后面再拆分賬套統(tǒng)計(jì)就有點(diǎn)小復(fù)雜,這篇文章主要介紹了使用LEFT?JOIN?統(tǒng)計(jì)左右存在的數(shù)據(jù),需要的朋友可以參考下
    2022-10-10

最新評(píng)論

兴城市| 浑源县| 南昌县| 大兴区| 古蔺县| 临泉县| 益阳市| 江永县| 玉田县| 铜鼓县| 太原市| 杂多县| 徐水县| 咸宁市| 惠来县| 通城县| 图片| 瑞金市| 陈巴尔虎旗| 加查县| 莲花县| 牟定县| 灌南县| 梧州市| 博罗县| 池州市| 秦安县| 阿拉善右旗| 麻江县| 察隅县| 从化市| 老河口市| 隆回县| 望都县| 墨江| 临潭县| 西华县| 长白| 正镶白旗| 佛山市| 含山县|