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 МБ. Итак, мой вопрос
- Какой из этих файлов мой "бинарный журнал"?
- Какие из них мне нужно удалить?
заранее спасибо
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 отличается от размера файла журнала повторного выполнения, он записывает контрольную точку журнала, закрывает и удаляет старые файлы журнала, создает новые файлы журнала запрошенного размера и открывает новые файлы журнала.