萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> 解決MySQL數據庫目錄ibdata1文件占用空間大問題

解決MySQL數據庫目錄ibdata1文件占用空間大問題

如果你使用的是否windows系統會發現mysql中的data目錄地看到有一個ibdata1文件,這個文件會非常的大了,那麼要如何來處理此問題,我們來看看。

經常使用MySQL並啟用了InnoDB引擎的時候,會發現數據庫相應目錄下,ibdata1這個文件會越來越大,並且即便刪除表中數據也無法減小其空間占用。所以,接下來的配置就是為了解決這個問題。

1、先停止所有訪問數據庫的服務;
2、導出數據文件;

mysqldump -u root -p dbname| gzip > dbname.sql.gz
該命令會將數據庫壓縮導出,會慢點,如果你數據庫並不大的話,可以不用壓縮,那麼就是:

mysqldump -u root -p dbname > dbname.sql
3、修改MySQL配置;

vi /etc/mysql/my.cnf
在[mysqld]下添加一行:

innodb_file_per_table
並刪除數據庫所在路徑中的ibdata1及兩個log文件。
然後重新啟動數據庫:

service mysql restart
接下來登進數據庫,使用以下命令查看配置是否生效:

show variables like '%per_table%';
如果輸出結果為ON,那麼配置已經修改成功;
4、導入原來的數據
登入數據庫後執行:

source dbname.sql
或者不登錄mysql執行:

mysqldump -uroot -p dbname < dbname.sql;
導入完成後即可發現,ibdata1這個文件已經不怎麼增長了,所有數據表的數據都會存在他自己目錄下的同名db文件中,這時候清理表數據後,空間占用也會相應的減小。

Linux修改mysql數據文件路徑

1.設置新的存放路徑


mkdir -p /data/mysql
2.復制原有數據

cp -R /var/lib/mysql/* /data/mysql
3.修改權限

chown -R mysql:mysql /data/mysql
4.修改配置文件

vi /etc/mysql/my.cnf
datadir = /data/mysql
5.修改啟動文件

vi /etc/apparmor.d/usr.sbin.mysqld
#把

/var/lib/mysql r,
/var/lib/mysql/** rwk,
#改成

/data/mysql r,
/data/mysql/** rwk,
6.重啟服務
重啟apparmor

/etc/init.d/apparmor restart
/etc/init.d/mysql restart
至此修改完成。

附錄:

導出數據庫並壓縮:

mysqldump -u root -p mysql | gzip > mysql.sql.gz
解壓:

gunzip mysql.sql.gz
導入:

source mysql.sql

mysqldump -uroot -p dbname < dbname.sql;
如果無法啟動,查看LOG:

tail -n 40 /var/log/syslog

copyright © 萬盛學電腦網 all rights reserved