MySQL как изменить размер innodb-log-file-size

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

  1. Какой из этих файлов мой "бинарный журнал"?
  2. Какие из них мне нужно удалить?

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

2 ответа

Решение

Журнал 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 он работает так, что если размер этих файлов отличается от переменной config, MySQL автоматически выполняет новый чистый перезапуск (чтобы убедиться, что файлы не содержат изменений, которые не были сброшены), а затем InnoDB изменяет размер файлов при последнем запуске.

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

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

Согласно официальному документу, и он работает для меня для MySQL 5.7.30 Чтобы изменить количество или размер ваших файлов журнала повторного выполнения InnoDB, выполните следующие шаги:

  • Остановите сервер MySQL и убедитесь, что он завершает работу без ошибок.
  • Отредактируйте my.cnf, чтобы изменить конфигурацию файла журнала. Чтобы изменить размер файла журнала, настройте innodb_log_file_size. Чтобы увеличить количество файлов журнала, настройте innodb_log_files_in_group.
  • Снова запустите сервер MySQL.
  • Если InnoDB обнаруживает, что innodb_log_file_size отличается от размера файла журнала повторного выполнения, он записывает контрольную точку журнала, закрывает и удаляет старые файлы журнала, создает новые файлы журнала запрошенного размера и открывает новые файлы журнала.
Другие вопросы по тегам