MySQL, как изменить размер файла innodb-log-file

В соответствии с документацией mysql (Docs), чтобы изменить размер файла innodb-log-file на шаге 4, мне нужно удалить двоичные журналы. У меня есть некоторые проблемы и вопросы по этому поводу. Мое текущее значение для файла innodb-log-file составляет 5 МБ. Поэтому я бы предположил, что мои двоичные файлы журнала составляют 5 МБ каждый (макс.). Когда я смотрю на каталог bin-log, у меня есть куча имен файлов, таких как "mysql-bin.000001", "mysql-bin.000002" и т.д. Я считаю, что это двоичные файлы журналов, но все они довольно бит больше 5 МБ. Есть 2 файла (ib_logfile0, ib_logfile1), которые составляют 5 МБ. Поэтому мой вопрос:

  • Какой из этих файлов является моим "двоичным журналом"?
  • Какие из них мне нужно удалить?

Заранее спасибо

Ответ 1

Журнал InnoDB находится в ib_logfile0 и ib_logfile1. Это файлы размером innodb_log_file_size.

Чтобы изменить размер журналов InnoDB, сначала нужно отключить mysqld чисто. Это позволит убедиться, что все изменения в журнале уже были сброшены в ваши табличные пространства. Чистое выключение важно, потому что если вы не сделаете этого шага, у вас будет высокая вероятность потери данных.

После того, как вы окончательно отключили mysqld, ib_logfiles являются излишними. Вы должны rm их изменить свой размер.

При перезапуске mysqld InnoDB отмечает, что файлы отсутствуют, и создает новый файл нового размера в соответствии с переменной innodb_log_file_size в файле my.cnf. Поэтому убедитесь, что вы отредактируете этот файл перед перезагрузкой, иначе он просто создаст новые файлы размером 5 МБ.

MySQL 5.6 делает этот процесс немного проще. Вам не нужно rm файлы журнала, но вам нужно перезапустить mysqld, чтобы сделать новый размер файла журнала вступающим в силу. Способ, которым он работает в 5.6, состоит в том, что если размер этих файлов отличается от переменной конфигурации, MySQL автоматически выполняет другой чистый перезапуск (чтобы убедиться, что файлы не содержат каких-либо изменений, которые не развязаны), а затем InnoDB изменяет размер файлов при окончательном запуске.

Другие файлы (mysql-bin.000001 и т.д.) являются двоичными журналами. Они могут вырасти до max_binlog_size (по умолчанию это 1 ГБ), но двоичные журналы различаются по размеру, потому что новые журналы создаются всякий раз, когда вы перезапускаете mysqld или выполняете FLUSH LOGS. Во всяком случае, они не имеют ничего общего с журналами InnoDB.

PS: Вам может понравиться эта статья: Как рассчитать хороший размер файла журнала InnoDB.