У меня есть сервер (Dell PE2950) с кешем записи с автономным питанием на рейд-контроллере.
Безопасно ли для меня устанавливать innodb_flush_log_at_trx_commit = 0 на сервере mysql с файлами данных, хранящимися на томе raid0?
Был бы другой ответ, если бы объем был raid1 / 5/10?
Спасибо!
Если вы беспокоитесь о потере данных, это небезопасно. Согласно руководству, транзакция могла быть зафиксирована, но еще не записана на диск - она находится только в памяти. Это означает, что сбой mysqld, сбой операционной системы или сбой питания могут привести к потере транзакций.
В некоторых системах может быть нормально потерять транзакцию, если транзакция либо полностью потеряна, либо полностью сохраняется. В этом случае вы можете отключить эту настройку.
Важность RAID-контроллера с батарейным питанием - безопасное кэширование записи на контроллере. Если контроллер будет кэшировать записи, но потеряет питание без батареи, он потеряет данные в кэше записи. Но MySQL уже ожидал, что это будет безопасно на диске. Таким образом, батарея позволяет безопасно использовать кэширование записи в контроллере RAID. Обычно контроллер имеет настройку для автоматического отключения кеширования записи, если уровень заряда батареи слишком низкий.
Уровень RAID не имеет прямого отношения. Если данные на диске, они на диске. Если вы потеряете власть, это будет безопасно. Когда уровни RAID имеют значение, так это в случае отказа диска - это совершенно другой способ отказа. В случае RAID0 очевидно мгновенная потеря всех данных. В случае RAID5 вы можете продолжить работу с большим падением производительности. С RAID1 / 10 вы можете продолжить работу с очень небольшим падением производительности.
Но не путайте RAID с резервной копией. Для сервера базы данных существуют десятки режимов отказа, и RAID обрабатывает только один из них: отказ диска. Ваша файловая система может дать сбой, вы можете случайно удалить данные, ваши файлы данных могут сломаться из-за неясной ошибки MySQL. Итак, не забывайте хранить резервные копии важных данных, используя mysqldump
. Никогда не копируйте файлы данных, если MySQL не остановлен, так как они могут быть несовместимыми.
Для безопасности и производительности у вас должны быть innodb_flush_log_at_trx_commit = 1 и RAID 10.
Ура