Как восстановить только одну таблицу с бекапа?

Ремонт и восстановление баз данных InterBase, Firebird, Yaffil

Модераторы: kdv, Alexey Kovyazin

Ответить
Dedal
Сообщения: 26
Зарегистрирован: 11 янв 2006, 13:35

Как восстановить только одну таблицу с бекапа?

Сообщение Dedal » 05 фев 2013, 11:37

Сломалась таблица. Есть ошибочная страница где должны быть данные (page is of wrong type (expected 5, found 0) ).
Известно что на ошибочной странице 400 записей с primary key между 3350 по 3750.
1. Как восстановить только одну таблицу из бекапа (restore всей базы долго)?
2. Как заставить базу забыть про ошибочную страницу и записи в ней?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Как восстановить только одну таблицу с бекапа?

Сообщение Dimitry Sibiryakov » 05 фев 2013, 15:40

IBBackupSurgeon
IBSurgeon

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Как восстановить только одну таблицу с бекапа?

Сообщение kdv » 05 фев 2013, 18:42

1. восстановить бэкап в другую базу, перелить нужную таблицу в исходную базу
2. никак. базу нужно починить, сделать ей бэкап/рестор, работать дальше.

что значит "рестор всей базы долго? Какой размер базы (бэкапа) и долго - это сколько?

Dedal
Сообщения: 26
Зарегистрирован: 11 янв 2006, 13:35

Re: Как восстановить только одну таблицу с бекапа?

Сообщение Dedal » 05 фев 2013, 22:32

размер базs 12 ГБ. железо не самое новое.
бекап около 30-40 минут.
рестор не делал около полтора года. но думаю 2 часа надо на restore.

Хотел починить базу без backup/restore, чтоб без перерывов в работе.
Намного быстрее перелить 400 записей, вместо полного backup/restore.

1. backup сделал на другой машине без востановления индексов. записи достал.
2. если сделать gfix -mend и не делать backup/restore, а просто залить в таблицу утерянные записи? Или так нельзя?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Как восстановить только одну таблицу с бекапа?

Сообщение kdv » 06 фев 2013, 03:03

достали записи - хорошо. Но влить их в битую базу - увы. Если gfix починит, и при бэкапе (с опцией -g) не будет проблем, ну, на свой страх и риск можете продолжать работать. Но вообще битой базе после любой починки положено backup/restore делать. Иначе где потом что еще поломается или сервер заткнется - неизвестно.

если у вас бэкап идет 30-40 минут, то рестор будет 3-5 часов. Особенно если вы неправильно бэкап-рестор делаете
http://www.ibase.ru/devinfo/backupspeed.htm
http://www.ibase.ru/devinfo/backupspeed2.htm
http://www.ibase.ru/devinfo/restorespeed.htm

обратите внимание на время бэкапа и рестора, и на железо, которое используется в тесте.

И ПК на эту таблицу у вас тоже кривой, его перестраивать надо обязательно, раз вы b/r делать не хотите. А вот перестроится ли он - вопрос.

Dedal
Сообщения: 26
Зарегистрирован: 11 янв 2006, 13:35

Re: Как восстановить только одну таблицу с бекапа?

Сообщение Dedal » 06 фев 2013, 10:54

Большое спасибо за советЬІ!

После gfix -mend, теперь gfix -v -full в лог пишет:
Page 2759095 is an orphan
Ночной backup прошол нормально.

pk - попробую пересоздать для єксперимента.
Потом сделаю backup/restore.

Есть еще один вопрос.
Здесь http://www.ibase.ru/devinfo/gbak.htm ничего не сказано о скорости backup/restore в Linux через Services API,
а здесь http://www.ibase.ru/devinfo/restorespeed.htm написано что
локальный протокол на Linux работает как embedded, и равнозначен Services API

ВЬІходит нет смЬІсла в ключе -se в Linux или все таки стоит его использовать?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Как восстановить только одну таблицу с бекапа?

Сообщение Dimitry Sibiryakov » 06 фев 2013, 15:45

Локальный протокол использовать на Линухе - чревато боком с правами пользователя. Потому не рекомендуется.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Как восстановить только одну таблицу с бекапа?

Сообщение kdv » 06 фев 2013, 16:06

Выходит нет смысла в ключе -se в Linux или все таки стоит его использовать?
как сказал DS, зависит от прав доступа. Без -se и без указания имени хоста (даже localhost) работать будет как embedded, то есть делать бэкап будет фактически gbak, с его правами доступа.
По скорости - да, на линуксе embedded равнозначно -se.

Ответить