如何修復損壞的mysql數據庫,mysql數據庫文件損壞怎麼恢復

本文目錄一覽:

如何修復MySQL數據庫

如何修復MySQL數據庫

來快速修復所有的數據庫或者特定的數據庫;方法:進入Mysql的Bin目錄:C:\Program Files\MySQL\MySQL Server 4.1\bin

運行:mysqlcheck -A -o -r -uroot -p123

注意,將123改成你自己的root用戶密碼

如何修復MYSQL數據庫因斷電造成的數據損壞

修復MYSQL數據庫因斷電造成的數據損壞

在使用MySQL數據庫的時候,都碰到過因斷電造成數據庫損壞的情況,大家都知道,斷電或非正常關機是導致MySQL數據庫出現錯誤最常見的原因,如何恢復MySQL數據庫是大家都非常頭痛的問題。目前有方法可以幫助大家恢復損壞的MySQL數據庫嗎?

當用戶出現斷電造成的MySQL數據庫丟失損壞時,如果能進入MySQL軟件,但是提示錯誤信息,用戶可以通過“系統維護”—“數據庫壓縮修復”,壓縮下數據庫(有些軟件在“系統設置”—“系統維護”—“數據庫備份\恢復”中),這種方法只適合一小部分的數據庫故障修復,功能性並不高。

現在網絡上有兩種比較推薦使用的MySQL數據庫恢復方法,一種方法使用MySQL(和PHP搭配之最佳組合)的check

table和repair

table

的sql語句,另一種方法是使用MySQL(和PHP搭配之最佳組合)提供的多個myisamchk,

isamchk數據檢測恢復工具。在很多用戶看來,這兩個方法都比較複雜,並不適合大多數的用戶使用。另外,這兩種方法並不能有效的恢復MySQL數據庫,可能還會造成數據庫被進一步損壞,造成大家無法挽回的損失。根據以上幾個原因,這兩種MySQL數據庫恢復方法並不建議大家使用。

數據庫被損壞分以下幾種情況:

1、嚴重損壞

2、輕度損壞

3、有些表被損壞或有些表的部分記錄被損壞

MySQL崩潰-修復損壞的innodb:innodb_force_recovery

Windows上安裝了XMAPP-controller之後間歇性出現MySQL無法啟動,查看日之後發現是innodb的報錯,報錯信息如下:

度娘上各種答案無法解決,後來直接看官方文檔,直接上解決方案:

踩坑指南 – – 操作配置前需要做這些操作:

1、配置my.cnf 配置innodb_force_recovery = 1 到 6 試到正確為止,重啟MySQL

2、導出數據腳本 mysqldump -uroot -p123456 test test.sql 導出SQL腳本。或者用Navicat將所有數據庫/表導入到其他服務器的數據庫中。 注意:這裡的數據一定要備份成功。然後刪除原數據庫中的數據。

3、刪除ib_logfile0、ib_logfile1、ibdata1 備份MySQL數據目錄下的ib_logfile0、ib_logfile1、ibdata1三個文件,然後將這三個文件刪除

4、配置my.cnf 將my.cnf中innodb_force_recovery 這行配置刪除或者配置為innodb_force_recovery = 0,重啟MySQL服務

5、將數據導入MySQL數據庫 mysql -uroot -p123456 test test.sql;

或者用Navicat將備份的數據導入到數據庫中。 如果在導入數據過程中發生tablespace不存在的問題,請刪除data目錄相應database下的文件。

怎樣修復損壞了的innodb 表

InnoDB表損壞

InnoDB擁有內部恢復機制,假如數據庫崩潰了,InnoDB通過從最後一個時間戳開始運行日誌文件,來嘗試修複數據庫。

大多數情況下會修復成功,而且整個過程是透明的。

假如InnoDB自行修復失敗,那麼數據庫將不能啟動。

在繼續操作前,先瀏覽下MySQL的日誌文件,確定數據庫是因為InnoDB表的損壞而崩潰。

有一種方法是更新InnoDB的日誌文件計數器以跳過引起崩潰的查詢,這種情況下,將造成數據的不一致性而且會經常使主從複製中斷。

一旦確定MySQL因為InnoDB表損壞無法啟動時,就可以按照以下5步進行修復:

1.添加如下配置到/etc/my.cnf文件中

innodb_force_recovery = 4

2.這時就可以重新啟動數據庫了,在innodb_force_recovery配置的作用,所有的插入與更新操作將被忽略;

3.導出所有的數據表;

4.關閉數據庫並刪除所有數據表文件及目錄,再運行 mysql_install_db來創建MySQL默認數據表;

5.在/etc/my.cnf中刪除innodb_force_recovery這一行,再啟動MySQL(這時MySQL正常啟動);

6.從第3步備份的文件中恢復所有的數據。

怎樣修復已經損壞的SQL數據庫?

1.停止SQL Server的服務,備份SQL Server安裝目錄下的\data子目錄

下故障數據庫的兩個文件,一個數據文件hbposv6_branch_data.mdf,

一個hbposv6_branch_log.ldf(也有可能非此命名),同時查看磁盤

空間是否有足夠的空間;

2.啟動SQL Server服務(如已停止),創建一個新的數據庫,命名為

原來數據庫的名字。

3.停止SQL Server

4.把老數據庫的MDF文件(hbposv6_branch_data.mdf)替換

新數據庫的相應的MDF文件,

並把LDF文件(hbposv6_branch_log.ldg)刪除。

5.重新啟動SQL Server服務,然後運行如下命令:

Use Master

go

sp_configure ‘allow updates’, 1

reconfigure with override

go

begin tran

update sysdatabases set status = 32768 where name = ‘hbposv6_branch’

–Verify one row is updated before committing

commit tran

go

6.停止SQL然後重新啟動SQL Server服務,然後運行如下命令

(更換日誌文件路徑地址):

use master

go

DBCC TRACEON(3604)

DBCC REBUILD_LOG

(‘hbposv6_branch’,

‘c:\Program Files\Microsoft SQL Server\MSSQL\Data\hbposv6_branch_log.ldf’)

–在這裡,請輸入你的數據庫的路徑

go

7.停止SQL然後重新啟動SQL Server服務,然後運行:

use master

go

update sysdatabases set status = 8 where name = ‘hbposv6_branch’

go

sp_configure ‘allow updates’, 0

reconfigure with override

go

8.運行dbcc checkdb(db_name) 檢查數據庫的完整性

9.修複數庫

–請在查詢分析器中執行下列語句.執行前斷開其它

所有數據庫連接,最好是斷開網線

–如果不是該數據庫名,請將數據庫

–hbposv6_branch

–改為要修復的數據庫

USE master

Go

–單用戶模式

EXEC sp_dboption ‘hbposv6_branch’, ‘single user’, ‘TRUE’

go

–數據庫檢查

DBCC CHECKDB (‘hbposv6_branch’)

Go

–如果返回結果出現了紅色的提示文字,說明數據庫中存在錯誤,需要修復

–數據庫修復

DBCC CHECKDB (‘hbposv6_branch’,’repair_rebuild’)

Go

–再次數據庫檢查,如果返回結果中沒有了紅色的提示文字,

說明修復成功;

DBCC CHECKDB (‘hbposv6_branch’)

Go

–否則意味着還需要更高級別的修復;嘗試將上面修復語句的

‘repair_rebuild’換為’repair_allow_data_loss’再試,

之後再次檢查數據庫。

–如果還有錯誤未修復,請把這些信息以文字的方式發給我們

–退出前請一定要執行以下語句返回到多用戶模式

EXEC sp_dboption ‘hbposv6_branch’, ‘single user’,’FALSE’

go

註:都要把 dbname 替換成真實的數據庫名字。

mysql數據庫被刪除怎麼恢復

1 找個別的機器安裝個同版本的mysql或從已安裝同版本的其他機器上(非同版本的也可以試下):

拷貝 mysql/data/mysql 目錄到你的mysql/data/ 下吧

2 試着啟動mysql服務,如果能啟動了,理論上應該丟失的只有用戶、授權等一些系統信息,不影響你的使用的數據;

如果不能啟動,看錯誤日誌,爭取啟動了。

3 趕緊把數據備份一份出來,重新把所有庫(只是你後來創建的業務相關的庫,不包括mysql庫)都刪了,重新導入一遍。理論上不這樣也可以,但只是非生產重要的環境下。

4 重新做用戶授權。

原創文章,作者:TPGK,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144941.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TPGK的頭像TPGK
上一篇 2024-10-26 11:54
下一篇 2024-10-26 11:54

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28

發表回復

登錄後才能評論