It Hints
Search
Close this search box.

Всем при­вет — на днях у меня про­изо­шла непри­ят­ная вещь. Во вре­мя про­це­ду­ры уве­ли­че­ния раз­ме­ра одно­го тома на сер­ве­ре, за счёт умень­ше­ния дру­го­го, что то пошло не так и сер­вер упал. Не буду вда­вать­ся в подроб­но­сти что имен­но пошло не так, т.к. ста­тья не про это, но поверь­те — я попро­бо­вал всё воз­мож­ное для реани­ма­ции сер­ве­ра, но вос­ста­но­вить рабо­то­спо­соб­ность сер­ве­ра мне так и не удалось.

Есть хоро­шая новость — у меня по поне­дель­ни­кам авто­ма­ти­че­ски созда­ют­ся бека­пы. И если на мно­гих сай­тах за неде­лю ниче­го не поме­ня­лось, то вот на одном про­ек­те, над кото­рым я рабо­таю осо­бен­но упор­но, за неде­лю было сде­ла­но очень мно­го, так мно­го что бекап недель­ной дав­но­сти меня не устра­и­вал. Я загру­зил­ся с Линук­сов­ско­го LiveUSB на кото­ром была R‑Studio и с помо­щью этой про­грам­мы вос­ста­но­вил нуж­ные мне фай­лы, а имен­но сами фай­лы сай­та и фай­лы MySQL базы это­го сай­та. И если с фай­ла­ми сай­та всё понят­но — после вос­ста­нов­ле­ния сер­ве­ра из бека­па, я про­сто заме­нил фай­лы сай­та новы­ми фай­ла­ми, а вот с базой не всё так про­сто — если заме­нить ibd и frm фай­лы, то MySQL про­сто валит­ся в ошиб­ку и не стартует.

Приступаем к восстановлению.

Нам пона­до­бит­ся про­грам­ма DBRECOVER for MySQL ска­чать ее мож­но здесь. Рас­па­ко­вы­ва­ем про­грам­му в любую пап­ку и запус­ка­ем start_dbrecover_windows.bat

После запус­ка про­грам­мы у вас откро­ет­ся вот такое окно, здесь мы про­сто нажи­ма­ем Next
Здесь мы выби­ра­ем вашу вер­сию MySQL, у меня вер­сия 5.7. Выби­ра­ем и нажи­ма­ем Next
Здесь мож­но загру­зить фай­лы пакет­но, но у меня поче­му то после загруз­ки фай­лов пакет­но, при ана­ли­зе выда­ва­ло ошиб­ку, поэто­му это окно про­сто закры­ва­ем кре­сти­ком.
Далее мы нажи­ма­ем на меню Start и выби­ра­ем ibd. Каж­дый IBD это файл это таб­ли­ца вашей базы дан­ных — имен­но там хра­нят­ся данные.
Выби­ра­ем ibd файл и нажи­ма­ем Открыть
Как види­те, сле­ва у нас появил­ся ibd файл, нажи­ма­ем на нём пра­вую кноп­ку мыши и нажи­ма­ем Scan
После того как про­изо­шло ска­ни­ро­ва­ние у нас появят­ся запи­си page — на неко­то­рых ibd фай­лов такая запись одна, на неко­то­рых несколь­ко. В дан­ном слу­чае видим что их 5.

Для того что­бы “выта­щить” дан­ные из этих page запи­сей нам нуж­но знать струк­ту­ру таб­ли­цы. Она как раз хра­нит­ся в frm файлах

Теперь нажи­ма­ем на меню Start и выби­ра­ем Add frm
Выби­ра­ем этот же frm файл, что ibd. То есть к при­ме­ру к wp_posts.ibd мы выби­ра­ем wp_posts.frm и нажи­ма­ем Открыть
Так же видим что сле­ва в сек­ции FRM у нас появил­ся frm файл, нажи­ма­ем на нём пра­вую кноп­ку мыши и нажи­ма­ем View
Перед нами появ­ля­ет­ся SQL запрос, кото­рый мы долж­ны выде­лить мыш­кой и скопировать.
Выде­ля­ем мыш­кой запрос, нажи­ма­ем пра­вую кноп­ку мыши и копи­ру­ем его в буфер выби­рая Copy
Теперь мы долж­ны вста­вить этот запрос в первую запись page, для это­го нажи­ма­ем на запи­си page пра­вую кноп­ку мыши и нажи­ма­ем Create table SQL
Появит­ся окно для вво­да SQL запро­сов, на сво­бод­ном поле нажи­ма­ем пра­вую кноп­ку мыши и выби­ра­ем Paste
Выби­рай­те вашу вер­сию базы (Version) и нажи­май­те OK
И О чудо! Перед нами появ­ля­ет­ся таб­ли­ца. Нажи­ма­ем Export to file
Экс­порт таб­ли­цы завершён
Здесь мы можем нажать на наш файл и мы про­ва­лим­ся в пап­ку куда он экспортировался
Може­те открыть полу­чен­ный файл и убе­дить­ся что все дан­ные на месте.

Про­де­лы­ва­ем дан­ную опе­ра­цию с каж­дым ibd фай­лом, в резуль­та­те чего полу­чим вот такие фай­лы в кото­рых содер­жат­ся запро­сы, кото­рые мы можем выпол­нить через PHP MyAdmin в зара­нее заго­тов­лен­ную пустую базу.

Вы спро­си­те
- У меня к каж­до­му ibd фай­лу, фор­ми­ру­ет­ся по несколь­ко page запи­сей, что делать с ними ?

У меня тоже после выпо­ле­ния “Scan” к ibd фай­лам фор­ми­ро­ва­лось по несколь­ку page запи­сей, я в каж­дую page запись встав­лял запрос и сохра­нял полу­чен­ный резуль­тат — но этот резуль­тат не при­го­дил­ся, т.к. там фор­ми­ро­вал­ся непо­нят­ный мусор. Так что совет — про­сто смот­ри­те что сфор­ми­ро­ва­лось. Если это похо­же на нор­маль­ную запись то это то что нуж­но и экс­пор­ти­ру­ем её, а если там непо­нят­но что — такую таб­ли­цу мож­но не экспортировать.

Вы спро­си­те
- А как я отли­чу непо­нят­но что от нор­маль­ной таблицы ?

Вот так выгля­дит нор­маль­ная таб­ли­ца ‑всё струк­ту­ри­ро­ва­но, ID име­ют нор­маль­ный вид, если есть поля с дата­ми то они име­ют вид даты — в общем ниче­го необыч­но­го не видно.
Вот так выгля­дит непо­нят­но что. В датах непо­нят­но что, какие то непо­нят­ные ID, вме­сто тек­ста вооб­ще кракозябры.

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

Резерв­ное копи­ро­ва­ние это наше всё

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

Facebook
Twitter
Email
VK
WhatsApp
Telegram