本文目錄一覽:
- 1、如何修復損壞的MySQL數據表
- 2、怎麼恢復mysql資料庫怎麼恢複數據
- 3、MySQL的InnoDB數據文件損壞如何修復
- 4、如何修復MYSQL資料庫因斷電造成的數據損壞
- 5、MYSQL資料庫丟失了數據怎麼恢復?
- 6、mysql8 ibdata文件丟失怎麼恢複數據
如何修復損壞的MySQL數據表
有兩種方法,一種方法使用使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。另一種方法是MySQL的check table和repair table 的sql語句,使用起來比較簡便。 一、myisamchk, isamchk 其中myisamchk適用於MYISAM類型的數據表,而isamchk適用於ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為預設的數據表類型,這裡以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用: myisamchk tablename.MYI 進行檢測,如果需要修復的話,可以使用: myisamchk -of tablename.MYI 關於myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL(和PHP搭配之最佳組合)伺服器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL(和PHP搭配之最佳組合)伺服器Shutdown掉。 另外可以把下面的命令放在你的rc.local裡面啟動MySQL(和PHP搭配之最佳組合)伺服器前: 1.[ -x /tmp/MySQL(和PHP搭配之最佳組合).sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI 其中的/tmp/MySQL(和PHP搭配之最佳組合).sock是MySQL(和PHP搭配之最佳組合)監聽的Sock文件位置,對於使用RPM安裝的用戶應該是/var/lib/MySQL(和PHP搭配之最佳組合)/MySQL(和PHP搭配之最佳組合).sock,對於使用源碼安裝則是/tmp/MySQL(和PHP搭配之最佳組合).sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL(和PHP搭配之最佳組合)資料庫存放的位置。 需要注意的時,如果你打算把這條命令放在你的rc.local裡面,必須確認在執行這條指令時MySQL伺服器必須沒有啟動! 檢測修復所有資料庫(表) MySQL(和PHP搭配之最佳組合)check -A -o -r -p 二、check table 和 repair table 登陸MySQL終端: MySQL -uxxxxx -p dbname 1. check table tabTest; 如果出現的結果說Status是OK,則不用修復,如果有Error,可以用: 1. repair table tabTest; 進行修復,修復之後可以在用check table命令來進行檢查。在新版本的phpMyAdmin裡面也可以使用check/repair的功能。
怎麼恢復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的InnoDB數據文件損壞如何修復
因為被破壞的地方只在索引的部分,所以當使用innodb_force_recovery = 1運行InnoDB時,操作如下:
執行check,repair table 都無效
alter table email_status engine =myisam; #也報錯了,因為模式是innodb_force_recovery =1。
ERROR 1025 (HY000): Error on rename of ‘…’ to ‘….’ (errno: -1)
建立一張表:create table email_status_bak #和原表結構一樣,只是把INNODB改成了MYISAM。把數據導進去insert into email_status_bak select * from email_status;
刪除掉原表:
drop table email_status;
注釋掉innodb_force_recovery 之後,重啟。
重命名:
rename table edm_email_status_bak to email_status;
最後該回存儲引擎
alter table edm_email_status engine = innodb
總結:
這裡的一個重要知識點就是 對 innodb_force_recovery 參數的理解了,要是遇到數據損壞甚至是其他的損壞。可能上面的方法不行了,需要嘗試另一個方法:insert into tb select * from ta limit X;甚至是dump出去,再load回來。
如何修復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資料庫丟失了數據怎麼恢復?
資料庫丟失了最好的恢復方法是從備份中還原文件,資料庫的文件一般都會有備份。如果備份也損壞了,無法進行還原,那就需要使用數據恢復軟體來恢復了。從網上找恢復軟體,然後掃描一下,看是否可以搜索到需要的文件。
mysql8 ibdata文件丟失怎麼恢複數據
因為磁碟空間不足,我的一個虛擬機伺服器崩潰了。結果資料庫伺服器進程無法啟動,數據也就無法導出。只能想辦法從資料庫原始文件 ibdata 和 frm 文件中恢復資料庫。
因為沒有經驗,好不容易才找到了恢復方法。特此記錄,以備後用。
磁碟空間不足之後,mysqld 進程無法啟動,提示「Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)」。這真是讓人無比頭大,資料庫根本連接不上。
目錄 Contents
1. 保存原始資料庫文件
2. 恢復方法
3. 參考資料:
1. 保存原始資料庫文件¶
好在資料庫原始文件還在。在我的系統環境和配置情況下,這些文件位於 /var/lib/mysql/ 文件夾下面。假設資料庫名是 test,則這些文件表現為:
–mysql
|–test
|–1.frm
|–2.frm
|…
|–mysql
|…
|–ib_logfile0
|–ib_logfile1
|–ibdata1
|…
這些就是原始資料庫文件,可以用來恢復資料庫。將這些文件額外保存一份,以防萬一。
2. 恢復方法¶
我的原始虛擬機完全沒有磁碟空間而無法啟動資料庫伺服器進程。雖然試著刪除一些不需要的文件,但是資料庫卻始終無法連接。於是我新建了一個幾乎一樣的虛擬機(當然磁碟加大了),試圖將這些資料庫文件導入並恢復資料庫。
在經歷了很多錯誤之後,終於找到了正確的方法:
安裝完成新伺服器之後,通過命令行新建了與原來一樣的資料庫:資料庫名稱、用戶名、密碼都一樣。如果有多個資料庫需要恢復,就都給建好。(跟配置新伺服器一樣,參見安裝和配置 MYSQL 資料庫伺服器。)
停止 mysqld 進程
service mysqld stop
將備份的原始資料庫文件中的所有 .frm 文件(保持原來的目錄結構)和 ibdata1 文件複製到新伺服器的資料庫文件目錄中(如果新伺服器操作系統和配置環境一樣,那麼目錄結構也一樣),其它文件不要。
使用 -innodb_force_recovery=6參數啟動資料庫伺服器進程,這裡是
/etc/init.d/mysqld start -defaults-file=/etc/my.cnf -standalone -console -innodb_force_recovery=6
OK,資料庫恢復完成。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/227388.html