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

步骤

  1. 对除 mysql 和 performance_schema 数据库之外的所有数据库、过程、触发器等进行 mysqldump
    mysqldump -u [username] -p[password] [database_name] > dumpfilename.sql
  2. 修改my.cnf,在mysqld段增加以下内容
    innodb_file_per_table=1
  3. 删除除上述2个数据库之外的所有数据库
    mysqladmin -u [username] -p[password] drop [database_name]
  4. 停止mysql
    mysqladmin -u [username] -p[password] shutdown
  5. 删除 ibdata1 和 ib_log 文件
    rm -rf ibdata1 ib_log*
  6. 启动mysql
    mysqld_safe &
  7. 从dump中恢复
    mysqladmin -u [username] -p[root_password] create [database_name]
    mysql -u [username] -p[root_password] [database_name] < dumpfilename.sql
posted @ 2022-05-31 15:35  bert_qin  阅读(314)  评论(0编辑  收藏  举报