При работе с базами данных в MySQL рано или поздно начинает полнеть файл ibdata1. Этот файл содержит в себе индексы и данные всех innodb таблиц, если не было указано в настройках иное. При работе с крупными базами рекомендуется использовать опцию innodb_file_per_table, тогда этот файл будет гораздо меньше. Но просто добавлением опции дело не исправить, необходимо переложить все таблицы имеющихся баз руками в отдельные файлы и папки.

Для этого:

  1. Делаем бэкап всех баз

    mysqldump --all-databases -p > mysqldump-all.sql
    
  2. Удаляем все базы, кроме служебных (mysql и performance_schema)

  3. Добавляем в my.cnf опцию innodb_file_per_table в секцию [mysqld]

  4. Останавливаем MySQL

  5. Удаляем файлы /var/lib/mysql/ibdata1 и /var/lib/mysql/ib_logfile*

  6. Запускаем MySQL

  7. Заливаем дамп назад, наблюдая за заполнением /var/lib/mysql отдельными папками под каждую базу

    mysql -p < mysqldump-all.sql
    

Ссылки: