Безопасно ли устанавливать innodb_flush_log_at_trx_commit=0?

Безопасно ли устанавливать innodb_flush_log_at_trx_commit=0?

У меня есть сервер (Dell PE2950) с кэшем записи с резервным питанием от батареи на RAID-контроллере.

Безопасно ли устанавливать innodb_flush_log_at_trx_commit=0 на сервере MySQL с файлами данных, хранящимися на томе raid0?

Будет ли другой ответ, если бы объем был raid1/5/10?

Спасибо!

решение1

Если вы беспокоитесь о потере данных, это небезопасно. Согласно руководству, транзакция могла быть зафиксирована, но еще не записана на диск, оставаясь только в памяти. Это означает, что сбой mysqld или операционной системы или сбой питания может привести к потере транзакций.

В некоторых системах может быть нормально терять транзакции, пока транзакция либо полностью потеряна, либо полностью сохранена. В этом случае вы можете отключить эту настройку.

Актуальность RAID-контроллера с батарейным питанием заключается в безопасном кэшировании записи на контроллере. Если бы контроллер кэшировал записи, но потерял питание, без батареи он бы потерял данные в кэше записи. Но MySQL уже ожидал бы, что они будут безопасно на диске. Таким образом, батарея позволяет безопасно использовать кэширование записи в RAID-контроллере. Обычно контроллер имеет настройку для автоматического отключения кэширования записи, если уровень заряда батареи слишком низкий.

Уровень RAID не имеет прямого отношения. Если данные находятся на диске, они находятся на диске. Если вы отключите питание, они будут в безопасности. Уровни RAID имеют значение, если диск выходит из строя — это совершенно другой режим отказа. В случае RAID0, очевидно, происходит мгновенная потеря всех данных. В случае RAID5 вы можете продолжать с большим падением производительности. С RAID1/10 вы можете продолжать с очень небольшим падением производительности.

Но не путайте RAID с резервным копированием. Существуют десятки режимов отказа сервера базы данных, и RAID обрабатывает только один из них: отказ диска. Ваша файловая система может выйти из строя, вы можете случайно удалить данные, ваши файлы данных могут быть повреждены из-за неизвестной ошибки MySQL. Поэтому не забывайте сохранять резервные копии важных данных с помощью mysqldump. Никогда не копируйте файлы данных, если MySQL не остановлен, так как они могут быть несогласованными.

решение2

Для безопасности и производительности вам следует иметь innodb_flush_log_at_trx_commit=1 и RAID 10.

Ваше здоровье

Связанный контент