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: Бэкап базы данных и его сжатие


Продолжу описывать конкретные ситуации, с которыми доводилось сталкиваться при работе с MySQL, и эта статья про резервирование БД на сервере под управлением Windows для проекта Hattrick Portal. Не буду подробно останавливаться на всех существующих инструментах резервирования MySQL, просто вкратце обозначу мои причины выбора утилиты mysqldump:

  • я использую движок MySQL InnoDB (а значит mysqlhotcopy не подходит);
  • она бесплатна и входит в поставку СУБД («горячее» снятие снэпшотов для InnoDB я не видел в бесплатном варианте, да и нужно оно в основном для быстрого переноса данных);
  • я снимаю бэкап всей БД (для отдельных таблиц есть операторы SELECT INTO OUTFILE и LOAD DATA INFILE);
  • может работать при работающей СУБД;
  • отставание бэкапа на день для меня не принципиально (т.е. инкрементные бэкапы не требуются);
  • даёт вполне понятный и разбираемый текстовый файл, который может пригодиться не только для восстановления БД.
Продолжить чтение «MySQL: Бэкап базы данных и его сжатие»

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


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

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

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

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

Статья на Хабр про СЭД «Визирь»


Написал на Хабр статью про свою систему электронного документооборота «Визирь» в честь 10-летнего юбилея завершения разработки системы (она, конечно, допиливалась и в 2010 году, но в основном только обвес — инструкции, инсталляционные скрипты и т.п.). Посвящена эта статья не сколько рассказу о самой системе и её возможностям (для этого есть сайт vizier.su), а, в основном, истории создания и объяснению причин, почему система получилась такой, какой она получилась. Продолжить чтение «Статья на Хабр про СЭД «Визирь»»