首頁 >資料庫 >mysql教程 >Mysql8斷電崩潰怎麼解決

Mysql8斷電崩潰怎麼解決

WBOY
WBOY轉載
2023-05-29 13:20:041955瀏覽

一、概述​​

單機Mysql8資料庫伺服器運作過程中突然斷電,導致資料庫崩潰,無法重新啟動。

二、查找原因

查看mysql執行錯誤日誌:WIN-SOTMI68HRV6.err (在Data目錄下)

InnoDB: End of page dump
InnoDB: Page may be a system page
2023-02-01T09:31:02.878917Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' 和 ' with strict mode. They will be merged with strict mode in a future release.
2023-02-01T09:31:02.882631Z 0 [System] [MY-010116] [Server] CSQL\Myiles\ Server 8.0\bin\mysqld.exe (mysqld 8.0.23) starting as process 3496
2023-02-01T09:31:02.923391Z 1 [System] [MY-013576] [InnoDB] Innohasization. #2023-02-01T09:31:05.964384Z 1 [ERROR] [MY-011971] [InnoDB] Tablespace 'innodb_system' Page [page id: space=0, page number=5] log sequence_system' Page [page id: space=0, page number=5] log sequence number 3275776865 5is in Current system log sequence number 3197057036.
2023-02-01T09:31:05.966225Z 1 [ERROR] [MY-011972] [InnoDB] Your database may 是files. Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.
2023-02-01T09:31:05.98

InnoDB: End of page dump

InnoDB: Page may be a system page
2023-02-01T11:03:39.767939Z 1 [ERROR] [MY-011906] [InnoDB] Database page corruption on disk or a failed file read of page [page id: space=4294967278, page number=101]. You may have to recover from a backup.
 len 16384; hex

#很明顯[ ERROR] ,找不到磁碟檔案。透過上述日誌可以得知:資料庫出現錯誤,無法重新啟動。

InnoDB採用校驗和以保護數據,將其與頁一起儲存。 InnoDB從磁碟讀取時,會對每個頁計算校驗和,然後與磁碟上載入的校驗和進行比較。如果值是不同的,可能真的發生了一些錯誤。為了防止進一步的邏輯或物理損壞,MySQL伺服器將關閉InnoDB。

三、解決方案

1.如何找出損壞發生的原因

沒有通用的解決方案。一些常見的硬體問題包括實體磁碟或記憶體故障、損壞的磁碟機/控制器,以及作業系統核心的錯誤。以下是一些建議:

在Linux平台上,有時會重置頁面快取能解決這個問題:

echo 2 > /proc/sys/vm/drop_caches

檢查系統日誌有沒有可能的硬體故障。
如果InnoDB每次在特定頁面崩潰,最典型的是實體磁碟發生故障:執行對於你的OS /硬體的詳細磁碟診斷。
如果崩潰是隨機的且不在相同查詢重複,可能是RAM故障:執行詳細的RAM診斷。

在MySQL關閉時,用innochecksum工具檢查InnoDB檔案是有幫助的。 ###

作者这里故障原因是断电导致数据出现问题,只能重装Mysql。

2.如何从损坏中恢复

最重要的是执行详细的硬件诊断,以消除问题扩散的机会。如果操作系统I / O缓存是磁盘读损坏的原因,重置缓存或重新启动操作系统应有助于消除当前的问题,数据库可能会重新运作。
有时唯一的解决办法是在有效恢复模式下备份数据。

笔者后面尝试强制启动,可以启动Mysql,但是数据库只能读不能写,通过日志又找不到损坏的数据表,无奈,只能先备份数据库,然后重装Mysql。

修改数据库,一直报错:

running in read_only mode 1836

将mysql改为强制启动:

在my.ini中【mysqld】节点下加上

innodb_force_recovery=0

然后对数据库进行备份。
备份方式:

一、数据库备份

第一种:(cmd窗口使用)
在命令提示符用mysqldump命令行备份数据库。
命令格式
mysqldump -u用户名 -p 数据库名 > 保存名.sql
范例:

mysqldump -uroot -p dataname > d:\data.sql

(导出数据库dataname到data.sql文件)
提示输入密码时,输入该数据库用户名的密码。

第二种:指定导出备份编码

mysqldump -u root -p密码 --default-character-set=数据编码 数据库名称> data.sql

案例:

mysqldump -u root -p123456 --default-character-set=utf8 discuss_chi>d:/data.sql

mySQL数据库在windows环境下备份与恢复:

二,恢复数据库,一共二种方式。

第一种;定义还原编码类型(cmd窗使用)
定义编码导入:

mysql -u root -p --default-character-set=utf8 -f dataname<d:/dis.sql

如果乱码使用二进导入

mysql -u root -p --default-character-set=binary -f dataname<d:/dis.sql

第二种:
source 命令(mysql控制台窗口使用)
进入mysql数据库控制台,

如在运行中输入:mysql -u root -p

mysql>use databasename;

1、确定数据库默认编码,比如编码为gbk,将读入途径编码同样设为gbk,命令为:
set names gbk;(导入数据出现乱码的时候用平常不用)
2、然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql>source d:\data.sql;

备份后,重装Mysql,恢复数据库。

以上是Mysql8斷電崩潰怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除