mysql數據庫損壞後成功恢復(mysql數據庫損壞修復)

本文目錄一覽:

如何修復MySQL數據庫

簡單情況下:進入原來mysql安裝路徑下的data文件夾下,找到相應的庫和ibdata1,進行copy,就可回復原來的數據。

複雜情況下:

從另一台機上把MySQL數據庫的mysql文件夾拷貝到本地機上,目的是恢複本地機對數據的訪問和操作。經過如下幾種情況的操作。

1. 在本地重裝MySQL(安裝目錄D:\Program Files\MySQL\MySQL Server 5.0),直接把mysql文件夾拷貝至D:\Program Files\MySQL\MySQL Server 5.0\。結果,失敗:數據庫連接錯誤。

2. 卸載後重裝MySQL,將D:\Program Files\MySQL\MySQL Server 5.0\下的數據備份,只把mysql\data文件夾全部內容拷貝到D:\Program Files\MySQL\MySQL Server 5.0\data下。結果,失敗:數據庫連接錯誤。將備份的數據還完覆蓋。結果,失敗,還是連接不上數據庫。

3. 卸載後重裝MySQL,將mysql\data文件夾里的cf1,last文件夾(這兩個是原來MySQL里的數據庫)拷貝進D:\Program Files\MySQL\MySQL Server 5.0\data。連接成功,在Navicat for MySQL里看到數據庫cf1和last,但是不能訪問,因為數據全為零。明白了原來data里以數據庫命名的文件存儲的是數據庫的表結構,不是元數據。下一步,把data文件夾里的ibdata1文件(3.4G大,明顯存儲了元數據)拷貝到D:\Program Files\MySQL\MySQL Server 5.0\data里,代替原來的ibdata1文件。重啟電腦,打開Navicat for MySQL,連接成功,數據可以訪問操作。

至此,操作終於成功。其實當初在那台機上把數據導出來,而不是現在直接把文件夾mysql複製過來會更容易恢復。但那台機已經重裝了系統,也就是說MySQL失效了。

如何修復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數據庫被破壞,只剩下ibd文件時如何恢復

在使用獨立表空間的情況下,如果不慎使得innodb存儲引擎的元數據文件ibdata損壞,我們還可以挽救寶貴的數據.因為在innodb使用獨立表空間的情況下,ibdata文件會記錄每個innodb表的id,只要使得ibd中的表id和ibdata文件中記錄的表id相同,就能夠打開表,讀取到數據.

#創建表

CREATE TABLE `ibdtest` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `fid` int(11) NOT NULL COMMENT ‘表b中的id’,  `content` char(255) NOT NULL COMMENT ‘操作內容,系統生成’,  `mark` char(255) NOT NULL COMMENT ‘備註’,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

#添加數據INSERT ibdtest (fid,content,mark) VALUES (1,’1′,’1′),(2,’2′,’2′);SELECT * FROM ibdtest;

怎樣修復已經損壞的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數據庫怎麼恢複數據

簡單情況下:進入原來mysql安裝路徑下的data文件夾下,找到相應的庫和ibdata1,進行copy,就可回復原來的數據。

複雜情況下:

從另一台機上把MySQL數據庫的mysql文件夾拷貝到本地機上,目的是恢複本地機對數據的訪問和操作。經過如下幾種情況的操作。

1.

在本地重裝MySQL(安裝目錄D:\Program

Files\MySQL\MySQL

Server

5.0),直接把mysql文件夾拷貝至D:\Program

Files\MySQL\MySQL

Server

5.0\。結果,失敗:數據庫連接錯誤。

2.

卸載後重裝MySQL,將D:\Program

Files\MySQL\MySQL

Server

5.0\下的數據備份,只把mysql\data文件夾全部內容拷貝到D:\Program

Files\MySQL\MySQL

Server

5.0\data下。結果,失敗:數據庫連接錯誤。將備份的數據還完覆蓋。結果,失敗,還是連接不上數據庫。

3.

卸載後重裝MySQL,將mysql\data文件夾里的cf1,last文件夾(這兩個是原來MySQL里的數據庫)拷貝進D:\Program

Files\MySQL\MySQL

Server

5.0\data。連接成功,在Navicat

for

MySQL里看到數據庫cf1和last,但是不能訪問,因為數據全為零。明白了原來data里以數據庫命名的文件存儲的是數據庫的表結構,不是元數據。下一步,把data文件夾里的ibdata1文件(3.4G大,明顯存儲了元數據)拷貝到D:\Program

Files\MySQL\MySQL

Server

5.0\data里,代替原來的ibdata1文件。重啟電腦,打開Navicat

for

MySQL,連接成功,數據可以訪問操作。

至此,操作終於成功。其實當初在那台機上把數據導出來,而不是現在直接把文件夾mysql複製過來會更容易恢復。但那台機已經重裝了系統,也就是說MySQL失效了。

怎麼恢復mysql數據庫

mysql數據庫恢復方法:

方法一:

命令恢複數據庫:

mysql -u root –password=root密碼 數據庫名 備份文件.sql

方法二:

第一步:用管理員權限登錄並進入後台管理界面,點“數據庫-資料恢復”。

第二步:在數據恢復設置中選擇“從本地文件”進行恢復,然後通過右邊的“瀏覽”按鈕找到之前保存下來的.sql文件。

第三步:點“提交”按鈕後將出現詢問“分卷數據成功導入數據庫,需要自動導入本次其他的備份嗎?”一般繼續點“確定”按鈕即可。之後的數據庫文件就完全導入到當前網站了。這時出現再次要求輸入管理員帳號的提示。訪問網站地址時也會看到所有信息都恢復到備份數據庫時的內容了。

小提示:

不管採取哪種方式備份和恢複數據庫,一定要注意備份和恢復時使用的版本要相同,甚至是語言種類也要一致,否則會存在亂碼的問題。

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:54
下一篇 2024-12-12 12: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
  • Python怎麼導入數據庫

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

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

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

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

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

    編程 2025-04-28

發表回復

登錄後才能評論