Назад | Перейти на главную страницу

Гарантия свойств ACID для баз данных InnoDB

Какие шаги нужно предпринять, чтобы убедиться, что сервер InnoDB, настроенный по умолчанию, действительно совместим с ACID? В Страница конфигурации InnoDB упоминает, что само оборудование должно быть настроено для соблюдения fsync вызовы, т.е. отключите любые кеши обратной записи.

Эта страница упоминает некоторые другие проблемы, но может объединять двоичный журнал и журнал InnoDB и может быть немного устаревшим в отношении настроек по умолчанию для MySQL 5.x.

После прочтения страница документа двоичного журнала может показаться, что параметр «sync_binlog = 1» не требуется для свойств ACID в целом, только для свойств ACID в отношении восстановления и репликации на определенный момент времени.

Итак, достаточно ли отключения дискового кэширования с обратной записью или есть другие параметры, которые необходимо изменить?

Вы задаете трудный вопрос. Вот настройки в MySQL:

  • sync-frm
  • sync-binlog
  • innodb-flush-log-at-trx-commit = 1 (по умолчанию)
  • innodb_support_xa = 1 (по умолчанию)
  • innodb_doublewrite = 1 (по умолчанию)
  • sync-relay-log = 1 (если ведомый)
  • rpl_transaction_enabled = 1 (если раб - только в 5.5 / Percona Server)

И из ОС / файловой системы / и т. Д .:

  • Отключите все кэши без батарейного питания на дисках или контроллерах рейда.
  • Убедитесь, что ОС не находится в режиме ноутбука и т. Д.

Отключение обратной записи не обязательно приведет к поломке ACID. Этого не произойдет, если на вашем RAID-контроллере есть кэш записи с резервным питанием от батареи, и за это можно получить огромное увеличение емкости записи. Однако следует остерегаться того, что некоторые жесткие диски и твердотельные накопители (например, Intel X-25) имеют свои собственные кеши обратной записи, которые НЕ имеют батарейного питания, даже если ваш RAID-контроллер есть, и они определенно нуждаются в отключении. Установка O_DIRECT также убережет вашу операционную систему и файловую систему от препятствий и позволит RAID-контроллеру выполнять свою работу более эффективно.

Обычно я использую эти настройки для разумной надежности:

innodb_flush_method=O_DIRECT
innodb_support_xa = 1
innodb-flush-log-at-trx-commit  = 2