# Уменьшаем размер ibdata1 в MySQL

Источник: https://blog.xsk.in/it/umen-shaem-razmer-ibdata1-v-mysql/735/
Опубликовано: 2015-01-27 · Рубрики: IT, Linux, MySQL


При работе с базами данных в 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
   ```

*Ссылки:*

- [Чистим разросшийся файл mysql ibdata1](http://bugov.net/pre/chistim-razrosshijsja-fajl-mysql-ibdata1)
- [How to shrink/purge ibdata1 file in MySQL](http://stackoverflow.com/questions/3456159/how-to-shrink-purge-ibdata1-file-in-mysql)

