LINUX.ORG.RU
ФорумTalks

Бугурт по поводу MySQL InnoDB

 , ,


0

1

Периодически обращаются клиенты с просьбой восстановить базу данных.

Причины прозаичны: у кого резко кончилось место на диске, кто случайно обновился, кто по незнанию скопировал базы не дампом, а файлами, но итог один.

И вот терзает меня множество вопросов.

Ну какого ж хера ваше сраное innodb_file_per_table все равно требует наличия ibdata1 ?

Почему нельзя просто восстановить базы данных и таблицы, если FRM и IBD файлы уже есть ?

Какого черта не вывести в лог просто человеко-понятное объяснение, что нужно сделать ? Ну вот есть у меня в логе запись: InnoDB: Error: checksum mismatch in data file ./ibdata1. Че мне с этим делать ? Редактировать ? Файл удалить ? Забыть ? Забить ?

Или вот. InnoDB: Could not open or create data files. Что за data files ? Почему ? Это права на запись ? Место на диске ? Внутренние настройки ?

Нахера ГАСИТЬ ВЕСЬ СЕРВЕР БД, если какая-то одна-две транзакции не могут быть восстановлены ?

Почему этот гребанный innodb_force_recovery нихрена не рекаверит, а просто срет в лог ненужной инфой, что он не может восстановить?!

InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 5.
InnoDB: You may have to recover from a backup.
190920 14:41:18  InnoDB: Page dump in ascii and hex (16384 bytes):
 len 16384; hex 3ef6f18a000000050000000000000000000000517ff9e3dd00070000000000000000000000000000000144f7e300000000000000000200f20000000000000006000000000000002d000000000000002e000000000000002f0000000000000030000000000000003100000000000000320000000000000033000000000000003400000000000000350000000000000036000000000000003700000000000000380000000000000039000000000000003a000000000000003b000000000000003c000000000000003d000000000000003e000000000000003f00000000000000c000000000000000c100000000000000c200000000000000c300000000000000c400000000000000c500000000000000c600000000000000c700000000000000c800000000000000c900000000000000ca00000000000000cb00000000000000cc00000000000000cd00000000000000ce00000000000000cf00000000000000d000000000000000d100000000000000d200000000000000d300000000000000d400000000000000d500000000000000d600000000000000d700000000000000d800000000000000d900000000000000da00000000000000db00000000000000dc00000000000000dd00000000000000de00000000000000df00000000000000e000000000000000e100000000000000e200000000000000e300000000000000e400000000000000e500000000000000e600000000000000e700000000000000e800000000000000e900000000000000ea00000000000000eb00000000000000ec00000000000000ed00000000000000ee00000000000000ef00000000000000f000000000000000f100000000000000f200000000000000f400000000000000f500000000000000f600000000000000f700000000000000f800000000000000f900000000000000fa00000000000000fb00000000000000fc00000000000000fd00000000000000fe00000000000000ff0000000000000100000000000000010100000000000001020000000000000103000000000000010400000000000001050000000000000106000000000000010700000000000001080000000000000109000000000000010a000000000000010b000000000000010c000000000000010d000000000000010e000000000000010f0000000000000110000000000000011100000000000001120000000000000113000000000000011400000000000001150000000000000116000000000000011700000000000001180000000000000119000000000000011a000000000000011b000000000000011c000000000000011d000000000000011e000000000000011f0000000000000120000000000000012100000000000001220000000000000123000000000000012400000000000001250000000000000126000000000000012700000000000001280000000000000129000000000000012a000000000000012b000000000000012cff000a3ac72b5d9505b823ef6f18a7ff9e3dd; asc >                  Q                      D                            -       .       /       0       1       2       3       4       5       6       7       8       9       :       ;       <       =       >       ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       !       "       #       $       %       &       "       (       )       *       +       ,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _   @       _   @    jPs                                                                                                                                                     r  P[ >       ;
InnoDB: End of page dump
190920 14:41:18  InnoDB: Page checksum 3020044449, prior-to-4.0.14-form checksum 4243072082
InnoDB: stored checksum 1056371082, prior-to-4.0.14-form stored checksum 1056371082
InnoDB: Page lsn 81 2147083229, low 4 bytes of lsn at page end 2147083229
InnoDB: Page number (if stored to page already) 5,
InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0
InnoDB: Page may be a transaction system page
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 5.
InnoDB: You may have to recover from a backup.
InnoDB: It is also possible that your operating
InnoDB: system has corrupted its own file cache
InnoDB: and rebooting your computer removes the
InnoDB: error.
InnoDB: If the corrupt page is an index page
InnoDB: you can also try to fix the corruption
InnoDB: by dumping, dropping, and reimporting
InnoDB: the corrupt table. You can use CHECK
InnoDB: TABLE to scan your table for corruption.
InnoDB: See also http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
190920 14:41:18 InnoDB: highest supported file format is Barracuda.
InnoDB: No valid checkpoint found.
InnoDB: If you are attempting downgrade from MySQL 5.7.9 or later,
InnoDB: please refer to http://dev.mysql.com/doc/refman/5.5/en/upgrading-downgrading.html
InnoDB: If this error appears when you are creating an InnoDB database,
InnoDB: the problem may be that during an earlier attempt you managed
InnoDB: to create the InnoDB data files, but log file creation failed.
InnoDB: If that is the case, please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/error-creating-innodb.html
190920 14:41:18 [ERROR] Plugin 'InnoDB' init function returned error.
190920 14:41:18 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

InnoDB: You may have to recover from a backup - это шо, такой тонкий стеб от оракла или кто там заведует этой дрянью ? Я сам знаю что можно рекаверить из бэкапа! Но мне надо стартонуть mysql-сервер так, чтобы он не говорил «Error : Unknown storage engine 'InnoDB'»

На кой черт вообще говорить что InnoDB «обеспечивает надежное хранение данных», если после КРАША этого говна, не то что данных нет, но и сам сервер хрен стартонешь?!

</bugurt mode>

Эт не просьба помочь, эт просто вопрос - ДОКОЛЕ :))

<troll mode>Дык, пользуйтесь MSSQL</troll mode>

эт просто вопрос - ДОКОЛЕ :))

Ну а если серьезно - то до тех пор, пока этой поделкой пользуются. MySQL давно уже скатился, рекомендуйте вашим клиентам искать альтернативу.

DawnCaster ★★ ()
Последнее исправление: DawnCaster (всего исправлений: 1)
Ответ на: комментарий от DawnCaster

Тролл моде был бы актуален, если бы не первая строчка моего бугурта. Мопед не мой, короче.

Свои мопеды я делаю на самописной БД в файлах.

На последней работе кстати клиенты (мы были аутсорсерами) юзали MSSQL и проблем с ним не возникало на удивление никогда.

Как собственно и с MyISAM. Скрашился ? Да и черт с ним, сервак перезапустил и все работает дальше.

Та вот пробовали на MariaDB. Но видимо те же яйца ...

windows10 ★★★ ()
Последнее исправление: windows10 (всего исправлений: 1)
Ответ на: комментарий от windows10

MSSQL и проблем с ним не возникало на удивление никогда.

Муха-ха-ха-ха. С ним такие иногда проблемы, что мама не горюй. Но другого плана.

Доколе

Это не проблема базы данных - базы данных проектируются, чтоб быстро доставать данные и всё. Это проблема, мониторов, рейдов, упсов, бекапов и инструкций уборщицам. Та же постгря тоже не гарантирует восстановление, если «чего-то такое случилось».

vtVitus ★★★★★ ()
Последнее исправление: vtVitus (всего исправлений: 2)
Ответ на: комментарий от windows10

Вообще, проблемы бывают с любыми БД (кстати, с MSSQL у меня тоже их было меньше всего), нужно просто организовывать системы таким образом что-бы в них были бекапы.

DawnCaster ★★ ()

Почему этот гребанный innodb_force_recovery нихрена не рекаверит

У innodb_force_recovery есть 5 разных режимов.

Darth_Revan ★★★★★ ()

тут проблема не в mysql а в админах. 1) если ты берешься восстанавливать innodb, значит тебе нужно понимать как это делается 2) если у кого-то есть бд, но нет бэкапа бд — это глупый клиент. у нормальных людей вообще нужные вещи в клайстере 3) говорить «не большое дело, если одна или две транзакции не могут быть восстановленны» могут только люди, которые вообще не понимают что такое база данных. 3) закончилось место на сервере баз данных?? да тут вообще без комментариев.

На кой черт вообще говорить что InnoDB «обеспечивает надежное хранение данных», если после КРАША этого говна, не то что данных нет, но и сам сервер хрен стартонешь?!

mysql обеспечивает надежное хранение данных, когда люди делают что они знают. Тут проблема в голове админов, а не в mysql.

mysql один из немногих представителей говносорса, который просто работает.

mrdeath ★★★★★ ()
Ответ на: комментарий от mrdeath

Интернет ПЕСТРИТ этими жалобами и слезами.

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

Если внезапно вырубается комп - мы сильно знаем что там потом говорит fsck ? Я например последний раз такое видел лет пять назад когда держал Убунту на флешке на ext2, и все шо оно меня спросило - y\n. Вот так должно идти восстановление. И это целая ФС, а не прикладной софт.

Ладно критический сбой, удаленные данные... Но ты разве сам считаешь нормальным не уметь восстанавливаться, если ТВОИ ЖЕ СОБСТВЕННЫЕ ФАЙЛЫ были скопированы один в один, просто на лету ?

windows10 ★★★ ()
Последнее исправление: windows10 (всего исправлений: 1)
Ответ на: комментарий от windows10

Но ты разве сам считаешь нормальным не уметь восстанавливаться, если ТВОИ ЖЕ СОБСТВЕННЫЕ ФАЙЛЫ были скопированы один в один, просто на лету ?

Ну если ты вкуришь как работает innodb, этот вопрос отпадет сам собой.

Интернет ПЕСТРИТ этими жалобами и слезами.

Пара сотен (ну пусть тысяч) против миллионов инсталляций, которые просто работают годами.

leave ★★★★★ ()
Ответ на: комментарий от windows10

Но ты разве сам считаешь нормальным не уметь восстанавливаться, если ТВОИ ЖЕ СОБСТВЕННЫЕ ФАЙЛЫ были скопированы один в один, просто на лету ?

В смысле, прямо во время работы СУБД? Это ни с какими современными СУБД не работает и работать не будет. И относится это не только к базам данных, с образами ФС всё абсолютно так же.

Deleted ()
Ответ на: комментарий от windows10

Свои мопеды я делаю на самописной БД в файлах.

Жжошь!

Deleted ()
Ответ на: комментарий от windows10

Я серьезно вообще-то. Как ты себе представляешь копирование на лету бинарного файла, которые в момент копирования пишется-читается?

leave ★★★★★ ()
Ответ на: комментарий от windows10

Но ты разве сам считаешь нормальным не уметь восстанавливаться, если ТВОИ ЖЕ СОБСТВЕННЫЕ ФАЙЛЫ были скопированы один в один, просто на лету ?

хахаха. Где-то больше 10ти лет назад достался мне сервер с ibm db2. В то время я думал примерно также. Это новое знание, что не стоит копировать файлы базы данных, стоило университету 3х месяцев забивания в ручную новой базы. :)

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

Люди делятся на две категории: те кто делают бэкапы и тех кто их еще не делает :)

mrdeath ★★★★★ ()

Меня терзает один вопрос. Почему люди упорно ставят пробелы между предложениями и знаками вопроса, но не ставят в совершенно аналогичных ситуациях, когда в конце точка или знак вопроса и/или восклицательным? Это как вообще объясняется в голове пишущего?

Deleted ()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от leave

Я серьезно вообще-то. Как ты себе представляешь копирование на лету бинарного файла, которые в момент копирования пишется-читается?

ФС же как-то позволяет копировать файл, который пишется.

Да, он может быть записан не полностью, инфа будет не актуальна, но ФС при этом не ляжет.

На живой системе:

mkdir /test

cp -rpv / test/

chroot /test

Ты получишь второй образ РАБОЧЕЙ СИСТЕМЫ. Возможно там потеряются какие-то логи. Но система будет рабочей, и ты сможешь ее запустить на другом компьютере без сбоев. Сам только что проверил на Манжаре.

windows10 ★★★ ()
Ответ на: комментарий от no-such-file

Тонкая душевная организация - это куча многоточий, не путай!

Deleted ()
Ответ на: комментарий от windows10

Ты получишь второй образ РАБОЧЕЙ СИСТЕМЫ. Возможно там потеряются какие-то логи. Но система будет рабочей, и ты сможешь ее запустить на другом компьютере без сбоев. Сам только что проверил на Манжаре.

Попробуй копировать в момент обновления 100500 пакетов, а не в простое, ага. Или в момент начала генерации initramfs, когда у него нулевой размер. Есть такое понятие - «консистентность данных». Судя по «Как собственно и с MyISAM. Скрашился ? Да и черт с ним, сервак перезапустил и все работает дальше» данные у тебя вообще неважные и/или опыта в факапах совсем мало. Ну и теории не хватает.

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от windows10

На живой системе

Твой пример неверный. Верный будет такой dd if=/dev/sda of=/dev/sdb. Т.е. копирование ФС средствами «снаружи» ФС. Аналогом для БД копирования как cp -rpv (т.е. изнутри системы) будет копирование через дамп, или реплику.

no-such-file ★★★★★ ()
Ответ на: комментарий от windows10

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

crypt ★★★★★ ()
Ответ на: комментарий от windows10

Но ты разве сам считаешь нормальным не уметь восстанавливаться, если ТВОИ ЖЕ СОБСТВЕННЫЕ ФАЙЛЫ были скопированы один в один, просто на лету ?

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

crypt ★★★★★ ()
Ответ на: комментарий от crypt

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

Пример честно говоря непонятный и не нужный. Я уже привел пример с ФС. Если есть какой-либо файл с каким-либо содержимым, и мы его копируем в тот момент когда в нем что-либо изменяется - то на выхлопе мы получим в зависимости от ФС либо старый файл до начала записи, либо половину файла с новыми данными а половину со старыми данными. Да мы получим ЧТО УГОДНО кроме битого файла, и битой ФС.

windows10 ★★★ ()
Ответ на: комментарий от windows10

Пример честно говоря непонятный

ок. объясняю. есть такое понятие «атомарность операции», оно определяется применительно к. к ФС оно применяется относительно операций с файлами, но ДБ - это не файлы и атомарность определяется иным образом. выдерни жесткий диск в момент копирования своего файла и ты нарушишь условия атомарности применительно к данной ситуации. так стало яснее?

crypt ★★★★★ ()
Ответ на: комментарий от windows10

Пример честно говоря непонятный и не нужный.

и стрижку нужно делать за один подход.

crypt ★★★★★ ()
Ответ на: комментарий от windows10

как по-простому объяснить? ну вот представь, что ты свой windows 10 обновляешь и где-то в середине этого процесса ты сделал бекап. будет он рабочий? файлы вроде бы все целые, ФС целая, а система почему-то отказывается грузиться.

crypt ★★★★★ ()
Ответ на: комментарий от crypt

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

Практически любая система (будь то ФС, ОС, или что-то другое) - всегда старается сернуть более менее человеко-читаемой записью в лог, где и что прошло не так. Даже в твоем примере, Винда либо откатит изменения назад, либо укажет в каком файле возникла неполадка, если не сможет исправить это.

С MySQL у меня периодически бывают конфликты (ну, не у меня, а у клиентов), и почти всегда я вижу в логах ну реально какую-то дичь.

Вот вчера был лол при обновлении с 5.5 на 5.7. Не стартует. Почему? Да потому что у одной версии один дефолтный размер файлов логов, а у другой версии другой размер, а это ой как важно и ой как критично, если фактический размер будет иной нежели декларируемый. Указал в my.cnf явно - сработало. Вернул взад и удалил старые файлы логов - сработало. Вопрос - ну вот НАУЙ просто не пересоздать эти файлы заново, раз их так легко можно удалить вручную ? НАУЙ не стартовать аж целый сервер из-за такой мелочи ?

windows10 ★★★ ()
Ответ на: комментарий от windows10

ну это связано чисто с его историей создания. они хотел охватить необъятное еще в те времена, когда innodb и myisam были одновременно в ходу. в итоге у них накопилось много легаси и слоев изоляции движка хранение от движка запросов, скажем. мануал на все случаи жизни распух так, что стал в два-три раза больше постгресовского при сопоставимых возможностях. я как-то потыкал-почитал одно-другое и выбрал постгресс. это сэкономило силы. поэтому, если работаешь с mysql/percona, то приходится просто знать (изучать методом проб) все места, где грабли лежат.

crypt ★★★★★ ()
Ответ на: комментарий от windows10

Почему?

вот поэтому и появилась профессия DBA. специалист по граблям. но для меня лично и работа с windows выглядит точно также, если не хуже.

crypt ★★★★★ ()
Ответ на: комментарий от windows10

Да потому что у одной версии один дефолтный размер файлов логов, а у другой версии другой размер

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

crypt ★★★★★ ()
Ответ на: комментарий от crypt

Знаешь. Вот стоит кому-нибудь написать всего одну маленькую программку - прозрачный транслятор mysql в postgres - и мускуль сам собой помрет.

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

windows10 ★★★ ()
Ответ на: комментарий от crypt

:) ага. а проектировщики постгрии напроектировали клайстер на триггерах на костылях и подпорках. самая лучшая в мире архитектура :-D B sql который нигде как в постгри не работает.

mrdeath ★★★★★ ()
Ответ на: комментарий от windows10

так есть же всякое давно уже. я сам тестировал pgloader, мои базы норм конвертируются.

swelf ()
Ответ на: комментарий от crypt

история вообще пофиг. А вот отсутствие master-master клайстеризации в 21м веке оставляет данную бд только как поделку для хакеров без какого либо намека на продакшин. отличная бд в комплект к руби. :)

mrdeath ★★★★★ ()
Ответ на: комментарий от mrdeath

клайстеризации

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

crypt ★★★★★ ()
Последнее исправление: crypt (всего исправлений: 2)
Ответ на: комментарий от crypt

какая производительность, когда нет никакой реалтаймовой резервации данных. :) Люди, запомните, когда пишите что-то высокопроизводительное — обязательно берите постгри и руби! Вам crypt сказал, и даже банлистом аргументировал.

mrdeath ★★★★★ ()
Ответ на: комментарий от mrdeath

не, я аргументирую тем, что ты не умен (это одна из причин игнора. жаль время.). почему для тебя мм-репликация является единственным способом сохранения данных, я не знаю и знать даже уже не хочу.

p.s.

посмотри там в интернете, что значит «резервация».

crypt ★★★★★ ()
Последнее исправление: crypt (всего исправлений: 1)

Ну какого ж хера ваше сраное innodb_file_per_table все равно требует наличия ibdata1 ?

Why is the ibdata1 file continuously growing?

the shared tablespace is still used to store other InnoDB’s internal data:

  • data dictionary aka metadata of InnoDB tables
  • change buffer
  • doublewrite buffer
  • undo logs
Darth_Revan ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.