mysql ibdata1只能增大不能缩小
问题
mysql ibdata1越变越大,删除数据库也不能缩小
原因
ibdata1 不能缩小是 mysql的一个特别烦人的特性。除非删除所有数据库、删除文件并重新加载转储,否则实际上无法缩小 ibdata1 文件。
方案
可以配置 mysql,以便将每个表(包括其索引)存储为单独的文件。这样 ibdata1 就不会增长得那么大。从 MySQL 的 5.6.6 版开始默认启用此功能。
要设置服务器为每个表使用单独的文件,需要在 my.cnf 中增加以下内容以启用此功能。my.conf一般位于/etc/my.conf
[mysqld]
innodb_file_per_table=1
步骤
- 对除 mysql 和 performance_schema 数据库之外的所有数据库、过程、触发器等进行 mysqldump
mysqldump -u [username] -p[password] [database_name] > dumpfilename.sql
- 修改my.cnf,在mysqld段增加以下内容
innodb_file_per_table=1
- 删除除上述2个数据库之外的所有数据库
mysqladmin -u [username] -p[password] drop [database_name]
- 停止mysql
mysqladmin -u [username] -p[password] shutdown
- 删除 ibdata1 和 ib_log 文件
rm -rf ibdata1 ib_log*
- 启动mysql
mysqld_safe &
- 从dump中恢复
mysqladmin -u [username] -p[root_password] create [database_name]
mysql -u [username] -p[root_password] [database_name] < dumpfilename.sql