一張損壞的表的症狀通常是查詢意外中斷並且你能看到例如這些錯誤: ◆ 「tbl_name.frm」被鎖定不能改變。 ◆ 不能找到文件「tbl_name.MYI」(Errcode :### )。 ◆ 從表處理器的得到錯誤###(此時,錯誤135是一個例外)。 ◆ 意外的文件結束。 ◆ 記錄文件被毀壞。 在這些情況下,你必須修復表。表的修復是一項非常困難的工作,很多情況下令人束手無策。然而,有一些常規的知道思想和過程,可以遵循它們來增加修正表的機會。通常,開始是可以用最快的修復方法,看看能否袖珍故障。如果發現不成功,可以逐步升級到更徹底的但更慢的修復方法。如果仍舊難以修復,就應該從備份中恢復了。在上一章已經詳細介紹了這一部分內容。 簡單安全的修復 為了修復一個表執行下列步驟: ◆ 首先,用--recover,-r選項修正表,並且用--quick,-q選項,來只根據索引文件的內容進行恢復。這樣不接觸數據文件來修復索引文件。(-r意味著「恢復模式」) myisamchk -r -q tbl_nameisamchk -r -q tbl_name ◆ 如果問題仍舊存在,則忽略--quick選項,允許修復程序修改數據文件,因為這可能存在問題。下面的命令將從數據文件中刪除不正確的記錄和已被刪除的記錄並重建索引文件: myisamchk -r tbl_nameisamchk -r tbl_name ◆ 如果前面的步驟失敗,使用。安全恢復模式使用一個老的恢復方法,處理常規恢復模式不行的少數情況(但是更慢)。 myisamchk --safe-recover tbl_nameisamchk --safe-recover tbl_name困難的修理如果在索引文件的第一個16K塊被破壞,或包含不正確的信息,或如果索引文件丟失,你只應該到這個階段 。在這種情況下,創建一個新的索引文件是必要的。按如下這樣的步驟做: ◆ 定位到包含崩潰表的資料庫目錄中 ◆ 把數據文件移更安全的地方。
B. 如何修復MySQL資料庫
1.先在運行中輸入CMD,啟動命令行.
2.進入Mysql的Bin目錄:E:\Program Files\MySQL\MySQL Server 5.0\bin,如果不知道如何進入別的目錄,就要參考網上的資料補習基礎知識了.
常見方式:
運行 E:
運行 CD "E:\Program Files\MySQL\MySQL Server 5.0\bin"
3.運行:mysqlcheck -A -o -r -uroot -p888888
注意,將888888改成你自己的root用戶密碼
mysql.columns_priv OK
mysql.db OK
mysql.func OK
mysql.help_categoryOK
mysql.help_keyword OK
mysql.help_relationOK
mysql.help_topic OK
mysql.host OK
mysql.tables_privOK
mysql.time_zoneOK
mysql.time_zone_leap_secondOK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_typeOK
mysql.user OK
......
......
......
注意!
C. 怎麼對資料庫進行恢復mysql
MySQL備份和還原,都是利用mysqlmp、mysql和source命令來完成的。
1.Win32下MySQL的備份與還原
1.1 備份
開始菜單 | 運行 | cmd |利用「cd /Program Files/MySQL/MySQL Server 5.0/bin」命令進入bin文件夾 | 利用「mysqlmp -u 用戶名 -p databasename >exportfilename」導出資料庫到文件,如mysqlmp -u root -p voice>voice.sql,然後輸入密碼即可開始導出。
1.2 還原
進入MySQL Command Line Client,輸入密碼,進入到「mysql>」,輸入命令"show databases;",回車,看看有些什麼資料庫;建立你要還原的資料庫,輸入"create database voice;",回車;切換到剛建立的資料庫,輸入"use voice;",回車;導入數據,輸入"source voice.sql;",回車,開始導入,再次出現"mysql>"並且沒有提示錯誤即還原成功。
2.Linux下MySQL的備份與還原
2.1 備份
[root@localhost ~]# cd /var/lib/mysql (進入到MySQL庫目錄,根據自己的MySQL的安裝情況調整目錄)
[root@localhost mysql]# mysqlmp -u root -p voice>voice.sql,輸入密碼即可。
2.2 還原
法一:
[root@localhost ~]# mysql -u root -p 回車,輸入密碼,進入MySQL的控制台"mysql>",同1.2還原。
法二:
[root@localhost ~]# cd /var/lib/mysql (進入到MySQL庫目錄,根據自己的MySQL的安裝情況調整目錄)
[root@localhost mysql]# mysql -u root -p voice<voice.sql,輸入密碼即可。
D. 備份和恢復資料庫的命令
MySQL 命令行備份
1,進入MySQL目錄下的bin文件夾:cd MySQL中到bin文件夾的目錄
(SHOW VARIABLES LIKE "%char%"; 查看資料庫安裝路徑)
Linux下命令:
[root@linuxsir01 root]# mysqlmp -u root -p oa_int > /home/oa_20160627.sql
Windows下命令:
C:\Users\Administrator>mysqlmp -u 密碼 -p 資料庫名 > d:/oa_int_20160708.sql
MySQL 命令行恢復:
Linux下命令:
[root@linuxsir01 root]# mysql -u root -p oa_int1 < /home/oa_20160627.sql
Enter password:在這里輸入資料庫的密碼
Windows下命令:
C:\Users\Administrator> mysql -u root -p 資料庫名(要先創建好資料庫) < d:/oa_int_20160708.sql
E. 怎麼恢復mysql資料庫
mysql資料庫恢復方法:
方法一:
命令恢復資料庫:
mysql -u root –password=root密碼 資料庫名 < 備份文件.sql
方法二:
第一步:用管理員許可權登錄並進入後台管理界面,點「資料庫->資料恢復」。
第二步:在數據恢復設置中選擇「從本地文件」進行恢復,然後通過右邊的「瀏覽」按鈕找到之前保存下來的.sql文件。
第三步:點「提交」按鈕後將出現詢問「分卷數據成功導入資料庫,需要自動導入本次其他的備份嗎?」一般繼續點「確定」按鈕即可。之後的資料庫文件就完全導入到當前網站了。這時出現再次要求輸入管理員帳號的提示。訪問網站地址時也會看到所有信息都恢復到備份資料庫時的內容了。
小提示:
不管採取哪種方式備份和恢復資料庫,一定要注意備份和恢復時使用的版本要相同,甚至是語言種類也要一致,否則會存在亂碼的問題。
F. 如何使用phpmyadmin工具進行修復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的功能。
G. navicat for mysql中如何設置自動修復崩潰的數據表
jb51_tablename是jb51_tablename.MYD的名稱。運行以下就可以了。
有的時候因為掉電或者其他原因導致資料庫損壞,我們可以使用mysql自帶的mysqlcheck命令來快速修復所有的資料庫或者特定的資料庫;例如
檢查優化並修復所有的資料庫用:
1.先在運行中輸入CMD,啟動命令行.
2.進入Mysql的Bin目錄:E:\Program Files\MySQL\MySQL Server 5.0\bin,如果不知道如何進入別的目錄,就要參考網上的資料補習基礎知識了.
常見方式:
H. 如何修復MySQL資料庫表
有兩種方法,一種方法使用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掉。
另外可以把下面的命令放在你的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伺服器必須沒有啟動!檢測修復所有資料庫(表)
I. mysql 命令還原資料庫
mysqlmp -hhostname -uusername -ppassword databasename > backupfile.sql備份MySQL資料庫為帶刪除表的格式備份MySQL資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫。
mysqlmp -–add-drop-table -uusername -ppassword databasename > backupfile.sql直接將MySQL資料庫壓縮備份
mysqlmp -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz備份MySQL資料庫某個(些)表
mysqlmp -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql同時備份多個MySQL資料庫
mysqlmp -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql僅僅備份資料庫結構
mysqlmp –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql備份伺服器上所有資料庫
mysqlmp –all-databases > allbackupfile.sql還原MySQL資料庫的命令
mysql -hhostname -uusername -ppassword databasename < backupfile.sql還原壓縮的MySQL資料庫
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename將資料庫轉移到新伺服器
mysqlmp -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename