Программы
Чистим разросшийся файл MySql / MariaDB ibdata1

Чистим разросшийся файл MySql / MariaDB ibdata1

В MySQL / MariaDB есть замечательный файл для хранения таблиц – ibdata1. Иногда он становится слишком большим – приходит время "прибраться"

В MySQL есть такой замечательный файл — ibdata1. Замечателен о не только тем, что растёт как дурак, но и тем, что хранит кучу данных сервера.

Начнём с того, что просто удалить его можно, но это приведёт к уничтожению данных таблиц. ibdata1 хранит данные таблиц (кроме схем — они хранятся в других файлах), индексы и прочую информацию. Альтернатива хранению в одном файле — хранить для каждой таблицы эту информацию в отдельном файле. Собственно это я и предлагаю сделать.

  • mysqldump --all-databases > alldb.sql используем, чтобы выгрузить все данные сервера
  • Удаляем все базы кроме служебных mysql.
  • Останавливаем mysql.
  • Добавим в my.cnf (во многих дистрибутивах этот файл лежит в /etc/mysql) в секцию
    [mysqld]

    строчку

    innodb_file_per_table
  • Удаляем /var/lib/mysql/ibdata1 и /var/lib/mysql/ib_logfile* файлы.
  • Поднимаем сервер mysql
  • Заливаем дамп в базу cat alldb.sql | mysql -uroot -p
Изображение Шпаргалка по командам Linux, FreeBSD и MacOS