Как изменить innodb_log_file_size?

Aug 4, 2016 15:08 · 186 words · 1 minute read mysql innodb

Если остановить MySQL-сервер, изменить значение параметра innodb_log_file_size в конфигурациионном файле /etc/mysql/my.cnf и запустить сервер, то увидим ошибку InnoDB: Error: log file ./ib_logfile0 is of different size. Давайте разберемся!

Движок InnoDB для повышения скорости работы системы сначала пишет изменения в бинарный лог innodb_log_file. При значительном количестве данных размер этого файла тоже следует увеличить (по умолчанию используется значение 5 МБ).

Просмотреть текущее значение параметра innodb_log_file_size можно таким запросом:

show variables like 'innodb_log_file_size';

Пример результата:

+----------------------+---------+
| Variable_name        | Value   |
+----------------------+---------+
| innodb_log_file_size | 5242880 |
+----------------------+---------+
1 row in set (0.00 sec)

Для того, чтобы увеличить размер бинарного лога, останавливаем MySQL-сервер:

/etc/init.d/mysql stop

Далее в конфигурационном файле /etc/mysql/my.cnf находим и изменяем значение параметра innodb_log_file_size:

...
innodb_log_file_size = 64M
...

Далее переименуем (или переместим из рабочей директории в другой каталог) существующие лог-файлы:

mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak
mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bak

После всех проделанных действий нужно запустить MySQL-сервер и увидеть в логах следующие сообщения:

...
InnoDB: Log file ./ib_logfile0 did not exist: new to be created
...
InnoDB: Log file ./ib_logfile1 did not exist: new to be created
...

Если все прошло гладко, старые бинарные логи можно удалить:

rm -rf /var/lib/mysql/ib_logfile*.bak
tweet Share