Правильное изменение размера лога innodb (innodb_log_file_size)

Во время работы innodb записывает все измененные данные не сразу в файлы баз данных,а первоначально сбрасывает все в бинарный лог (опция innodb_log_file). Это позволяет повысить скорость работы,т.к. операция записи в файл таблицы более трудоемкая,чем в файл лога.  К тому же ведение лога позволяет записывать в файл таблицы последовательными кусками данных,быстрее обслуживать клиентов mysql (данные принял,записал в лог,отчитался клиенту что все ОК) При аварийном завершении сервера данный лог файл позволяет откатить поврежденные (незавершенные) транзакции. Чем больше лог файл — тем больше операций в нем хранится,и тем больше время для просмотра/анализа корректности последнего запершения работы необходимо innodb.

 

По-умолчанию бинарный лог-файл innodb имеео объем 5 Мб:

mysql -e "show variables like 'innodb_log_file_size'"
+----------------------+---------+
| Variable_name        | Value   |
+----------------------+---------+
| innodb_log_file_size | 5242880 | 
+----------------------+---------+

Для изменения его объема необходимо выполнить следующие операции (от пользователя root):

 

1. Корректно останавливаем работу mysql сервера:

# для Debian (Ubuntu)
/etc/init.d/mysql stop 
# для CentOS
/etc/init.d/mysqld stop 

2. Изменяем/добавляем параметр в конфигурационном файле ( /etc/mysql/my.cnf — Debian (Ubuntu),/etc/my.cnf — CentOS):

[mysqld]
innodb_log_file_size = 64M

3. Важно! Переименовать существующие лог-файлы. Иначе при загрузке innodb будет рапортовать,что логфайл поврежден :

mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0_old
mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1_old

4. Запустить mysql сервер.

# для Debian (Ubuntu)
/etc/init.d/mysql start 
# для CentOS
/etc/init.d/mysqld start

 

5. Проверить отсутствие ошибок в файле лога mysql демона:

# tail -n 100 /var/log/mysqld.log # для CentOS
...
130730 13:17:35  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 64 MB
InnoDB: Database physically writes the file full: wait...
130730 13:17:35  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 64 MB
InnoDB: Database physically writes the file full: wait...
130730 13:17:37 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!

Как видно по логу,innodb создал новые бинарные логи ib_logfile0 и ib_logfile1 нового объема.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *