SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.08.2008 03:35:50

voodoo1
Участник
Зарегистрирован: 07.08.2008
Сообщений: 10

Восстановление данных

Помогите восстановить структуру. От базы остались только файлы *.frm и файл db.opt. Возможно ли восстановить структуру таблиц?

Неактивен

 

#2 07.08.2008 18:20:38

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Восстановление данных

Попробуйте сделать так. Скопируйте .frm -файлы в базу test, затем для каждого frm-файла cоздайте MYI и MYD-файлы, их возьмите из любой пустой таблицы
Скажем у Вас есть users.frm, делаете

CREATE TABLE u (id int PRIMARY KEY);

затем копируете
cp u.MYI users.MYI
cp u.MYD users.MYD
(не забудьте правильные права файлам)
chown mysq.mysql users.*
Затем в MySQL выполняете
SHOW CREATE TABLE users;

Неактивен

 

#3 09.08.2008 02:22:27

voodoo1
Участник
Зарегистрирован: 07.08.2008
Сообщений: 10

Re: Восстановление данных

Спасибо, но это не помогло, и думаю вот почему:
Оказалось что я использовал таблицы InnoDB. Для них файл с данными MySQL создает в отдельной папке.
Этот файл с данными был потерян, но остались файлы *.frm/
Что ещё можно сделать?

Неактивен

 

#4 09.08.2008 09:21:31

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Восстановление данных

А что вообще говорится в ответ на следующие запросы?

USE имя_бд
SHOW TABLES
SHOW CREATE TABLE какая_нибудь_таблица

?

Попробуйте
mysqldump имя_базы --no-data > имя_файла.sql

(хотя не факт, что поможет; никогда не пробовал)

Неактивен

 

#5 09.08.2008 14:42:14

voodoo1
Участник
Зарегистрирован: 07.08.2008
Сообщений: 10

Re: Восстановление данных

mysql> use timeismoney
Database changed
mysql> SHOW TABLES;
+-----------------------+
| Tables_in_timeismoney |
+-----------------------+
| acct                  |
| adminsystem           |
| archive               |
| calculation           |
| communication         |
| comuser               |
| custom                |
| history               |
| serv                  |
| servuser              |
| timing                |
| usersystem            |
+-----------------------+
12 rows in set (0.22 sec)

mysql> SHOW CREATE TABLE timing;
ERROR 1146 (42S02): Table 'timeismoney.timing' doesn't exist
mysql> exit
Bye

C:\Program Files\MySQL\MySQL Server 5.1\bin>mysqldump timeismoney --no-data > 12.sql
mysqldump: Got error: 1146: Table 'timeismoney.acct' doesn't exist when using
LOCK TABLES

Неактивен

 

#6 09.08.2008 14:43:30

voodoo1
Участник
Зарегистрирован: 07.08.2008
Сообщений: 10

Re: Восстановление данных

Вот нашёл описание формата файла *.frm
http://forge.mysql.com/wiki/MySQL_Inter … le_Formats
Попробую что-нибудь из этого извлечь.

Неактивен

 

#7 09.08.2008 14:59:10

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Восстановление данных

Можно попробовать в frm-файле заменить InnoDB на MyISAM hex-редактором и затем попробовать то, что я описал выше. Кроме того, можно попробовать создать InnoDB-таблицу с тем же именем, а затем заменить frm-файл на существующий.

Неактивен

 

#8 09.08.2008 17:47:06

voodoo1
Участник
Зарегистрирован: 07.08.2008
Сообщений: 10

Re: Восстановление данных

Всё это не сработало, новая таблица не заменилась старой.

Неактивен

 

#9 09.08.2008 17:48:50

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Восстановление данных

voodoo1 написал:

Всё это не сработало, новая таблица не заменилась старой.

После замены frm-файла необходимо перезапустить mysql сервер, так как файлы кэшируются. Лучше всего остановить mysql, заменить файл и запустить mysql

Неактивен

 

#10 09.08.2008 19:12:50

voodoo1
Участник
Зарегистрирован: 07.08.2008
Сообщений: 10

Re: Восстановление данных

результат такой же

Неактивен

 

#11 09.08.2008 19:13:43

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Восстановление данных

выложите на форум один из frm-файлов, если это не тайна

Неактивен

 

#12 09.08.2008 19:58:42

voodoo1
Участник
Зарегистрирован: 07.08.2008
Сообщений: 10

Re: Восстановление данных

а как это сделать?

Неактивен

 

#13 09.08.2008 20:09:23

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Восстановление данных

В полной форме ответа на форуме (ссылка "Ответить") существует возможность прикрепить файл.

Неактивен

 

#14 09.08.2008 20:12:02

voodoo1
Участник
Зарегистрирован: 07.08.2008
Сообщений: 10

Re: Восстановление данных

frm-файл

Неактивен

 

#15 09.08.2008 20:16:52

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Восстановление данных

файл не прикрепился, попробуйте еще раз, если не получится, отправьте по email на sakila собака sqlinfo.ru

Неактивен

 

#16 09.08.2008 20:31:55

voodoo1
Участник
Зарегистрирован: 07.08.2008
Сообщений: 10

Re: Восстановление данных

frm файл


Прикрепленные файлы:
Attachment Icon serv.frm, Размер: 8,885 байт, Скачано: 1,681

Неактивен

 

#17 09.08.2008 20:39:31

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Восстановление данных

Вот структура Вашей таблицы

CREATE TABLE `s` (
  `id_serv` int(10) unsigned NOT NULL auto_increment COMMENT 'id услуги',
  `higherid_serv` int(10) unsigned NOT NULL default '0' COMMENT 'id вышестоящей услуги',
  `name_serv` varchar(100) NOT NULL COMMENT 'наименование услуги',
  `order_serv` int(10) unsigned NOT NULL COMMENT 'порядок следования записей внутри вышестоящей записи',
  PRIMARY KEY  (`id_serv`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='справочник-дерево услуг'



Получена следующим путем
1.
mysql> use test
mysql> create table s (id int primary key) ENGINE=Innodb;
2. service mysqld stop
3. cp serv.frm /var/lib/mysql/test/s.frm
4. serice mysqld start
5. mysql> SHOW CREATE TABLE s

Неактивен

 

#18 09.08.2008 20:54:05

voodoo1
Участник
Зарегистрирован: 07.08.2008
Сообщений: 10

Re: Восстановление данных

Да действительно, получилось.
Видимо я посмотрел не ту базу.
Премного благодарен!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson