SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 15.12.2015 09:43:03

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Восстановлене БД из .frm файлов

Доброго времени суток. Произошла не большая проблема, требуется восстановить удаленные данные из ibdata1. Прописываю в конфиге innodb_force_recovery = 1...6 , или в консоли, в итоге одна и та же ошибка, понять не могу в чем дело.

151214 14:46:24 InnoDB: Page checksum 1580297401, prior-to-4.0.14-form checksum 4268898232
InnoDB: stored checksum 2886167173, prior-to-4.0.14-form stored checksum 2886167173
InnoDB: Page lsn 21 1010950563, low 4 bytes of lsn at page end 1010950563
InnoDB: Page number (if stored to page already) 12,
InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0
InnoDB: Page may be an index page where index id is 4
InnoDB: (index "CLUST_IND" of table "SYS_FIELDS")
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 12.
InnoDB: You may have to recover from a backup.
InnoDB: It is also possible that your operating
InnoDB: system has corrupted its own file cache
InnoDB: and rebooting your computer removes the
InnoDB: error.
InnoDB: If the corrupt page is an index page
InnoDB: you can also try to fix the corruption
InnoDB: by dumping, dropping, and reimporting
InnoDB: the corrupt table. You can use CHECK
InnoDB: TABLE to scan your table for corruption.
InnoDB: See also http://dev.mysql.com/doc/refman/5.5/...-recovery.html
InnoDB: about forcing recovery.
InnoDB: wrong number of columns in SYS_INDEXES record
151214 14:46:24 InnoDB: Waiting for the background threads to start
151214 14:46:25 InnoDB: 1.1.8 started; log sequence number 0
151214 14:46:25 InnoDB: !!! innodb_force_recovery is set to 6 !!!
151214 14:46:25 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
151214 14:46:25 [Note] - '127.0.0.1' resolves to '127.0.0.1';
151214 14:46:25 [Note] Server socket created on IP: '127.0.0.1'.
151214 14:46:25 [Note] Event Scheduler: Loaded 0 events
151214 14:46:25 [Note] \usr\local\mysql-5.5\bin\mysqld.exe: ready for connections.
Version: '5.5.25' socket: '' port: 3306 MySQL Community Server (GPL)

Отредактированно riko5 (15.12.2015 09:49:41)

Неактивен

 

#2 15.12.2015 12:34:10

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Восстановлене БД из .frm файлов

Ошибка есть, но служба при этом запустилась. SELECT из табличек работает? Если да — сделайте резервную копию (mysqldump), пересоздайте хранилище innodb (удалить ibdata* iblogfile*), перезапустите службу и перезалейте резервную копию (под виндоус не уверен, но полагаю, что mysql < dumpfile должен сработать).

Неактивен

 

#3 15.12.2015 12:40:28

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

paulus написал:

Ошибка есть, но служба при этом запустилась. SELECT из табличек работает? Если да — сделайте резервную копию (mysqldump), пересоздайте хранилище innodb (удалить ibdata* iblogfile*), перезапустите службу и перезалейте резервную копию (под виндоус не уверен, но полагаю, что mysql < dumpfile должен сработать).

К сожалению SELECT не работает, пишет что то вроде этого 1033 Incorrect information in file: './site/spravka_stat.frm, в графе пишет "используется"

Неактивен

 

#4 15.12.2015 12:50:49

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Восстановлене БД из .frm файлов

Про графу не понял — в какой графе?

Если ему не нравится frm, то его, возможно, надо восстановить или пересоздать. У Вас есть резервные копии?

Неактивен

 

#5 15.12.2015 12:52:14

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

Как я поглядел по таблице, ее размер 6,7гб, но там не все данные, данных там на 1гб только... Я так понимаю удаленные данные просто весят в этой таблице.

Неактивен

 

#6 15.12.2015 12:53:41

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

paulus написал:

Про графу не понял — в какой графе?

Если ему не нравится frm, то его, возможно, надо восстановить или пересоздать. У Вас есть резервные копии?

Графа таблици, где вместо веса базы пишет "используеться". Бекап таблицы самой есть, но подмена не помогает.

Неактивен

 

#7 15.12.2015 19:57:02

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Восстановлене БД из .frm файлов

Подмена файлика frm? Должна помогать, если версия MySQL не менялась. Не менялась ведь?

Если файлик ibdata побился, то достать все данные, скорее всего, не получится. Кажется, лучшим решением будет восстановить резервную копию, а потом долить сверху те данные, которые удается достать из восстановленной базы.

Неактивен

 

#8 16.12.2015 09:38:32

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

paulus написал:

Подмена файлика frm? Должна помогать, если версия MySQL не менялась. Не менялась ведь?

Если файлик ibdata побился, то достать все данные, скорее всего, не получится. Кажется, лучшим решением будет восстановить резервную копию, а потом долить сверху те данные, которые удается достать из восстановленной базы.

Хм, как раз на винде стоит 5.5, а на centos стоит 5.7, сейчас буду собирать конфиг тогда под 5.7 версию. подменяю файлик frm, и таблица тут же пуста говорит.

Неактивен

 

#9 16.12.2015 11:40:20

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

Хм, все настроил, проверил в таблице 25 мил. записей, как и должно быть, начал сливать дамп в итоге только 13 мил. слилось.
Почему то не видит этих данных.
Ошибки при сливе данных не было.

Отредактированно riko5 (16.12.2015 11:42:43)

Неактивен

 

#10 16.12.2015 11:53:33

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

мб, я не так описал что произошло, или не так сделал.
Дело было так, решил Удалить данные, "Delete from name_table", когда поглядел что не ту таблицу указал, было уже поздно) вместо 25 мил. стало 13мил, как я понимаю данные есть в базе но они весят в воздухе... т.к. размер базы не уменьшился.
Подумал что можно из одно таблицы перенести в другую данные, но увы, не получилось.
mysql> INSERT INTO `site`.`spravka_stat_2` SELECT * FROM `site`.`spravka_stat`;
Query OK, 25295408 rows affected, 65535 warnings (8 min 47.47 sec)
Records: 25295408  Duplicates: 0  Warnings: 12641128

Отредактированно riko5 (16.12.2015 12:14:18)

Неактивен

 

#11 16.12.2015 14:35:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Восстановлене БД из .frm файлов

Все, я понял. База не билась, просто Вы удалили лишние данные. Тогда хорошего прогноза нету. Файлики innodb не уменьшаются, но при этом могли перестроиться деревья, на которых висят строки, и тогда до данных добраться будет сложно. Из файликов добыть данные — достаточно трудоемкий процесс, и у него нет никаких гарантий.

Отправная точка — видимо, innodb recovery tool. Основная идея — найти странички, которые содержат данные, но помечены удаленными, и достать из них данные.

Неактивен

 

#12 16.12.2015 14:50:04

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

paulus написал:

Все, я понял. База не билась, просто Вы удалили лишние данные. Тогда хорошего прогноза нету. Файлики innodb не уменьшаются, но при этом могли перестроиться деревья, на которых висят строки, и тогда до данных добраться будет сложно. Из файликов добыть данные — достаточно трудоемкий процесс, и у него нет никаких гарантий.

Отправная точка — видимо, innodb recovery tool. Основная идея — найти странички, которые содержат данные, но помечены удаленными, и достать из них данные.

Я так понимаю программы под windows нет, только под линукс

Неактивен

 

#13 17.12.2015 09:36:02

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

Вроде как получилось достать данные без innodb tool, но не пойму как теперь решить проблему с датой, даты все сбиты... и они в формате таком.  '1899-00-É5 É5:É5:É5'

Неактивен

 

#14 17.12.2015 16:02:30

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

не подскажете как обновить данные, а то что-то не получается, перенести часть дат,

update spravka_stat_3 set `crdate` = (select id,`crdate` FROM spravka_stat) WHERE id = id

Неактивен

 

#15 18.12.2015 09:21:28

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

Re: Восстановлене БД из .frm файлов

update spravka_stat_3 JOIN spravka_stat USING (id) SET spravka_stat_3.crdate = spravka_stat.crdate;

Неактивен

 

#16 18.12.2015 15:46:16

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

Как достал удаленные данные, создал таблицу MYSAM, при этом автоинкремен убрал, и через INSERT INTO данные перенес из оригинальной таблицы в другу, при этом почему то даты уже шли в формате. тип у дат выставлен  timestamp

Неактивен

 

#17 18.12.2015 15:47:11

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

rgbeast написал:

update spravka_stat_3 JOIN spravka_stat USING (id) SET spravka_stat_3.crdate = spravka_stat.crdate;

Благдарю, сейчас попробую

Неактивен

 

#18 21.12.2015 09:41:59

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

Никто не подскажет ?

Неактивен

 

#19 21.12.2015 18:44:28

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Восстановлене БД из .frm файлов

А не подошел запрос, который писал rgbeast? Или какая сейчас стоит проблема?

Неактивен

 

#20 22.12.2015 09:16:38

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

paulus написал:

А не подошел запрос, который писал rgbeast? Или какая сейчас стоит проблема?

Да проблема сейчас в другом, даты в не правильном формате перенеслись.
Таблица создана правильно, только сменен тип таблицы и тип поля у даты с timestamp на varchar, почему то и в бд они не в том формате лежат, почему то вместо даты вообще не те стоят.
По умолчанию у типа данных выставлено     CURRENT_TIMESTAMP   
Сейчас поглядел в оригинальной таблице через консоль, даты и там не правильные стоят...
Возможна ли данная ошибки из-за time zone ?

Отредактированно riko5 (22.12.2015 14:19:07)

Неактивен

 

#21 22.12.2015 15:35:47

riko5
Участник
Зарегистрирован: 15.12.2015
Сообщений: 17

Re: Восстановлене БД из .frm файлов

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

Неактивен

 

#22 22.12.2015 17:22:24

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Восстановлене БД из .frm файлов

Выберите те поля, по которым хотите избавиться от «задвоения» и сгруппируйте по ним?

Неактивен

 

Board footer

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