數(shù)據(jù)庫(kù)總表 ibdata1文件占用,怎么清理呢?
mysql自帶的數(shù)據(jù)庫(kù)。建議保留。
數(shù)據(jù)庫(kù)變大不是好事嗎?不是代表業(yè)務(wù)變多 嗎?難道數(shù)據(jù)庫(kù)對(duì)你們來(lái)說(shuō)只有1M才能滿意嗎?占點(diǎn)磁盤(pán)空間怎么了?站在運(yùn)維角度上數(shù)據(jù)是無(wú)價(jià)的
如果執(zhí)意要?jiǎng)h除,參考下面
接下來(lái)的配置就是為了解決這個(gè)問(wèn)題。
1、先停止所有訪問(wèn)數(shù)據(jù)庫(kù)的服務(wù);
2、導(dǎo)出數(shù)據(jù)文件;
mysqldump -u root -p dbname| gzip > dbname.sql.gz
該命令會(huì)將數(shù)據(jù)庫(kù)壓縮導(dǎo)出,會(huì)慢點(diǎn),如果你數(shù)據(jù)庫(kù)并不大的話,可以不用壓縮,那么就是:
mysqldump -u root -p dbname > dbname.sql
3、修改MySQL配置;
vi /etc/mysql/my.cnf
在[mysqld]下添加一行:
innodb_file_per_table
并刪除數(shù)據(jù)庫(kù)所在路徑中的ibdata1及兩個(gè)log文件。
然后重新啟動(dòng)數(shù)據(jù)庫(kù):
service mysql restart
接下來(lái)登進(jìn)數(shù)據(jù)庫(kù),使用以下命令查看配置是否生效:
show variables like '%per_table%';
如果輸出結(jié)果為ON,那么配置已經(jīng)修改成功;
4、導(dǎo)入原來(lái)的數(shù)據(jù)
登入數(shù)據(jù)庫(kù)后執(zhí)行:
source dbname.sql
或者不登錄mysql執(zhí)行:
mysqldump -uroot -p dbname < dbname.sql;
導(dǎo)入完成后即可發(fā)現(xiàn),ibdata1這個(gè)文件已經(jīng)不怎么增長(zhǎng)了,所有數(shù)據(jù)表的數(shù)據(jù)都會(huì)存在他自己目錄下的同名db文件中,這時(shí)候清理表數(shù)據(jù)后,空間占用也會(huì)相應(yīng)的減小。




