woff 發表於 2008-5-19 11:52:20

MYSQL資料庫修復與檢查

先到/var/lib/mysql/目錄下

切換到你資料庫的目錄下

如/var/lib/mysql/test

輸入myisamchk -e -s *.MYI

檢查XXX.MYI是否故障

記的一定要先關閉MYSQL喔!不然資料庫會壞掉

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

CentOS 6
# mysqlcheck -A -o -r -p
Enter password:
database1 OK
database2 OK
----------
CentOS 7 mysqlcheck --repair --all-databases -uroot -p
修復指定的資料庫用
# mysqlcheck -A -o -r Database_NAME -p
即可
另外如果只是對某個表進行修復可以用: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資料庫存放的位置。

最佳化資料表
OPTIMIZE TABLE `表名`,`表名`,.....;

當我們按照原來的方式通過PHP存取MySQL資料庫時,就算設置了表的默認字元集為utf8並且通過UTF-8編碼發送查詢,你會發現存入資料庫的仍然是亂碼。問題就出在這個connection連接層上。解決方法是在發送查詢前執行一下下面這句:

SET NAMES ‘utf8’;
不過最好的方法還是在 my.cnf 中的 和 章節中都加上一行 default-character-set=utf8
就可以了:


default-character-set=utf8

default-character-set=utf8



wlulk8966 發表於 2012-1-24 00:42:11

說的不錯

lglglgl1996 發表於 2012-1-24 00:51:43

頂你一下,好貼要頂!

andys0623 發表於 2012-1-24 00:56:04

幫你項項吧
頁: [1]
查看完整版本: MYSQL資料庫修復與檢查