Сбой в ZFS поломал MySQL
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- ефрейтор
- Сообщения: 63
- Зарегистрирован: 2012-03-23 11:50:37
Сбой в ZFS поломал MySQL
Расскажу о своем недавнем сбое. Может будут версии, что можно было сделать по другому.
На сервере аппаратный raid10 (raid контроллер с кешем, но без батарейки), один пул zfs на весь диск, загрузочный, FreeBSD 8.2
После жесткого выключения питания не стартовал mysql, писал об ошибках чтения логов innodb (ib_logfileX). zpool status pool -v показал что есть ошибки в нескольких файлах баз (в которые шла запись на момент сбоя), в том числе в логах innodb.
Эти битые файлы до конца не читались и не переносились, их можно было только удалить. Способов "лечения" в инете я не нашел, scrub не помог. Пришлось удалить все битые файлы. После этого ошибок в zfs не стало (после scrub). mysql запустился, писал об ошибках в лог-файлах innodb, пытался что-то с этим сделать и перезапускался с сигналом 6 сначала раз в 10 минут, через несколько часов - почти каждую секунду. Тесть памяти сделали: все нормально.
После удаления ibdata1 mysql перезапускаться перестал, но "потерял" все innodb таблицы.
В итоге пришлось удалить все innodb файлы и перезалить их из бекапа. Опыта вытаскивания данных из innodb с помощью утилит percona пока нет и на момент сбоя изучать не было времени.
Судя по этому документу http://hub.opensolaris.org/bin/view/Com ... #whynofsck сбои в zfs возможны и избежать этого можно только используя резервирование силами zfs. Т.е. в моем случае в zfs было только одно устройство, а если бы было сделано подобие raid10 силами zfs, то скорее всего файлы не поломались бы.
Вот думаю, поможет ли мне отключение кеша на контроллере для уменьшения вероятности подобных проблем в будущем?
На сервере аппаратный raid10 (raid контроллер с кешем, но без батарейки), один пул zfs на весь диск, загрузочный, FreeBSD 8.2
После жесткого выключения питания не стартовал mysql, писал об ошибках чтения логов innodb (ib_logfileX). zpool status pool -v показал что есть ошибки в нескольких файлах баз (в которые шла запись на момент сбоя), в том числе в логах innodb.
Эти битые файлы до конца не читались и не переносились, их можно было только удалить. Способов "лечения" в инете я не нашел, scrub не помог. Пришлось удалить все битые файлы. После этого ошибок в zfs не стало (после scrub). mysql запустился, писал об ошибках в лог-файлах innodb, пытался что-то с этим сделать и перезапускался с сигналом 6 сначала раз в 10 минут, через несколько часов - почти каждую секунду. Тесть памяти сделали: все нормально.
После удаления ibdata1 mysql перезапускаться перестал, но "потерял" все innodb таблицы.
В итоге пришлось удалить все innodb файлы и перезалить их из бекапа. Опыта вытаскивания данных из innodb с помощью утилит percona пока нет и на момент сбоя изучать не было времени.
Судя по этому документу http://hub.opensolaris.org/bin/view/Com ... #whynofsck сбои в zfs возможны и избежать этого можно только используя резервирование силами zfs. Т.е. в моем случае в zfs было только одно устройство, а если бы было сделано подобие raid10 силами zfs, то скорее всего файлы не поломались бы.
Вот думаю, поможет ли мне отключение кеша на контроллере для уменьшения вероятности подобных проблем в будущем?
Последний раз редактировалось f_andrey 2012-11-27 11:29:16, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- мл. сержант
- Сообщения: 131
- Зарегистрирован: 2010-08-06 6:52:24
- Откуда: замкадыш
Re: Сбой в ZFS поломал MySQL
это ж не сбой в zfs)
-
- ефрейтор
- Сообщения: 63
- Зарегистрирован: 2012-03-23 11:50:37
Re: Сбой в ZFS поломал MySQL
В смысле? А в чем еще?
Как лечить mysql в подобных случаях это другой вопрос. Но то, что можно просто потерять файлы в zfs для меня новость.
Как лечить mysql в подобных случаях это другой вопрос. Но то, что можно просто потерять файлы в zfs для меня новость.
- Neus
- капитан
- Сообщения: 1961
- Зарегистрирован: 2008-09-08 21:59:56
Re: Сбой в ZFS поломал MySQL
при отсутствии батарейки в контроллере, write-back кэш включать нельзя! правильные контроллеры его и не дадут включитьViolator писал(а): На сервере аппаратный raid10 (raid контроллер с кешем, но без батарейки), один пул zfs на весь диск, загрузочный, FreeBSD 8.2
...
Вот думаю, поможет ли мне отключение кеша на контроллере для уменьшения вероятности подобных проблем в будущем?

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

-
- ефрейтор
- Сообщения: 63
- Зарегистрирован: 2012-03-23 11:50:37
Re: Сбой в ZFS поломал MySQL
Сервер у немцев. Что то я уже засомневался насчет кеша в контроллере. Без ковыряний в биосе через KVM это можно узнать?
Код: Выделить всё
# mfiutil show adapter
mfi0 Adapter:
Product Name: LSI MegaRAID SAS 9260-4i
Serial Number: SV13908650
Firmware: 12.13.0-0104
RAID Levels: JBOD, RAID0, RAID1, RAID5, RAID6, RAID10, RAID50
Battery Backup: not present
NVRAM: 32K
Onboard Memory: 512M
Minimum Stripe: 8K
Maximum Stripe: 1M
- Neus
- капитан
- Сообщения: 1961
- Зарегистрирован: 2008-09-08 21:59:56
Re: Сбой в ZFS поломал MySQL
в этих контроллерах кэш настраивается не в свойствах адаптера, а в свойствах тома, там гляди
-
- ефрейтор
- Сообщения: 63
- Зарегистрирован: 2012-03-23 11:50:37
Re: Сбой в ZFS поломал MySQL
Код: Выделить всё
# mfiutil cache mfid0
mfi0 volume mfid0 cache settings:
I/O caching: writes and reads
write caching: write-back
read ahead: adaptive
drive write cache: default
И все таки мог я как нибудь спасти базу в данной ситуации?
- Neus
- капитан
- Сообщения: 1961
- Зарегистрирован: 2008-09-08 21:59:56
Re: Сбой в ZFS поломал MySQL
я вот прежде чем поставить сервант в продакшен провел ряд экспериментов:Violator писал(а): И все таки мог я как нибудь спасти базу в данной ситуации?
субд -- firebird (у него есть параметр БД -- forcewrite, когда он включен субд вызывает sync после каждого commit)
контроллер -- LSI 256мб кэш, том raid 10, без батареи
ФС -- XFS
провел 4 теста -- (кэш=on|off, forcewrite=on|off)
чо натестил отключением питания:
кэш=on, fw=off -- это полный писец
кэш=off, fw=on -- самый не убиваемый вариант

кэш=on, fw=on -- тут зависит от реализации драйвера, есть мнение что некоторые дрова игнорируют команду записи кэша от ОС

кэш=off, fw=off -- тут писец зависит от того, как часто драйвер ФС сбрасывает свой кэш на диск
итог таков -- поставил таки батарею и остановился на варианте (on,on), т.к. в firebird отключать fw для баз OLTP очень не рекомендуют...
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Сбой в ZFS поломал MySQL
Для защиты можно использовать zfs снапшоты, например, раз в 10 минут.Они могут помочь (правда смотря какой сбой)Violator писал(а): Судя по этому документу http://hub.opensolaris.org/bin/view/Com ... #whynofsck сбои в zfs возможны и избежать этого можно только используя резервирование силами zfs.