釋放mysql ibdata1文件空間

一、今天做壓力測試,導入了大量的數據,發現空間應用的很厲害,ibdata1這個文件佔用空間很大,刪除了一個大數據庫,但是ibdata1的空間沒有釋放。



二、分析:

在mysql數據庫中,如果不指定innodb_file_perl_table參數,單獨存在每個表的數據,mysql表空間的內容都會放在這裏,mysql的ibdata1存放數據和索引等。




三、處理:




備份數據庫:

mysqldump -q -uroot -p --add-drop-table --all-databases > /usr/local/mysql/backup/all.sql


關閉msyql

cd /usr/local/mysql/data/

mysqladmin shutdown -uroot -p


刪除表空間和redo日誌

rm -rvf ibdata1      ib_logfile0  ib_logfile1 


刪除非mysql自帶的數據庫

[root@localhost data]# rm -rvf bird

removed `bird/checking.frm'

removed `bird/Customer.frm'

removed `bird/Store_Information.frm'

removed `bird/db.opt'

removed `bird/Sales_Information.frm'

removed `bird/Geography.frm'

removed `bird/savings.frm'

removed directory: `bird'

[root@localhost data]#


在mysql配置文件中添加如下配置:

innodb_file_per_table = 1


重啓myql

mysqld_safe --user=mysql &


恢復數據

mysql -uroot -p < ../backup/all.sql 



查看ibdata1文件,空間已釋放。





四、備註:


建議大家最後在mysql初始化的時候,把該參數就加入到mysql配置文件中。



5.一般情況下(ubuntu下默認安裝路徑爲)

有時候在Linux下使用命令安裝完應用程序後,我們需要進行必要的配置,可是卻找不到該文件,這裏對默認安裝路徑進行說明(僅作爲參考,如下目錄部分正確,這裏只使用了mysql,apache2歡迎給出最新結果):

----------------------------------我是分割線---------------------------------------

apache:
如果apt-get命令安裝
apache配置文件:/etc/apache2/httpd.conf
apache模塊路徑:/usr/sbin/apachectl
web目錄:/var/www/
如果採用源代碼安裝,一般默認安裝在/usr/local/apache2目錄下


php:

php的配置文件:/etc/php.ini
如果採用源代碼安裝,一般默認安裝在/usr/local/lib目錄下
php配置文件: /usr/local/lib/php.ini
或/usr/local/php/etc/php.ini


mysql:
如果apt-get命令安裝,安裝路徑應在/usr/share/mysql目錄下
mysqldump文件位置:/usr/bin/mysqldump
mysql配置文件:
/etc/mysql/my.cnf或/usr/share/mysql/my.cnf
mysql數據目錄在/var/lib/mysql目錄下



參考:http://hi.baidu.com/green_lizard/item/b71523a7ad207384151073a8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章