有兩種方法,一種方法使用mysql的check table和repair table 的sql語(yǔ)句,另一種方法是使用MySQL提供的多個(gè)myisamchk, isamchk數(shù)據(jù)檢測(cè)恢復(fù)工具。前者使用起來(lái)比較簡(jiǎn)便。推薦使用。
創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為瑞安等服務(wù)建站,瑞安等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為瑞安企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結(jié)果說(shuō)Status是OK,則不用修復(fù),如果有Error,可以用:
repair table tabTest;
進(jìn)行修復(fù),修復(fù)之后可以在用check table命令來(lái)進(jìn)行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進(jìn)行說(shuō)明。當(dāng)發(fā)現(xiàn)某個(gè)數(shù)據(jù)表出現(xiàn)問(wèn)題時(shí)可以使用:
myisamchk tablename.MYI
進(jìn)行檢測(cè),如果需要修復(fù)的話,可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細(xì)參數(shù)說(shuō)明,可以參見它的使用幫助。需要注意的時(shí)在進(jìn)行修改時(shí)必須確保MySQL服務(wù)器沒(méi)有訪問(wèn)這個(gè)數(shù)據(jù)表,保險(xiǎn)的情況下是最好在進(jìn)行檢測(cè)時(shí)把MySQL服務(wù)器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面啟動(dòng)MySQL服務(wù)器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對(duì)于使用RPM安裝的用戶應(yīng)該是/var/lib/mysql/mysql.sock,對(duì)于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實(shí)際情況進(jìn)行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫(kù)存放的位置。
需要注意的時(shí),如果你打算把這條命令放在你的rc.local里面,必須確認(rèn)在執(zhí)行這條指令時(shí)MySQL服務(wù)器必須沒(méi)有啟動(dòng)!檢測(cè)修復(fù)所有數(shù)據(jù)庫(kù)(表)
1.先用SQLyog之類的圖形化數(shù)據(jù)庫(kù)管理工具把數(shù)據(jù)庫(kù)內(nèi)的所有東西備份出來(lái)。backup database as sql dump。注意要選structure and data (結(jié)構(gòu)和數(shù)據(jù))。導(dǎo)出sql文件后,確認(rèn)一下sql文件無(wú)誤。
2.系統(tǒng)中可能存在自帶的MySQL,采用命令進(jìn)行強(qiáng)制刪除
rpm –qa|grep mysql
rpm -e mysql-5.1.61 --nodeps 強(qiáng)制刪除mysql 不考慮依賴關(guān)系 (此處根據(jù)上一步查詢到的結(jié)果)
3.安裝mysql
rpm -ivh MySQL-server-community-5.1.61-0.rhel5.x86_64.rpm (包名根據(jù)實(shí)際情況)
4.在MySQL配置文件/etc/my.cnf中根據(jù)實(shí)際需要添加
lower_case_table_names=1
skip-name-resolve
event_scheduler=1
default-character-set=utf8
wait_timeout=31536000
interactive_timeout=31536000
5.啟動(dòng)服務(wù)
cd /etc/init.d
./mysql restart
或者service mysqld restart
6.登陸MySQL
/usr/local/mysql/bin/mysql -u root –p
7.新增用戶,根據(jù)允許訪問(wèn)的地址和用戶,可能需要多次執(zhí)行。
GRANT ALL PRIVILEGES ON *.* TO 'user'@'192.168.1.1(你的ip)' IDENTIFIED BY 'password' WITH GRANT OPTION;
flush privileges;
8.
用SQLyog之類的圖形化數(shù)據(jù)庫(kù)管理工具把數(shù)據(jù)庫(kù)備份出來(lái)的sql語(yǔ)句執(zhí)行一遍
9.完成
/etc/yum.repos.d/MariaDB.repo
1 升級(jí)必須是逐步遞增升級(jí), 不能跨版本升級(jí)
2 升級(jí)后必須使用升級(jí)命令 mysql_upgrade
3 升級(jí)重啟后查看日志文件, 是否有錯(cuò)誤提示, 必須修復(fù)后才可進(jìn)行下一步升級(jí)
我在windows環(huán)境下升級(jí)MySQL 從5.0到5.5升級(jí)。
升級(jí)就是重新安裝了mysql。把原來(lái)的5.0下的data數(shù)據(jù)拷貝給5.5mysql下的data。但是拷貝后,重啟5.5mysql 突然識(shí)別不了innodb的table_type。經(jīng)過(guò)學(xué)習(xí)了解后。把5.0下的my.ini 文件中innodb的配置選項(xiàng)拷貝給了5.5后,重啟問(wèn)題得到了解決。