Изменение innodb_flush_log_at_trx_commit в MySQL

Значение по умолчанию 1, возможные значения 0-2.

0 — Журналы записываются и сбрасываются на диск один раз в секунду. Транзакции, журналы которых не были очищены, могут быть потеряны в результате сбоя.
1 — Журналы записываются и сбрасываются на диск при каждой фиксации транзакции.
2 — Журналы записываются после каждой фиксации транзакции и сбрасываются на диск один раз в секунду. Транзакции, журналы которых не были очищены, могут быть потеряны в случае сбоя.

Например если рейд контроллер используется с аккумуляторной батареей и кэшем, то для повышения производительности записи можно указать значение 2, если без аккумуляторной батареи и есть вероятность отключения электропитания, то необходимо оставить значение 1 по умолчанию, но это все же не гарантирует от потери данных за последнюю секунду, так как например некоторые диски могут сообщить MySQL что запись данных произошла, но данные могут еще находится в кеше. При значении отличном от 1, также сбой операционной системы может повлечь за собой потерю транзакций за последнюю секунду. При значение 0 также любой сбой MySQL может стереть транзакции за последнюю секунду.

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

SHOW GLOBAL VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 1     |
+--------------------------------+-------+

Изменить значение можно без перезапуска MySQL сервера, но только для новых соединений.

SET GLOBAL innodb_flush_log_at_trx_commit=2;

Убедимся что значение изменилось выполнив новое соединение с MySQL сервером:

SHOW SESSION VARIABLES LIKE 'innodb_flush_log%';
connect
SHOW SESSION VARIABLES LIKE 'innodb_flush_log%';

Чтобы значение не сбросилось после перезапуска MySQL сервера, укажем его в конфигурационном файле:

[mysqld]
innodb_flush_log_at_trx_commit=2

Смотрите другие мои стать про MySQL

Оставьте комментарий

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