當前位置:首頁 » 數據倉庫 » 資料庫修復技術
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫修復技術

發布時間: 2023-07-21 01:46:11

『壹』 怎樣修復已經損壞的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伺服器必須沒有啟動!

最後檢測修復所有資料庫(表)。

『貳』 Sybase資料庫的修復

資料庫所用的設備正常,而庫demodb的狀態為suspect。
(1)以sa注冊
isql -u sa -P
1>
(2)修改server屬性,置系統表為允許修改該狀態。
1>sp_configure allow updates,1
2>go
3>recofigure with override
4>go
(3)Sybase資料庫修復,修改資料庫的狀態,置資料庫狀態為server啟動時不檢測。
1>update master.sysdatabases set status = -32768
2>where name = demodb
3>go
(4)重啟server。
(5)修改資料庫的狀態,置資料庫狀態為正常。
1>update master.sysdatabases set status = 0
2>where name =demodb
3>go
(6)修改server屬性,置系統表為不允許修改狀態。
1>sp_configure allowupdates,0
2>go
3>reconfigure with override
4>go
(7)再次重啟server。
至此,如果資料庫能夠正常,則恢復完畢,至此,Sybase資料庫修復完成。
以上步驟中,也可以用單用戶模式啟動server,命令為startserver -m,而不必修改server的allow updates屬性。SYBASE 11及以上版本的server只需重啟,不需要執行reconfigure with override。如果上述方法仍不能恢復資料庫,則只能使用dbcc命令刪除該資料庫,然後重新建立。

『叄』 講解MySQL資料庫表如何修復

一張損壞的表的症狀通常是查詢意外中斷並且你能看到例如這些錯誤: ◆ 「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塊被破壞,或包含不正確的信息,或如果索引文件丟失,你只應該到這個階段 。在這種情況下,創建一個新的索引文件是必要的。按如下這樣的步驟做: ◆ 定位到包含崩潰表的資料庫目錄中 ◆ 把數據文件移更安全的地方。

『肆』 如何修復MYSQL資料庫因斷電造成的數據損壞

在使用MySQL資料庫的時候,都碰到過因斷電造成資料庫損壞的情況,大家都知道,斷電或非正常關機是導致MySQL資料庫出現錯誤最常見的原因,如何恢復MySQL資料庫是大家都非常頭痛的問題。目前有方法可以幫助大家恢復損壞的MySQL資料庫嗎?
當用戶出現斷電造成的MySQL資料庫丟失損壞時,如果能進入MySQL軟體,但是提示錯誤信息,用戶可以通過「系統維護」—「資料庫壓縮修復」,壓縮下資料庫(有些軟體在「系統設置」—「系統維護」—「資料庫備份\恢復」中),這種方法只適合一小部分的資料庫故障修復,功能性並不高。
現在網路上有兩種比較推薦使用的MySQL資料庫恢復方法,一種方法使用MySQL(和PHP搭配之最佳組合)的check table和repair table 的sql語句,另一種方法是使用MySQL(和PHP搭配之最佳組合)提供的多個myisamchk, isamchk數據檢測恢復工具。在很多用戶看來,這兩個方法都比較復雜,並不適合大多數的用戶使用。另外,這兩種方法並不能有效的恢復MySQL資料庫,可能還會造成資料庫被進一步損壞,造成大家無法挽回的損失。根據以上幾個原因,這兩種MySQL資料庫恢復方法並不建議大家使用。


資料庫被損壞分以下幾種情況:
1、嚴重損壞
2、輕度損壞
3、有些表被損壞或有些表的部分記錄被損壞