Сломалась БД, помогите найтипричину

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

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

Ответить
Quasar
Сообщения: 61
Зарегистрирован: 23 дек 2005, 10:26

Сломалась БД, помогите найтипричину

Сообщение Quasar » 03 окт 2007, 15:45

Здравствуйте!

FB 2.0.1. Размер 1,5Г

Проблема появилась давно, но была не критичной. У меня на БД настроен автоматический ежечасный инкрементальный бэкап по определенной схеме. Иногда после бэкапа не исчезал файл .delta, что приводило к тому, что последующие бэкапы не делались. Но этот файл через какое-то вермя (каждый раз по разному) удалялся, и всё работало. Теперь этот файл не удалялся уже 3 дня. Я попробовал команду nbackup -N, но она пишет:

PROBLEM ON "end backup commit"
database file appears corrupt()
-bad checksum
-checksum error on database page 180388
SQLCODE:-902
Failure: Database error

Я решил на всякий случай сделать обычный гбаковский бэкап, потом его отресторил, неотресторилось, ошибки при создании индексов. Но самое главное поесле этого база перестала работать, пропали данные за 2 дня.

Ща пишу в спешке, тока что всё это обнаружил, побежал с файлом db_repair обратно на предприятие. Плохо то, что БД нужна круглосуточно, и вопрос надо решать быстро.

Посоветуйте, пожалуйста, как решить проблему.

Спасибо.

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

Сообщение kdv » 03 окт 2007, 21:47


Quasar
Сообщения: 61
Зарегистрирован: 23 дек 2005, 10:26

Сообщение Quasar » 03 окт 2007, 22:23

kdv писал(а):www.ibase.ru/dbrepair.htm
Читал, делал, помогло, но не полностью. В итоге руками восстанавливал целостность БД. В итоге восстановил все индексы, но БД опять отказалась работать, обнаружил, что значения генераторов меньше, чем максимальные значения первичных ключей (обновления генераторов остались в файле .delta). Запарился восстанавливать. Но в итоге вроде заработало Но потеряно немало информации.

Очень хочу исключить возможность подобного развития событий в будущем. Почему nbackup не сразу убирает файл .delta? Как избежать этого? Аппаратная ошибка маловероятна, сервак - современный стоечный HP на Win2003. Что могло привести к повреждению страниц? Gfix показал, что аж 85 странциц испорчено. Сделал кстати, IBfirstAid diag. Если это может помочь определить причину проблем, могу кинуть лог.

Во всём есть свои плюсы. Прибавил в опыте, щас хоть научился на автомате работать с gbak-ом и gfix-ом и nbackup-ом, да в БД наковырялся вдоволь. :) Тем не менее не хотелось бы наступать на эти грабли опять. А причина так мне и не ясна. Пока убрал резервное копирование nbackup-ом и сделал gbak-ом, но обидно делать шаг в прошлое.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 04 окт 2007, 00:17

Если дельта не была удалена, значит бекап не был завершён корректно. Я не верю, что не было никаких сообщений ни на консоли, ни в логе.

Quasar
Сообщения: 61
Зарегистрирован: 23 дек 2005, 10:26

Сообщение Quasar » 04 окт 2007, 07:32

hvlad писал(а):Если дельта не была удалена, значит бекап не был завершён корректно. Я не верю, что не было никаких сообщений ни на консоли, ни в логе.
После создания последнего бэкапа, в логе появилось сообщение:
SERV_UBE Mon Oct 01 16:02:21 2007
XNET error (xnet:2043) connection lost: another side is dead
После этого дельта не удалялась.

Раньше тоже бывало, что дельта не удалялась, иногда по нескольку часов, а потом благополучно исчезала. У меня сохранились логи бекапа, щас буду их просматривать, искать закономерности между ошибками резервного копирования и логами сервера.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 04 окт 2007, 11:23

Event'ы используются ? По локальному протоколу ?

Quasar
Сообщения: 61
Зарегистрирован: 23 дек 2005, 10:26

Сообщение Quasar » 04 окт 2007, 11:31

Бывало и такое, что в логе пусто, nbackup возвращает ноль, при этом сам файл бэкапа создается, но дельта остается. Через несколько часов сама же убиралась.

Что теоретически может привести к невозможности совмещения дельты с базой? Что мешает nbackup-у сделать ALTER DATABASE END BACKUP? Может какая-то блокировка? Имеет ли здесь значение, что я использую классик сервер?
Видимо эта причина впоследствии исчезала и совмещение таки происходило.

Quasar
Сообщения: 61
Зарегистрирован: 23 дек 2005, 10:26

Сообщение Quasar » 04 окт 2007, 11:31

hvlad писал(а):Event'ы используются ? По локальному протоколу ?
нет

Quasar
Сообщения: 61
Зарегистрирован: 23 дек 2005, 10:26

Сообщение Quasar » 10 окт 2007, 08:46

Quasar писал(а): У меня сохранились логи бекапа, щас буду их просматривать, искать закономерности между ошибками резервного копирования и логами сервера.
Никаких закономерносетй не нашел.

Falex
Сообщения: 2
Зарегистрирован: 26 июн 2008, 12:52

Сообщение Falex » 18 авг 2008, 21:58

Как вообще такая ошибка лечится, приводимая автором в 1 посте??

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

Сообщение kdv » 19 авг 2008, 09:11

Как вообще такая ошибка лечится, приводимая автором в 1 посте??
использованием версии ФБ, в котором эта ошибка исправлена.

Falex
Сообщения: 2
Зарегистрирован: 26 июн 2008, 12:52

Сообщение Falex » 19 авг 2008, 11:05

Пользуюсь InterBase. В какой версии эта ошибка исправлена, т.к. даже базу не могу подцепить, например, IBExpert'ом.

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

Сообщение kdv » 19 авг 2008, 11:09

Пользуюсь InterBase.
Вы бредите. В первом посте этого топика указывается проблема с nbackup, которого в InterBase нет и не будет (в 2007 эта фича называется Online Dump, но такой проблемы там нет).

на тему checksum error Вам надо идти сюда:
www.ibase.ru/dbrepair.htm

Ответить