Значение по умолчанию 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