参考文章:
http://www.jb51.net/article/87468.htm
起原:
一个老测试环境中,磁盘空间300GB, ibdata1 260GB, 其它数据20GB左右,经常磁盘告警。
查看了一下,MyISAM引擎占用还比较多,于是根据字典表进行搜查,并修改了相应的存储引擎,sql大体如下:
SELECT concat('ALTER TABLE ',TABLE_SCHEMA,'.',TABLE_NAME,' ENGINE=Innodb;') from information_schema.TABLES where ENGINE='MyISAM';
修改完成后,记得在my.cnf中添加如下参数
innodb_file_per_table = 1
然后通过mysqldump导出数据后,删除全部原有数据,重新导入即可。
mysqldump -uroot -p --default-character-set=utf8 -A --opt --extended-insert=true --triggers -R --hex-blob --single-transaction --no-autocommit test > db_name.sql
注:在网上找了一下,除了这个方法比较告谱,其它方法感觉都不行。