在MySQL 5.6.6版本以前,MySQL默认会把所有的innodb的表都放在同一个文件中(ibdata1),当该文件过大的时候,MySQL容易出错,维护性能差。
但那些在修改之前已经创建了innodb的表怎么办?
一种办法是用mysqldump备份所有数据库后重建所有数据库,步骤如下
-
mysqldump -u <user> -p <password> --all-databases > backup.sql导出所有数据
-
删除所有数据库 drop database database_N
-
停止MySQL服务service mysql stop如果是Mariadb就是service mariadb stop
-
删除文件ibdata1, ib_logfile0, ib_logfile1
-
修改MySQL配置文件/etc/my.cnf,增加或修改如下:
[mysqld]
innodb_file_per_table=1 -
重启MySQL服务service mysql start如果是Mariadb就是service mariadb start
-
导入备份数据mysql -u <user> -p <password> < backup.sql