MySql ibdata1文件太大。怎麽減?
如果MySql innodb是* * *表空間,那麽ibdata1的文件越來越大,達到30 g以上,壹些無用的表被清空:
截斷表xxx
然後優化表xxx沒有影響
因為它對* * *表空間不起作用。
Mysql ibdata1存儲數據、索引等。,這是MySQL最重要的數據。
如果不單獨存儲數據,這個文件的大小很容易增大到g,甚至幾十g,對於某些應用來說,不是很適合。因此,這個文件應該減少。
無法自動收縮,必須導出數據,刪除ibdata1,然後再導入數據,比較麻煩,需要為每個表換壹個單獨的文件。
解決方法:數據文件單獨存儲(如何將共享表空間改為每個表獨立的表空間文件)。
步驟如下:
1)備份數據庫
從命令行輸入MySQL Server 5.0\bin。
備份所有數據庫並執行命令。
d:\ & gt;MySQL dump-q-umysql-PP assword-add-drop-table-all-databases & gt;c:/all.sql
在此步驟之後,停止數據庫服務。
2)找到my.ini或my.cnf文件。
在linux下執行。/mysqld-verbose-help | grep-a 1 '默認選項'
將會出現類似的顯示:
默認選項按給定順序從以下文件中讀取:
/etc/my . CNF ~/. my . CNF/usr/local/service/MySQL 3306/etc/my . CNF
Windows環境可以:
mysqld-verbose-help & gt;mysqlhelp.txt
記事本mysqlhelp.txt
在裏面尋找默認選項,可以看到尋找my.ini的順序找到真正的目錄。
3)修改mysql配置文件
打開my.ini或my.cnf文件。
在[mysqld]下添加以下配置
innodb_file_per_table=1
要驗證配置是否有效,可以重啟mysql並執行。
顯示變量,如“%per_table%”
查看innodb_file_per_table變量是否打開。
4)刪除原始數據文件。
刪除原來的ibdata1文件和日誌文件ib_logfile*,刪除數據目錄下的應用數據庫文件夾(mysql文件夾不刪除)。
5)恢復數據庫
啟動數據庫服務
從命令行輸入MySQL Server 5.0\bin。
恢復所有數據庫並執行命令mysql -uusername -pyourpassword。
經過以上步驟,我們可以看到新的ibdata1文件只有幾十米,數據和索引都變成了單個表的小ibd文件,在對應數據庫的文件夾下。