本文目錄一覽:
- 1、如何修復MySQL數據庫
- 2、如何修復MYSQL數據庫因斷電造成的數據損壞
- 3、MySQL崩潰-修復損壞的innodb:innodb_force_recovery
- 4、怎樣修復損壞了的innodb 表
- 5、怎樣修復已經損壞的SQL數據庫?
- 6、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