The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Срочно нужна помощь с MySQL"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [ Отслеживать ]

"Срочно нужна помощь с MySQL"  +/
Сообщение от Rom1 (ok) on 05-Июл-09, 15:14 
Развалился раздел, fsck провели восстановление. На этом разделе лежали фалй БД MySQL.
Сейчас все фалы выглядят как #53748 и т.п., т.е. как айноды. На вид все файлы целые, но имеют дурацкие имена.

Есть резервные копии, но старые.

Как восстановить первоначальные имена файлов БД (.MYD, .frm, .MYI)?
Какова структура этих файлов? Может по содержимому можно их как-то идентифицировать?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Срочно нужна помощь с MySQL"  +/
Сообщение от Michael (??) on 05-Июл-09, 16:05 

>Как восстановить первоначальные имена файлов БД (.MYD, .frm, .MYI)?
>Какова структура этих файлов? Может по содержимому можно их как-то идентифицировать?

myd - данные, frm - структура, myi - индекс

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Срочно нужна помощь с MySQL"  +/
Сообщение от Rom1 (ok) on 05-Июл-09, 17:19 
>
>>Как восстановить первоначальные имена файлов БД (.MYD, .frm, .MYI)?
>>Какова структура этих файлов? Может по содержимому можно их как-то идентифицировать?
>
>myd - данные, frm - структура, myi - индекс

Да я в курсе, боль мень описание про .frm нашел http://forge.mysql.com/wiki/MySQL_Internals_File_Formats
Из груды файлов выделить их смогу, названия могу дать глядя на структуру старых бекапов, сравнивая и понимая что это должно называться "вот так-то".

А чего делать с .MYD и .MYI ? Какая у них структура? Есть ли какой идетификатор в них, по которому можно четко найти их .frm?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Срочно нужна помощь с MySQL"  +/
Сообщение от Michael (??) on 05-Июл-09, 17:36 

>А чего делать с .MYD и .MYI ? Какая у них структура?
>Есть ли какой идетификатор в них, по которому можно четко найти
>их .frm?

этот вопрос лучше задать в коммунити mysql

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Срочно нужна помощь с MySQL"  +/
Сообщение от renton email(??) on 06-Июл-09, 01:44 
>А чего делать с .MYD и .MYI ? Какая у них структура?
>Есть ли какой идетификатор в них, по которому можно четко найти
>их .frm?

.MYD и .MYI легко можно отличить командой file:
# file session.MYD
session.MYD: data

# file session.MYI
session.MYI: MySQL MISAM compressed data file Version 1

Содержимое .MYD можно посмотреть less, искать по нему grep'ом. MYI уже потом можно будет восстановить из .FRM это просто индексы.

Хотя задача не из легких у вас.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Срочно нужна помощь с MySQL"  +/
Сообщение от Rom1 (ok) on 06-Июл-09, 12:47 
>[оверквотинг удален]
># file session.MYD
>session.MYD: data
>
># file session.MYI
>session.MYI: MySQL MISAM compressed data file Version 1
>
>Содержимое .MYD можно посмотреть less, искать по нему grep'ом. MYI уже потом
>можно будет восстановить из .FRM это просто индексы.
>
>Хотя задача не из легких у вас.

Ну где же вы раньше были!
'file' действительно грамотно определяет тип файла!
С этим можно восстановить все до копеечки. А я голову ломал.

server:/3/mysql# file \#807055
#807055: MySQL table definition file Version 10

server:/3/mysql# file \#807056
#807056: DBase 3 data file (2101870921 records)

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Срочно нужна помощь с MySQL"  +/
Сообщение от Rom1 (ok) on 06-Июл-09, 13:04 
>Пошел писать скрипт-переименовалку...

Ну переименовал... А как определить принадлежность этих файлов друг-другу?
Что за дурацкий формат, что в нем не предусмотрена информация об имени таблицы.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Срочно нужна помощь с MySQL"  +/
Сообщение от Rom1 (ok) on 06-Июл-09, 15:26 
Вот скрипт:
#!/bin/sh

SRC_DIR=/all-files
DST_DIR=/mysql-files

find -P $SRC_DIR -type f -group mysql | while read ORIG_FILE_NAME
do
    FILE_TYPE=`file $ORIG_FILE_NAME`
    echo $FILE_TYPE
    FILE_EXT=""
    if [ "`echo $FILE_TYPE | grep 'MySQL table definition file Version'`" != "" ]; then FILE_EXT="frm"; fi
    if [ "`echo $FILE_TYPE | grep 'DBase 3 data file'`" != "" ]; then FILE_EXT="MYD"; fi
    if [ "`echo $FILE_TYPE | grep 'MySQL MISAM compressed data file Version'`" != "" ]; then FILE_EXT="MYI"; fi
    if [ "$FILE_EXT" != "" ]
    then
        FILE_INODE=`ls -i $ORIG_FILE_NAME | awk '{print $1}'`
        cp -f $ORIG_FILE_NAME $DST_DIR/$FILE_INODE.$FILE_EXT
    fi
done

Ну как же сопоставить фалы .MYD .MYI .frm друг-другу?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Срочно нужна помощь с MySQL"  +/
Сообщение от angra (ok) on 07-Июл-09, 07:35 
На индексы лучше сразу забить ибо их проще построить заново на основе информации из .frm. А вот сопоставление .frm и .MYD я бы попробовал полным перебором. Создаем отдельную пустую БД, копируем(cp -a) туда произвольный .frm файл, даем ему какое-либо имя. По очереди копируем туда все .MYD файлы, давая им аналогичное имя и делая REPAIR TABLE имя_таблицы USE_FRM; до тех пор пока не избавимся от Found wrong stored record at 0. Для верности можно после этого сделать CHECK/ANALYZE TABLE. Полученную пару откладываем в сторону и переходим к следующей. В результате мы получим все пары frm+MYD, остается только на основе данных SHOW CREATE TABLE и памяти/записей/кода дать им правильные имена.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Срочно нужна помощь с MySQL"  +/
Сообщение от Rom1 (ok) on 07-Июл-09, 09:46 
Спасибо, видимо именно так необходимо восстанавливать эти базы.

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

Ну да ладно, я базы все восстановил. Всем спасибо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Срочно нужна помощь с MySQL"  +/
Сообщение от angra (ok) on 07-Июл-09, 13:16 
Зачем название таблицы еще раз записывать внутри файла? Чтобы иметь лишний геморрой с атомарностью RENAME TABLE, чувствительностью к регистру итд?
Ситуация, которая возникла у вас, абсурдна и попадет под ССЗБ.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру