Сломалась БД, помогите найтипричину
Модераторы: kdv, Alexey Kovyazin
Сломалась БД, помогите найтипричину
Здравствуйте!
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 обратно на предприятие. Плохо то, что БД нужна круглосуточно, и вопрос надо решать быстро.
Посоветуйте, пожалуйста, как решить проблему.
Спасибо.
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 обратно на предприятие. Плохо то, что БД нужна круглосуточно, и вопрос надо решать быстро.
Посоветуйте, пожалуйста, как решить проблему.
Спасибо.
Читал, делал, помогло, но не полностью. В итоге руками восстанавливал целостность БД. В итоге восстановил все индексы, но БД опять отказалась работать, обнаружил, что значения генераторов меньше, чем максимальные значения первичных ключей (обновления генераторов остались в файле .delta). Запарился восстанавливать. Но в итоге вроде заработало Но потеряно немало информации.kdv писал(а):www.ibase.ru/dbrepair.htm
Очень хочу исключить возможность подобного развития событий в будущем. Почему nbackup не сразу убирает файл .delta? Как избежать этого? Аппаратная ошибка маловероятна, сервак - современный стоечный HP на Win2003. Что могло привести к повреждению страниц? Gfix показал, что аж 85 странциц испорчено. Сделал кстати, IBfirstAid diag. Если это может помочь определить причину проблем, могу кинуть лог.
Во всём есть свои плюсы. Прибавил в опыте, щас хоть научился на автомате работать с gbak-ом и gfix-ом и nbackup-ом, да в БД наковырялся вдоволь. Тем не менее не хотелось бы наступать на эти грабли опять. А причина так мне и не ясна. Пока убрал резервное копирование nbackup-ом и сделал gbak-ом, но обидно делать шаг в прошлое.
После создания последнего бэкапа, в логе появилось сообщение:hvlad писал(а):Если дельта не была удалена, значит бекап не был завершён корректно. Я не верю, что не было никаких сообщений ни на консоли, ни в логе.
SERV_UBE Mon Oct 01 16:02:21 2007
XNET error (xnet:2043) connection lost: another side is dead
После этого дельта не удалялась.
Раньше тоже бывало, что дельта не удалялась, иногда по нескольку часов, а потом благополучно исчезала. У меня сохранились логи бекапа, щас буду их просматривать, искать закономерности между ошибками резервного копирования и логами сервера.
Бывало и такое, что в логе пусто, nbackup возвращает ноль, при этом сам файл бэкапа создается, но дельта остается. Через несколько часов сама же убиралась.
Что теоретически может привести к невозможности совмещения дельты с базой? Что мешает nbackup-у сделать ALTER DATABASE END BACKUP? Может какая-то блокировка? Имеет ли здесь значение, что я использую классик сервер?
Видимо эта причина впоследствии исчезала и совмещение таки происходило.
Что теоретически может привести к невозможности совмещения дельты с базой? Что мешает nbackup-у сделать ALTER DATABASE END BACKUP? Может какая-то блокировка? Имеет ли здесь значение, что я использую классик сервер?
Видимо эта причина впоследствии исчезала и совмещение таки происходило.
Вы бредите. В первом посте этого топика указывается проблема с nbackup, которого в InterBase нет и не будет (в 2007 эта фича называется Online Dump, но такой проблемы там нет).Пользуюсь InterBase.
на тему checksum error Вам надо идти сюда:
www.ibase.ru/dbrepair.htm