В некоторых случаях можно столкнуться с большим размером файла ibdata1. В статье мы расскажем, как это исправить и предотвратить в будущем.
Сделайте полный дамп всех ваших баз данных, включая системные (такие как mysql, information_schema, performance_schema).
mysqldump –all-databases -p > mysqldump-all.sq
Остановите сервер MySQL.
service mysql stop
или
systemctl stop mysql
Найдите и отредактируйте файл конфигурации MySQL (обычно это /etc/mysql/my.cnf). Добавьте или убедитесь, что в секцию [mysqld] добавлен параметр:
[mysqld]
innodb_file_per_table=1
Удалите (или переместите в архив, на всякий случай) файл ibdata1 и все файлы логов ib_logfile* из директории данных MySQL (обычно это /var/lib/mysql/).
rm /var/lib/mysql/ibdata1
rm /var/lib/mysql/ib_logfile*
Запустите сервер MySQL.
service mysql start
или
systemctl start mysql
Загрузите данные из созданного на шаге 1 sql-дампа.
При этом, благодаря innodb_file_per_table, для каждой вашей таблицы будет создан отдельный .ibd файл в ее директории, а файл ibdata1 останется пустым или значительно уменьшится.
mysql -p < mysqldump-all.sql
После выполнения этих шагов вы увидите, что файл ibdata1 значительно уменьшился в размере или был заменен новыми файлами, созданными для таблиц.