導航:首頁 > 軟體問題 > mysql軟體信息毀壞怎麼修復

mysql軟體信息毀壞怎麼修復

發布時間:2022-07-10 19:52:34

Ⅰ 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;甚至是mp出去,再load回來。

Ⅱ 怎麼修復已經損壞的SQL資料庫

有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。

前者使用起來比較簡便。推薦使用。

1、check table 和 repair table 登陸mysql 終端: mysql -uxxxxx -p dbname check table tabTest;

如果出現的結果說Status是OK,則不用修復,如果有Error,可以用: repair table tabTest; 進行修復,修復之後可以在用check table命令來進行檢查。

在新版本的phpMyAdmin裡面也可以使用check/repair的功能。

2. myisamchk, isamchk 其中myisamchk適用於MYISAM類型的數據表,而isamchk適用於ISAM類型的數據表。

這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為預設的數據表類型,這里以myisamchk為例子進行說明。

當發現某個數據表出現問題時可以使用: myisamchk tablename.MYI 進行檢測,如果需要修復的話,可以使用: myisamchk -of tablename.MYI 關於myisamchk的詳細參數說明,可以參見它的使用幫助。

需要注意的時在進行修改時必須確保MySQL伺服器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL伺服器Shutdown掉。

2、另外可以把下面的命令放在你的rc.local裡面啟動MySQL伺服器前: [ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI 。

其中的/tmp/mysql.sock是MySQL監聽的Sock文件位置,對於使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對於使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL資料庫存放的位置。

需要注意的是,如果你打算把這條命令放在你的rc.local裡面,必須確認在執行這條指令時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資料庫表損壞如何修復呢

SQL腳本:check table 表名; check table 表名; 當然這是拋磚引玉,讓你知道怎開始。
具體恢復詳情歡迎留言追問,或者評論私信都可以。

Ⅳ 怎樣修復mysql表

也許很多人遇到過類似Can』t open file: 『[Table]mytable.MYI』 這樣的錯誤信息,卻不知道怎麼解決他,下面我們做個介紹,
多數情況下,資料庫被破壞只是指索引文件受到了破壞,真正的數據被破壞掉的情況非常少。大多數形式的資料庫破壞的的修復相當簡單。
和前面的校驗一樣,修復的方式也有三種。
下面講的方法只對MyISAM格式的表有效。其他類型的損壞需要從備份中恢復。
1,REPAIR TABLE SQL statement(mysql服務必須處於運行狀態)。
2,命令mysqlcheck(mysql服務可以處於運行狀態)。
3,命令myisamchk(必須停掉mysql服務,或者所操作的表處於不活動狀態)。
在修復表的時候,最好先作一下備份。所以你需要兩倍於原始表大小的硬碟空間。請確保在進行修復前你的硬碟空間還沒有用完。
1>用」repair table」方式修復
語法:repair table 表名 [選項]
選項如下:
QUICK 用在數據表還沒被修改的情況下,速度最快
EXTENDED 試圖去恢復每個數據行,會產生一些垃圾數據行,萬般無奈的情況下用
USE_FRM 用在.MYI文件丟失或者頭部受到破壞的情況下。利用.frm的定義來重建索引
多數情況下,簡單得用」repair table tablename」不加選項就可以搞定問題。但是當.MYI文件丟失或者頭部受到破壞時,這樣的方式不管用,例如:
mysql> REPAIR TABLE mytable;
+————————-+——–+———-+———————————————+
| Table | Op | Msg_type | Msg_text |
+————————-+——–+———-+———————————————+
| sports_results.mytable | repair | error | Can』t find file: 『mytable.MYI』 (errno: 2) |
+————————-+——–+———-+———————————————+
修復失敗的原因時索引文件丟失或者其頭部遭到了破壞,為了利用相關定義文件來修復,需要用USE_FRM選項。例如:
mysql> REPAIR TABLE mytable USE_FRM;
+————————-+——–+———-+————————————+
| Table | Op | Msg_type | Msg_text |
+————————-+——–+———-+————————————+
| sports_results.mytable | repair | warning | Number of rows changed from 0 to 2 |
| sports_results.mytable | repair | status | OK |
+————————-+——–+———-+————————————+
我們可以看到Msg_test表項的輸出信息」ok」,表名已經成功修復受損表。
2>用mysql內建命令mysqlcheck來修復
當mysql服務在運行時,也可以用mysql內建命令mysqlcheck來修復。
語法:mysqlcheck -r 資料庫名 表名 -uuser -ppass
%mysqlcheck -r sports_results mytable -uuser -ppass
sports_results.mytable OK
利用mysqlcheck可以一次性修復多個表。只要在資料庫名後列出相應表名即可(用空格隔開)。或者資料庫名後不加表名,將會修復資料庫中的所有表,例如:
%mysqlcheck -r sports_results mytable events -uuser -ppass
sports_results.mytable OK
sports_results.events OK

%mysqlcheck -r sports_results -uuser -ppass
sports_results.mytable OK
sports_results.events OK
3>用myisamchk修復
用這種方式時,mysql服務必須停掉,或者所操作的表處於不活動狀態(選項skip-external-locking沒被使用)。記著一定要在相關.MYI文件的路徑下或者自己定義其路徑。
語法:myisamchk [選項] [表名]
下面是其選項和描述
–backup, -B 在進行修復前作相關表得備份
–correct-checksum 糾正校驗和
–data-file-length=#, -D # 重建表時,指定數據文件得最大長度
–extend-check, -e 試圖去恢復每個數據行,會產生一些垃圾數據行,萬般無奈的情況下用
–force, -f 當遇到文件名相同的.TMD文件時,將其覆蓋掉。
keys-used=#, -k # 指定所用的keys可加快處理速度,每個二進制位代表一個key.第一個key為0
–recover, -r 最常用的選項,大多數破壞都可以通過它來修復。如果你的內存足夠大,可以增大參數sort_buffer_size的值來加快恢復的速度。但是遇到唯一鍵由於破壞而不唯一 的表時,這種方式不管用。
–safe-recover -o 最徹底的修復方式,但是比-r方式慢,一般在-r修復失敗後才使用。這種方式讀出 所有的行,並以行為基礎來重建索引。它的硬碟空間需求比-r方式稍微小一點,因 為它沒創建分類緩存。你可以增加key_buffer_size的值來加快修復的速度。
–sort-recover, -n mysql用它類分類索引,盡管結果是臨時文件會非常大
–character-sets-dir=… 包含字元集設置的目錄
–set-character-set=name 為索引定義一個新的字元集
–tmpdir=path, -t 如果你不想用環境變數TMPDIR的值的話,可以自定義臨時文件的存放位置
–quick, -q 最快的修復方式,當數據文件沒有被修改時用,當存在多鍵時,第二個-q將會修改 數據文件
–unpack, -u 解開被myisampack打包的文件
myisamchk應用的一個例子
% myisamchk -r mytable
- recovering (with keycache) MyISAM-table 『mytable.MYI』

Ⅵ MYSQL自帶的數據修復軟體怎麼修復數據表呀 給個詳細說明 謝謝 !!!!!!!!!!!!!!!!

有的時候因為掉電或者其他原因導致資料庫損壞,我們可以使用mysql自帶的mysqlcheck命令來快速修復所有的資料庫或者特定的資料庫;例如

檢查優化並修復所有的資料庫用:

# mysqlcheck -A -o -r -p

Enter password:

guestbook.simpgb_avatars OK

guestbook.simpgb_bad_words OK

guestbook.simpgb_banlist OK

guestbook.simpgb_data OK

......

......

......

修復指定的資料庫用

# mysqlcheck -A -o -r Database_NAME -p

即可

Ⅶ 如何遠程修復損壞的mysql資料庫

來快速修復所有的資料庫或者特定的資料庫;方法:進入Mysql的Bin目錄:C:\ProgramFiles\MySQL\MySQLServer4.1\bin運行:mysqlcheck-A-o-r-uroot-p123注意,將123改成你自己的root用戶密碼希望能解決您的問題。

Ⅷ 如何處理mysql中表損壞問題

5.9.4. 表維護和崩潰恢復
後面幾節討論如何使用myisamchk來檢查或維護MyISAM表(對應.MYI和.MYD文件的表)。
你可以使用myisamchk實用程序來獲得有關你的資料庫表的信息或檢查、修復、優化他們。下列小節描述如何調用myisamchk(包括它的選項的描述),如何建立表的維護計劃,以及如何使用myisamchk執行各種功能。
盡管用myisamchk修復表很安全,在修復(或任何可以大量更改表的維護操作)之前先進行備份也是很好的習慣
影響索引的myisamchk操作會使ULLTEXT索引用full-text參數重建,不再與MySQL伺服器使用的值兼容。要想避免,請閱讀5.9.5.1節,「用於myisamchk的一般選項」的說明。
在許多情況下,你會發現使用SQL語句實現MyISAM表的維護比執行myisamchk操作要容易地多:
· 要想檢查或維護MyISAM表,使用CHECK TABLE或REPAIR TABLE。
· 要想優化MyISAM表,使用OPTIMIZE TABLE。
· 要想分析MyISAM表,使用ANALYZE TABLE。
可以直接這些語句,或使用mysqlcheck客戶端程序,可以提供命令行介面。
這些語句比myisamchk有利的地方是伺服器可以做任何工作。使用myisamchk,你必須確保伺服器在同一時間不使用表。否則,myisamchk和伺服器之間會出現不期望的相互干涉。
5.9.5. myisamchk:MyISAM表維護實用工具
5.9.5.1. 用於myisamchk的一般選項
5.9.5.2. 用於myisamchk的檢查選項
5.9.5.3. myisamchk的修復選項
5.9.5.4. 用於myisamchk的其它選項
5.9.5.5. myisamchk內存使用
5.9.5.6. 將myisamchk用於崩潰恢復
5.9.5.7. 如何檢查MyISAM表的錯誤
5.9.5.8. 如何修復表
5.9.5.9. 表優化
可以使用myisamchk實用程序來獲得有關資料庫表的信息或檢查、修復、優化他們。myisamchk適用MyISAM表(對應.MYI和.MYD文件的表)。
調用myisamchk的方法:
shell> myisamchk [options] tbl_name ...
options指定你想讓myisamchk做什麼。在後面描述它們。還可以通過調用myisamchk --help得到選項列表。
tbl_name是你想要檢查或修復的資料庫表。如果你不在資料庫目錄的某處運行myisamchk,你必須指定資料庫目錄的路徑,因為myisamchk不知道你的資料庫位於哪兒。實際上,myisamchk不在乎你正在操作的文件是否位於一個資料庫目錄;你可以將對應於資料庫表的文件拷貝到別處並且在那裡執行恢復操作。
如果你願意,可以用myisamchk命令行命名幾個表。還可以通過命名索引文件(用「 .MYI」後綴)來指定一個表。它允許你通過使用模式「*.MYI」指定在一個目錄所有的表。例如,如果你在資料庫目錄,可以這樣在目錄下檢查所有的MyISAM表:
shell> myisamchk *.MYI
如果你不在資料庫目錄下,可通過指定到目錄的路徑檢查所有在那裡的表:
shell> myisamchk /path/to/database_dir/*.MYI
你甚至可以通過為MySQL數據目錄的路徑指定一個通配符來檢查所有的資料庫中的所有表:
shell> myisamchk /path/to/datadir/*/*.MYI
推薦的快速檢查所有MyISAM表的方式是:
shell> myisamchk --silent --fast /path/to/datadir/*/*.MYI
如果你想要檢查所有MyISAM表並修復任何破壞的表,可以使用下面的命令:
shell> myisamchk --silent --force --fast --update-state \
-O key_buffer=64M -O sort_buffer=64M \
-O read_buffer=1M -O write_buffer=1M \
/path/to/datadir/*/*.MYI
該命令假定你有大於64MB的自由內存。關於用myisamchk分配內存的詳細信息,參見5.9.5.5節,「myisamchk內存使用」。
當你運行myisamchk時,必須確保其它程序不使用表。否則,當你運行myisamchk時,會顯示下面的錯誤消息:
warning: clients are using or haven't closed the table properly
這說明你正嘗試檢查正被另一個還沒有關閉文件或已經終止而沒有正確地關閉文件的程序(例如mysqld伺服器)更新的表。
如果mysqld正在運行,你必須通過FLUSH TABLES強制清空仍然在內存中的任何錶修改。當你運行myisamchk時,必須確保其它程序不使用表。避免該問題的最容易的方法是使用CHECK TABLE而不用myisamchk來檢查表。
5.9.5.1. 用於myisamchk的一般選項
本節描述的選項可以用於用myisamchk執行的任何類型的表維護操作。本節後面的章節中描述的選項只適合具體操作,例如檢查或修復表。
· --help,-?
顯示幫助消息並退出。
· --debug=debug_options, -# debug_options
輸出調試記錄文件。debug_options字元串經常是'd:t:o,filename'。
· --silent,-s
沉默模式。僅當發生錯誤時寫輸出。你能使用-s兩次(-ss)使myisamchk沉默。
· --verbose,-v
冗長模式。列印更多的信息。這能與-d和-e一起使用。為了更冗長,使用-v多次(-vv, -vvv)!
· --version, -V
顯示版本信息並退出。
· --wait, -w
如果表被鎖定,不是提示錯誤終止,而是在繼續前等待到表被解鎖。請注意如果用--skip-external-locking選項運行mysqld,只能用另一個myisamchk命令鎖定表。
還可以通過--var_name=value選項設置下面的變數:
變數
默認值

decode_bits
9

ft_max_word_len
取決於版本

ft_min_word_len
4

ft_stopword_file
內建列表

key_buffer_size
523264

myisam_block_size
1024

read_buffer_size
262136

sort_buffer_size
2097144

sort_key_blocks
16

stats_method
nulls_unequal

write_buffer_size
262136

可以用myisamchk --help檢查myisamchk變數及其 默認值:
當用排序鍵值修復鍵值時使用sort_buffer_size,使用--recover時這是很普通的情況。
當用--extend-check檢查表或通過一行一行地將鍵值插入表中(如同普通插入)來修改鍵值時使用Key_buffer_size。在以下情況通過鍵值緩沖區進行修復:
· 使用--safe-recover。
· 當直接創建鍵值文件時,需要對鍵值排序的臨時文件有兩倍大。通常是當CHAR、VARCHAR、或TEXT列的鍵值較大的情況,因為排序操作在處理過程中需要保存全部鍵值。如果你有大量臨時空間,可以通過排序強制使用myisamchk來修復,可以使用--sort-recover選項。
通過鍵值緩沖區的修復佔用的硬碟空間比使用排序么少,但是要慢。
如果想要快速修復,將key_buffer_size和sort_buffer_size變數設置到大約可用內存的25%。可以將兩個變數設置為較大的值,因為一個時間只使用一個變數。
myisam_block_size是用於索引塊的內存大小。
stats_method影響當給定--analyze選項時,如何為索引統計搜集處理NULL值。它如同myisam_stats_method系統變數。詳細信息參見5.3.3節,「伺服器系統變數」和7.4.7節,「MyISAM索引統計集合」的myisam_stats_method的描述。
ft_min_word_len和ft_max_word_len表示FULLTEXT索引的最小和最大字長。ft_stopword_file為停止字文件的文件名。需要在以下環境中對其進行設置。
如果你使用myisamchk來修改表索引(例如修復或分析),使用最小和最大字長和停止字文件的 默認全文參數值(除非你另外指定)重建FULLTEXT索引。這樣會導致查詢失敗。
出現這些問題是因為只有伺服器知道這些參數。它們沒有保存在MyISAM索引文件中。如果你修改了伺服器中的最小或最大字長或停止字文件,要避免該問題,為用於mysqld的myisamchk指定相同的ft_min_word_len,ft_max_word_len和ft_stopword_file值。例如,如果你將最小字長設置為3,可以這樣使用myisamchk來修復表:
shell> myisamchk --recover --ft_min_word_len=3 tbl_name.MYI
要想確保myisamchk和伺服器使用相同的全文

Ⅸ 如何修復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資料庫

1、mysqlcheck 進行表修復
使用mysqlcheck 命令對表進行修復

#mysqlcheck -uuser -ppassword database table -c #檢查單個表是否損壞
#mysqlcheck -uuser -ppassword database -c #檢查整個庫那些表損壞
首先檢查資料庫的那些表損壞,如果能定位到那張表損壞可以直接對表修復

#mysqlcheck -uuser -ppassword database table -r # 修復數據表
#mysqlcheck -uuser -ppassword database -r # 修復整個資料庫
更多參數 查看 mysqlcheck –help

2、myisamchk 修復mysql表

Myisamchk是MyISAM表維護的一個非常實用的工具。可以使用myisamchk實用程序來獲得有關資料庫表的信息或檢查、修復、優化他們。myisamchk適用MyISAM表(對應.MYI和.MYD文件的表)。

閱讀全文

與mysql軟體信息毀壞怎麼修復相關的資料

熱點內容
電腦上怎麼下載班智達的軟體 瀏覽:1157
無痕跡消除圖片軟體 瀏覽:722
免費小票軟體 瀏覽:955
華為在哪裡設置軟體停止運行 瀏覽:961
用電腦鍵盤調節聲音大小 瀏覽:1259
自動刷軟體賺錢 瀏覽:1261
古裝連續劇免費版 瀏覽:1415
工免費漫畫 瀏覽:1147
手機軟體專門儲存文件 瀏覽:1509
uos如何用命令安裝軟體 瀏覽:1316
有線耳機插電腦麥克風 瀏覽:647
侏羅紀世界3在線觀看完整免費 瀏覽:995
單個軟體怎麼設置名稱 瀏覽:719
鳳凰網電腦版下載視頻怎麼下載視頻怎麼下載 瀏覽:1385
明白之後如何免費獲得無人機 瀏覽:831
如何解禁軟體菜單 瀏覽:855
副路由器連接電腦視頻 瀏覽:1351
內置wifi電視如何裝軟體 瀏覽:1107
手機換零免費雪碧 瀏覽:1589
國行蘋果如何下載美版軟體 瀏覽:1215