在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
网友评论