解決MySQL資料庫目錄ibdata1檔案佔用空間大問題

來源:互聯網
上載者:User

經常使用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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.