MySQL: Восстановление базы данных InnoDB из файлов .ibd


Дважды с проектом Hattrick Portal попадал в ситуацию «потери» файлов собственной базы MySQL (mysql) — СУБД переставало работать и рапортовало о том, что в первом случае таблицы innodb_index_stats, innodb_table_stats, slave_master_info потеряны, а во втором, что таблицы servers и plugin. Объединяет эти два случая одно — эти таблицы на движке InnoDB. Если раньше все таблицы системной БД mysql были на движке MyISAM, то постепенно MySQL переводит все в InnoDB. С чем связаны были проблемы выяснить не удалось, но нужно было срочно восстанавливать работу СУБД. Быстрое гугление показало один простой вариант — прибиваем все файлы данных, запускаем СУБД с пустыми каталогами данных (она создает их по умолчанию), затем восстанавливаем всё из бэкапа. Но восстановить из бэкапа 10 Гб данных — это долгий процесс. И причем ещё — нужные данные-то у меня все на месте и не пострадали!

Продолжить чтение «MySQL: Восстановление базы данных InnoDB из файлов .ibd»

MySQL: InnoDB и дефрагментация табличных пространств


Хочу сделать несколько заметок по MySQL, чтобы сохранить для себя информацию, а заодно ей поделиться со всеми. Информации в интернете по этим темам, конечно, полно, пусть будет ещё.

Я надеюсь, что все кто использует MySQL как реляционную СУБД для больших и нагруженных баз данных использует движок InnoDB. MyISAM я бы не стал для этого использовать, всё-таки скорость обновлений (из-за блокировки таблицы вместо строки) и отсутствие транзакций не подразумевает использование этого движка для чего-то кроме мелких проектов. Единственный плюс, из-за которого для системы электронного документооборота «Визирь» я использовал базу данных на движке MyISAM — это полнотекстовый поиск, в InnoDB он штатно не был предусмотрен.

Для перевода таблиц на движок InnoDB можно выполнить команду (но перед этим лучше прочитать статью целиком):

ALTER TABLE tablename​ ENGINE = InnoDB; Продолжить чтение "MySQL: InnoDB и дефрагментация табличных пространств"